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
.
我正在开发一个 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
.