През септември Facebook пусна нова функционалност на своя Graph Search продукт, който позволява на потребителите да откриват постове, коментари, чекирания и ъпдейти на статуси. Може би се чудите защо функционалностите не бяха налице, когато компанията показа своя Graph Search на света. Отговорът ще ви изненада съвсем: било е прекалено сложно.
Ashoat Tevosyan, Facebook инженер, който работи като част от екипа за качество на търсенето и ранкинга, написа пост на блога на компанията и даде информация от първа ръка през какво е минал екипът, за да създаде търсене в постове. Той описва функционалността като нещо, което се е разработвало в продължение на две години и изисква Facebook да намери начин да класифицира и организира 1 милиард нови поста, които се добавят всеки ден. Нещо повече, индексът на социалната мрежа вече съдържа 1 трилион поста, които възлизат на стотици терабайти данни.
Tevosyan прави хроника на приключението, давайки информация как Facebook събира данните, създава и обновява своя индекс, как го обслужва и как обработва ранкването на резултатите. Интересно обаче, концепцията зад търсенето в постове, се появява в резултат на един от вътрешните хакатон проекти на Facebook. Tevosyan започва като стажант в компанията и той прекарва една нощ, работейки върху начин как той и приятелите му да могат да откриват стари постове, които са публикували в социалната мрежа. Ето така той създава последната функционалност на мистериозния Graph Search.
Едно от първите неща, които компанията е трябвало да стори е да намери начин да подреди необходимото съдържание, за да може функционалността за търсене да работи наистина добре. Това е едно от най-големите предизвикателства пред социалната мрежа и също така то поставя значителни ограничения на ресурсите за база данни. Tevosyan потвърждава, че Facebook притежава 70 различни типа данни, които се сортират и индексират по специфичен начин според типа постове.
Следващото нещо е създаването на индекс и това се е осъществило чрез използването на HBase клъстър, Hadoop jobs, и Unicorn, Facebook search инфраструктура. Оттам насетне поддържането на този индекс, който постоянно се обновява, е следващата задача и компанията разчита на програма, наречена Wormhole. Тя е въведена, за да може системата да не се счупи при създаването на нов пост, обновяването или изтриването му.
След това Facebook следва да намери начин да покаже своя индекс на хората. Tevosyan уточнява, че не е толкова лесно Facebook да обработи индекса, така както се обработва други search индекси, тъй като този е доста голям. Тъй като search index-а с постове заема 700 терабайта RAM, компанията се нуждае от ефективен начин как да използва данните без да натоварва своите сървърни ресурси.
За ранкирането на най-полезното съдържание за потребителите, Facebook използва query rewriting и даване на оценка на динамичен резултат, за да помогне на своя алгоритъм да стане колкото е възможно по-ефективен, въпреки че Tevosyan уточнява, че екипът продължава да изглажда тези модели докато пуска функционалностите на повече потребители и се вслушва в тяхната обратна връзка.