Использование Lucene с данными базы данных - PullRequest
2 голосов
/ 14 марта 2012

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

Например,

Iнужно сделать поиск, который будет искать ключевые слова на основе двух полей («описание», «сообщение»).

Для этого мне нужно написать SQL-запрос, чтобы вернуть все строки описания и все строки сообщения (может быть десятки тысяч), затем создать индекс и выполнить поиск по индексу.

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

Ответы [ 2 ]

5 голосов
/ 14 марта 2012

Если вы можете (я имею в виду, если вы открыты для использования чего-либо), то попробуйте Solr.Он имеет встроенную поддержку для индексации содержимого базы данных с помощью обработчика импорта данных.Я использую его для индексации 1 миллиарда + строк полнотекстовых данных, находящихся в базах данных.

1 голос
/ 14 марта 2012

Ваше понимание верно.

Вам нужно будет создать индекс для Lucene на основе набора, как вы указали. Я бы порекомендовал Люка для просмотра созданных вами индексов.

У меня есть предупреждение о том, почему полнотекстовый поиск в конечном итоге лучше - Каждый раз, когда значение обновляется, вы должны обновлять индекс Lucene, который является внешним по отношению к вашей базе данных. Это накладные расходы, с которыми я не хотел иметь дело, и в итоге я отказался от этого подхода.

FTS дает мне такие же хорошие результаты, по крайней мере, для моих нужд, ваши могут отличаться.

...