Hibernate Search:将 Lucene 索引持久化到数据库中

Hibernate Search: persisting Lucene index into database

我正在开发一个 Spring 启动应用程序,它使用 spring 数据 JPA 作为持久层。我想使用 hibernate search 启用全文搜索,但由于某些限制,我想将 Lucene 索引保存到数据库中(而不是文件)。

我已经完成了 documentation 但无法找到将索引持久保存到数据库中的示例。另外,通过阅读,我了解到这是可能的,但我不知道从哪里开始。

配置应该如何?

开箱即用绝对不可能。

但是,如果您愿意自己实施解决方案,则可以将其插入 Hibernate Search。

我没有做过,但我可以提供一些建议。

您将需要:

  • org.apache.lucene.store.Directory 的自定义实现:这是 Lucene 和您的存储解决方案(在您的情况下是数据库)之间的适配器。参见this answer;那是关于 Lucene 的一个非常老的版本,但至少它是一个起点。
  • org.hibernate.search.store.DirectoryProvider 的自定义实现:这是在启动时配置和创建 Directory 的组件。
  • 告诉 Hibernate Search 使用您的 DirectoryProvider 的一些配置。参见 this section of the documentation

这在 Hibernate Search 6 中也应该可行,尽管目录提供程序界面不同:org.hibernate.search.backend.lucene.lowlevel.directory.spi.DirectoryProvider.