Facebook ввел в свой поиск некоторые уникальные функции - возможно, некоторые даже запатентованы? Функции, о которых я говорю, обусловлены тремя различными требованиями:
- Тот факт, что их база данных гигантская, и они не могут просто присоединиться к нужным им данным по мере необходимости, как вы можете, как правило, в бизнес-приложении с одним домом, содержащим менее миллиона записей.
- Ожидания их пользователей формируются другими поисковыми системами, а именно Google, поэтому длинные поисковые запросы выполняются путем добавления ключевых слов к имени искомого человека, например, "Орландо, Флорида" или "Ротари Клуб". (или другое идентифицирующее значение, например, имя работодателя).
- Архитектура данных выглядит поверхностной, в зависимости от того, какое окно мы видим из приложения (конечно, оно не мелкое). Я хочу сказать, что помимо так называемой «Базовой информации» в профиле пользователя, такой как пол и текущий город, многое из того, что делает профиль уникальным, жестко не присваивается логическим столбцам.
Итак, сложность существует в потребностях, связанных с размером набора данных, НО с этим возникает необходимость предоставлять пользователю релевантные результаты сообществу пользователей, которые не разбираются в поиске, но имеют свои ожидания и обучение предоставлено Google.
Учитывая все это (уточнение моего вопроса):
a.) Какие функции поиска необходимы для FaceBook, которые мы должны принять к сведению и развернуть в наших собственных поисковых приложениях / движках? Под необходимостью я подразумеваю либо огромный размер набора данных или обусловлено ожиданиями пользователей и необходимостью органического роста сайта и увеличения его взаимосвязи между его данными - я имею в виду пользователей.
b.) Какие функции поиска являются инновационными и заслуживают внимания со стороны архитекторов данных и / или поисковых систем?
Некоторые из них очевидны, например, использование синонимов для имен - нечеткое сопоставление запроса «Билл» с записью «Уильям». Вы можете сделать это в Solr с помощью списка синонимов. Я бы назвал это базовой функцией, которая необходима, а не новаторской, конечно.
Другие, которые являются инновационными, заслуживают нашего внимания. Первый пример инноваций, на которые я могу обратить внимание, заключается в том, что их релевантность поиска настраивается для каждого пользователя. Если я наберу «Джон Смит», я получу другой набор результатов, чем другой поисковик (теоретически лучше подходит для меня, людей в моей сети, друзей друзей и т. Д.). Прежде чем вы скажете, что это не инновационно, потому что вы можете просто ввести "Pizza" в Google, и они дадут вам релевантные результаты, добавив ваш язык к запросу, следуйте, пожалуйста. Я надеюсь, что ответы и обсуждения, на самом деле, на этот вопрос будут соответствовать некоторым техническим требованиям, а также предоставят идеи для включения в функции поиска.
Например ...
- Как вы думаете, они запускают обычный пакетный процесс для денормализации данных? (то есть пакетное задание для создания таблицы связей первой степени разделения, второй степени и т. д.)
- От такой партии или денормализации, тогда это ограничивает число попаданий? Это подтверждается возвращением только логически ближайших матчей «Джона Смита». Однако поиск необычных имен [таких как мое имя и фамилия], по-видимому, не зависит от ограничения результатов, и поиск будет смотреть по всему миру, полностью за пределами этих "нескольких степеней" разделения.
- Увеличивают ли они рейтинг релевантности по возрасту, придавая больше релевантности матчам, близким к той же возрастной группе, что и искатель? (комментарий: кажется, что они должны, это может быть, по крайней мере, незначительный удар по скорости общения / встреч между поколениями, что не должно происходить - эвфемистично, я знаю)
Технически, на заднем плане, лучше всего провести процесс денормализации на уровне базы данных и затем проиндексировать «документы»?(пояснение: для тех, кто связан с поиском предприятия, «документ» - это MOL, похожий по концепции на запись в базе данных ... MOL)
ИЛИ, нет ли денормализации базы данных.Вместо этого процесс написания поискового индекса включает в себя запись в каждый «документ» соответствующей информации и людей, которые находятся «в сети» или находятся на расстоянии нескольких градусов друг от друга?
-процесс такой информации.Сам я не сделал этого точно на практике, мне кажется, что выгодно денормализовать в пакетах на уровне базы данных, потому что поисковый сервер хорош для быстрого нахождения информации, но сервер баз данных лучше для получениясопоставление данных (при условии, что они распространяются на связанные столбцы, которых нет в поисковом индексе).
Следовательно, расширяя понятие релевантности поиска, зависящее от пользователя-поисковика, обратите внимание, что оно также является производным отнедавняя активность пользователя.Например, поиск «Джон Смит Орландо» может никогда не привести к «правильному» Джону Смиту, но после посещения правильной страницы FaceBook Джона Смита (предположим, вы получили его URL в письме), даже без добавления Джона Смита какдруг, последующий поиск Джона Смита, на этот раз, на самом деле вернет этот результат в следующий раз. [Интересно, сколько времени пройдет до того, как это истечет, или вообще оно устареет?]
Я использовал Facebook в качестве примера, потому что они огромные.Их размер обусловливает продуманную архитектуру - например, то, что остается в его нормальной форме, а что нет, потому что вы просто не можете JOIN
100 миллионов таблиц записей несколько раз (воссоединение одной и той же таблицы с другим человеком из другой "ветки").таблица ссылок или производная таблица может создать эффект «друзей друзей».
Практика настройки релевантности - это почти искусство.Наборы данных, бизнес-правила и ожидания пользователей настолько уникальны, что практически невозможно создать шаблон многоцелевого скоринга или даже лучшие практики.
При этом обращая внимание на крупные сайты, которые работаютпоиск достаточно хорошо, есть техника для подражания, не так ли?
Какие методы существуют на FaceBook?И учитывая их размер, они не могут просто получить то, что нужно пользователю, когда ему это нужно, через ORM (не удар по ORM) - это требует хорошо спланированной нормализации, индексации на уровне SQL, нормализации DE и поискового сервера.индексация.
Кто-нибудь может подсказать, какие там существуют методы?В этом отношении любой крупный сайт с похожим поиском (и большим набором данных) также предоставит хорошие тематические предложения.