Как использовать Lucene и JPA?

Я хотел бы использовать Lucene для обеспечения возможности полнотекстового поиска на некоторых моих объектах Java, хранящихся в EclipseLink, в моей базе данных Postgresql.

Я видел, что Hibernate имеет интегрированное решение для Lucene под названием Hibernate Search, но я ничего не могу найти для EclipseLink. Есть ли решение для EclispeLink? если нет, у меня есть смутное представление о том, что я должен сделать, чтобы обрабатывать индексацию Lucene при добавлении и удалении объектов, но я был бы очень признателен, если бы кто-нибудь мог предоставить мне хороший учебник по этой теме.

Спасибо заранее,

Томас

Ответ 1

Там был компас. Тем не менее, это был проект с одним человеком, и этот разработчик перестал работать над ним еще в 2009 году. Он перешел к другому проекту с одним человеком под названием ElasticSearch.

Этот проект является автономной поисковой системой, конкурирующей с Apache Solr... а не встроенной библиотекой, конкурирующей с Apache Lucene и Hibernate Search.

К сожалению, я не знаю других серьезных альтернатив для интеграции EclipseLink с Apache Lucene. EclipseLink собрал много разума, так как Oracle изменила свое имя на TopLink, отдала его и объявила, что это эталонная реализация. EclipseLink MOXy - фантастическая реализация JAX-B с некоторыми действительно классными расширениями. Однако для взаимодействия с базовыми базами данных... Hibernate по-прежнему является более зрелой и принятой реализацией JPA на милю.

С другой стороны, оболочка Hibernate Search для Lucene поддерживает поддержку Hibernate в режиме JPA 2, а не его классический API. По-моему, в любом случае он интегрирует чище с JPA, а не старый Hibernate API.

Поэтому, если вы не используете проприетарные расширения EclipseLink, которые вы заблокировали, вы можете подумать о замене своего поставщика JPA, если вам нужна простая интеграция Lucene. Если классы сущностей уже аннотируются JPA, необходимо просто обновить ваш файл persistence.xml (и ваш Maven POM или, тем не менее, вы будете управлять зависимостями JAR).