共享 Hibernate Search 索引
Sharing Hibernate Search index
我想在我的应用程序中使用 Hibernate Search;该应用程序包含几个访问搜索索引的模块:
- 一个writer/reader模块
- 两个或三个只读模块
(模块将驻留在同一台物理机器上)
这能做到吗?如果模块之间共享相同的索引目录就足够了吗?有任何性能损失吗?
是的。只有在同一台机器上需要多个应用程序才能 write.
时才会有性能损失
由于在您的情况下只有一个应用程序将写入,您可以通过允许该应用程序使用 "exclusive mode" 并允许其他应用程序只读来获得良好的性能。
自 5.0 版以来,独占模式是默认模式,因此 writer/reader 应用程序不需要更改配置。
其他应用程序需要配置为不在bootstrap打开IndexWriter,这样它们就会获得索引写入锁。
只需设置此 属性:
hibernate.search.default.exclusive_index_use = false
一个限制:您不能使用 section 3.2.2 中描述的近实时 IndexManager,因为写入不会在每次写入操作时刷新到磁盘,因此其他应用程序不会看到最新的变化。
我想在我的应用程序中使用 Hibernate Search;该应用程序包含几个访问搜索索引的模块:
- 一个writer/reader模块
- 两个或三个只读模块
(模块将驻留在同一台物理机器上)
这能做到吗?如果模块之间共享相同的索引目录就足够了吗?有任何性能损失吗?
是的。只有在同一台机器上需要多个应用程序才能 write.
时才会有性能损失由于在您的情况下只有一个应用程序将写入,您可以通过允许该应用程序使用 "exclusive mode" 并允许其他应用程序只读来获得良好的性能。
自 5.0 版以来,独占模式是默认模式,因此 writer/reader 应用程序不需要更改配置。
其他应用程序需要配置为不在bootstrap打开IndexWriter,这样它们就会获得索引写入锁。
只需设置此 属性:
hibernate.search.default.exclusive_index_use = false
一个限制:您不能使用 section 3.2.2 中描述的近实时 IndexManager,因为写入不会在每次写入操作时刷新到磁盘,因此其他应用程序不会看到最新的变化。