Facebook liep tegen problemen aan bij het integreren van de post-zoekfunctie in Graph Search. De site gebruikt een combinatie van flashgeheugen en werkgeheugen om de miljard dagelijkse posts en in honderden terabytes aan data te indexeren en snel doorzoekbaar te maken.
Facebook maakte het begin deze oktober mogelijk om posts te doorzoeken via Graph Search. In een blogpost legt Ashoat Tevosyan van het zoekteam van Facebook uit dat het project twee jaar in beslag nam en dat het bedrijf tegen complexe problemen aanliep: "Het was een flinke uitdaging aangezien er elke dag een miljard posts worden toegevoegd, de index al meer dan een biljoen posts bevat en dit honderden terabytes aan data betreft."
Tevosyan beschrijft dat Facebook 70 verschillende soorten data onderscheidt en indexeert zoals tijd, locatie en tags. Facebook vertrouwt hiervoor op MySQL en slaat de data op in een HBAse-cluster. Met behulp van Hadoop Map/Reduce wordt de grote hoeveelheid ruwe data parallel omgezet naar een zoekindex, zodat Facebooks zoekinfrastructuur Unicorn ermee aan de slag kan.
Telkens als een gebruiker een nieuwe post maakt, een bestaande post aanpast of een post verwijdert, vindt er een aanpassing bij de MySQL-database plaats om de index te updaten, waarbij Facebook via verschillende technieken code-duplicatie probeert te voorkomen. Voor de komst van de postzoekfunctie in Graph Search konden de zoekindexes van Facebook geheel vanuit werkgeheugen geserveerd worden. De index van de nieuwe zoekfunctie zou echter 700 terabyte aan ram in beslag nemen. Het grootste deel van de index is daarom in flashgeheugen opgeslagen. Om de zoekprestaties op peil te houden worden de meest opgevraagde datastructuren wel in ram geplaatst.
Om de gebruiker relevante zoekresultaten te tonen maakt Facebook gebruik van query rewriting, een soort voorselectie alvorens de daadwerkelijke zoekactie wordt uitgevoerd. Daarnaast is er dynamic result scoring voor het rangschikken van resultaten achteraf op basis van informatie in de documentdata. Volgens Tevosyan is het project begonnen als Hackathon-project en is het meeste werk het afgelopen jaar door 'enkele dozijnen' ontwikkelaars verricht.