Инженер команды поиска Facebook рассказал о работе новой функции Facebook Graph Search
По словам Тевосяна, работа над функцией длилась в течение двух лет и потребовала разработки каталога для 1 миллиарда новых постов, публикуемых на страницах соцсети ежедневно. На данный момент в индексе системы находится более 1 триллиона постов, которые занимают сотни терабайт.
Концепция, которая лежит в основе поиска, является продуктом одного из совместных внутренних проектов, разработанных для поиска старых постов друзей. Для поиска нужного контента Facebook анализирует более 70 различных характеристик, специфичных для разных типов публикаций. Индекс поиска построен при помощи HBase кластера, Hadoop jobs и Unicorn – поисковой инфраструктуры Facebook. Для обновления индекса используется отдельная программа — Wormhole.
Трудность, с которой столкнулись инженеры Facebook – обработка поискового запроса. Так как база индекса занимает 700 терабайт RAM, компании было необходимо найти наиболее эффективный способ обработки запросов, который бы не перегружал сервер. База была перенесена на твердотельные flash-накопители, а в RAM остались только наиболее часто запрашиваемые данные в структурированном виде.
Для вывода в результаты наиболее полезного контента, Facebook использует переколдовку запроса и динамическое ранжирование результатов, что значительно повышает эффективность работы алгоритма, однако на данный момент алгоритм далек от совершенства, в связи с чем команда «продолжит работу над совершенствованием модели и сбор обратной связи от пользователей».