Какой из них лучше для эффективного поиска свободного текста, Hibernate Search или Lucene? - PullRequest
1 голос
/ 27 апреля 2011

Мы разрабатываем веб-приложение, используя Spring MVC, Spring и Hibernate.

Нам необходимо добавить эффективные возможности свободного поиска текста в наши приложения.Для этого мы подумываем использовать Hibernate Search (он использует Lucene под капотом) или напрямую lucene.

Какой вариант лучше для нас, поскольку мы уже используем hibernate в нашем приложении?Каковы плюсы и минусы одного над другим?

Спасибо.

Ответы [ 3 ]

6 голосов
/ 27 апреля 2011

Вы сказали это сами - вы будете использовать Lucene так или иначе.

Необработанный API Lucene не очень прост в использовании. Это намного более низкий уровень, чем Hibernate Search. если вы уже используете Hibernate, то это просто - используйте Hibernate Search для реализации ваших функций текстового поиска.

4 голосов
/ 02 июня 2011

отказ от ответственности: я один из разработчиков Hibernate Search.

Цель проекта - не конкурировать с Lucene или Solr, а максимально облегчить интеграцию с приложениями Hibernate, чтобы избежатьнеобходимость поддерживать два мира в синхронизации и дублировать все операции отображения и CRUD.

Хотя мы предоставляем несколько общих помощников и удобную инкапсуляцию, Hibernate Search также может передать вам прямую ссылку на API Lucene, поэтомуЕсли вам нужно использовать «сырой» API Lucene, вы никогда не застрянете.Также для записи в индекс Hibernate Search предоставляет общий шаблон, который решит большинство известных требований, но если у вас очень нестандартные требования, вы можете получить полный контроль над написанными документами.

Solr - это хорошоальтернатива, но так как это отдельный сервер, вы должны взаимодействовать с ним через API REST, который совершенно другой, с его плюсами и минусами.Наличие второй службы для управления не всегда желательно, и, конечно, удаленные вызовы никогда не будут такими эффективными, как прямые ссылки на Lucene и на все его внутренние фильтры и кэши.Не все функциональные возможности Lucene могут быть предоставлены через удаленный API, и если вам нужно выполнить какую-либо операцию «низкого уровня», если это не реализовано в Solr, вы не сможете это сделать (без исправления Solr).Тем не менее Solr очень симпатичен, особенно если вы хотите поделиться индексом с другими приложениями, не относящимися к Java, и поэтому мы могли бы добавить сервер Solr для Hibernate Search, чтобы в конечном итоге синхронизировать сервер Solr (особенно, если есть интерес к нему и, возможно,некоторая помощь).

Наконец, API Lucene - действительно сложный процесс.Мы тратим много усилий на то, чтобы наилучшим образом использовать его для обеспечения максимальной производительности и предоставления стабильного API пользователям, использующим Hibernate Search. По сути, до сих пор все выпуски были обратно совместимы, что обеспечило повышение производительности при использовании новейших технологий.лучшие трюки из Lucene - которые на самом деле довольно часто меняют API;эти изменения всегда интересны, но будьте готовы сохранить это в своем приложении, если вы не используете правильную абстракцию.

1 голос
/ 27 апреля 2011

Другой способ использования Lucene - получить API middlman, который известен как SOLR. SOLR подключится к Lucene и выполнит HTTP-вызовы для поиска. Обратите внимание, что вам нужно будет собрать и проанализировать XML, который использует Solr. Вся функциональность Lucene распространяется через SOLR и должна быть действительно полезной.

...