【发布时间】:2016-07-11 13:35:03
【问题描述】:
我想在我的应用程序中使用 Hibernate Search;该应用程序包含几个访问搜索索引的模块:
- 一个写入器/读取器模块
- 两个或三个只读模块
(模块将驻留在同一台物理机器上)
这可以吗?如果模块之间共享相同的索引目录就足够了吗?是否有任何性能惩罚?
【问题讨论】:
标签: indexing lucene hibernate-search
我想在我的应用程序中使用 Hibernate Search;该应用程序包含几个访问搜索索引的模块:
(模块将驻留在同一台物理机器上)
这可以吗?如果模块之间共享相同的索引目录就足够了吗?是否有任何性能惩罚?
【问题讨论】:
标签: indexing lucene hibernate-search
是的。只有在同一台机器上需要多个应用程序来写入时,才会有性能损失。
由于在您的情况下只有一个应用程序会写入,因此您可以通过允许该应用程序使用“独占模式”并让其他应用程序只读来获得良好的性能。
独占模式是自 5.0 版以来的默认模式,因此无需更改写入器/读取器应用程序的配置。
需要将其他应用程序配置为在引导时不打开 IndexWriter,这将使它们获得索引写入锁。
只需设置此属性:
hibernate.search.default.exclusive_index_use = false
一个限制:您不能使用section 3.2.2 中描述的近实时索引管理器,因为写入不会在每次写入操作时刷新到磁盘,因此其他应用程序不会看到最新的更改。
【讨论】: