Поисковая система Lucene vs База данных поиска - PullRequest
37 голосов
/ 09 января 2011

Я использую базу данных MySQL и использую поиск по базе данных. Какие-либо преимущества и недостатки систем баз данных и поисковой системы Lucene? Я хотел бы получить предложения о том, когда и где их использовать?

Ответы [ 4 ]

30 голосов
/ 09 января 2011

Предлагаю вам прочитать Полнотекстовые поисковые системы и СУБД . Однострочный: «Если основная часть вашего варианта использования - полнотекстовый поиск, используйте Lucene. Если основная часть вашего варианта использования - это объединения и другие реляционные операции, используйте базу данных. Вы можете использовать гибридное решение для более сложного варианта использования.

25 голосов
/ 09 января 2011

Используйте Lucene, если вы хотите проиндексировать текстовые документы (любой длины) и найти в этих документах Текст , возвращая ранжированный список документов, соответствующих поисковому запросу. Классическим примером являются поисковые системы, такие как Google, которые используют текстовые индексаторы, такие как Lucene, для индексации и запроса содержимого веб-страниц.

Преимущества использования Lucene над базой данных, такой как Mysql, дляИндексирование и поиск текста:

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

Много полезной информации о Lucene здесь .

2 голосов
/ 21 февраля 2011

Мы использовали Sql Server на работе, чтобы сделать несколько запросов, которые использовали полнотекстовый поиск. В случае больших объемов данных Sql выполняет внутреннее соединение между набором результатов, возвращаемых поиском FullText, и остальной частью запроса, что может быть медленным, если база данных работает на маломощной машине (2 ГБ оперативной памяти на 20 ГБ данных). Переключение того же запроса на Lucene значительно улучшило скорость.

1 голос
/ 09 января 2011

Lucene search имеет преимущество индексации. Этот пост может помочь вам понять люцен.

...