Должен ли я использовать Lucene только для выделения? - PullRequest
1 голос
/ 09 ноября 2011

У меня есть приложение, которое ищет текст, проиндексированный в базе данных MSSQL. Моя текущая функциональность поиска работает нормально. Мне просто нужно отобразить результаты поиска вместе с окружающим текстом поисковых терминов (как это делает Google). Единственный инструмент, который я смог найти - это подсветка текста Lucene. Я читал об этом из этого вопроса: Отображение образца текста из результатов поиска Lucene . Я не очень долго изучал Lucene, но думаю, мне придется создавать документы для каждого поискового хита.

Мне было интересно, возможно ли то, что я хочу сделать с Lucene, и было бы излишним использовать такой инструмент для моих целей. Есть ли другие инструменты, которые я мог бы / должен использовать для этого?

Ответы [ 3 ]

2 голосов
/ 09 ноября 2011

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

В случае, если это не будет достаточно быстрым для вас (например, если вы хотите выделить большие фрагменты текста), Lucene может ускорить выделение с помощью векторов-терминов , но для этого потребуется переместить ваш бэкэнд из MSSQL в Lucene.

1 голос
/ 09 ноября 2011

Если вы уже можете получить окружающий текст из найденных ключевых слов, и это действительно единственное, что вам нужно , тогда да, Lucene - это перебор - просто Surround ваши ключевые слова с подсветкой тегов . Однако в большинстве случаев

Но в большинстве случаев со временем люди начинают думать о других дополнительных параметрах, таких как stemming (если вы ищете "highlight", вы также найдете "подсветку" и "подсветку"), синоним поиск, определение языка и т. д. Если вы когда-либо думали, что вам могут понадобиться такие вещи, или даже у вас нет готового алгоритма поиска фрагментов текста с ключевыми словами (окружающий текст), я настоятельно рекомендую вам погружение в мир Lucene . Лучший вариант, который я могу придумать, - индексировать все ваши текстовые поля из MSSQL и основывать весь ваш текстовый поиск на Lucene.

Если вы боитесь жесткого кодирования Lucene, вы можете использовать Solr - веб-сервер на основе Lucene с чрезвычайно широким спектром возможностей, легко конфигурируемый с помощью XML-файлов. У Solr есть и простой веб, и несколько интерфейсов программирования ( Solrj для Java).

1 голос
/ 09 ноября 2011

Это было бы излишне &: Lucene - это полноценный поисковый / индексный движок со стволом, оценкой и прочим. Вероятно, лучше , чем то, что вы делаете, но это зависит от ваших целей.

Если вы просто делаете простое выделение ключевых слов, рассмотрите регулярное выражение для вставки подсвечивающих тегов.

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