Как твиттер улучшит их поиск, используя lucence? - PullRequest
0 голосов
/ 15 апреля 2011

Недавно твиттер-инженер опубликовал очень впечатленный блог об использовании Lucence вместо mysql для своей поисковой архитектуры.Итак, мне интересно, почему они выбирают lucence и почему mysql не соответствует их требованиям?С другой стороны, что является узким местом производительности (или масштабируемости) для системы баз данных СУБД?

Любые идеи приветствуются!

Спасибо в Adv

Vance

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Думайте об индексе Lucene как о чем-то похожем на индекс, который имеется у вас в конце некоторых крупных справочников: для каждого важного термина, который появляется в книге, он перечисляет все страницы, на которых он появляется. Поэтому, если вы хотите найти все места в книге, где появляется термин, вы идете в указатель и получаете список страниц.

Что делает Lucene, так это берет документы, разбивает их на отдельные слова (этот процесс называется «токенизация»), а затем для каждой записи слова / токена в своем индексе, что это слово появляется в этом документе.

Думайте об индексе как о хеш-таблице (на самом деле это не единица, но та же идея): ключи - это слова / токены, и для каждого ключа есть блок со списком ссылок на документы (URI, имена файлов), которые содержат Это слово. Он не хранит сам документ - просто ссылка на него. Когда вы выполняете поиск в Lucene, вы предоставляете ключевое слово и возвращаете список документов, содержащих это ключевое слово, которые появляются в его индексе.

MySQL и другие СУБД оптимизированы для хранения и извлечения записей - наборов предопределенных упорядоченных столбцов. Когда вы помещаете индекс в столбец, он смотрит на все содержимое столбца как на единое целое. Если этот столбец представляет собой фрагмент текста, он не разбивается на слова.

0 голосов
/ 15 апреля 2011

MySql - это RDMS, довольно надежная и быстрая.Он поддерживает полнотекстовый поиск, но он не очень хорош и эффективен.Lucence, это система полнотекстового поиска.Механизм полнотекстового поиска способен выполнять поиск в документах, текстах и ​​т. Д. Таким образом, он может эффективно выполнять поиск по множеству твитов.

MySql хорош, когда речь идет о столбцах запросов, и то же самое с дискретными значениями поиска.в этих столбцах.Подобные запросы определенно будут иметь успех.

Вы можете найти много информации о полнотекстовом поиске в Интернете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...