Lucene - 验证索引的完整性
Lucene - Validate completeness of index
我们正在使用 Lucene 5.5.5 以便对我们的数据库内容进行全文搜索。我们在数据库迁移后构建索引,并使用近实时索引管理器来保持索引最新。然而,有时可能会发生服务器在索引管理器可以提交它仍然保存在内存中的索引条目之前被杀死的情况。
为了避免在服务器启动时总是重建索引,因为它很慢,我想知道是否可以检查索引是否完成。我知道有 CheckIndex
-Utility,但据我所知,它只能检查索引是否损坏,但不能检查索引是否完整。
另一种选择可能是不完全重建但完成现有索引的索引器。
解决此问题的最佳方法是什么?我的目标是在启动时尽可能少地浪费时间并拥有完整的索引。
我猜一个明显的解决方案是不再使用近实时索引管理器,但现在,我不想考虑该选项。
确实,近实时 indexmanager 在内存中缓冲修改,据我所知,目前无法验证索引刷新的完整性。
所以解决方案可能是:
切换到基于目录的索引管理器。 (缺点:与近实时索引管理器相比性能更差)
使用 healthcheck
服务来检查您的应用程序的状态并更新数据库中的标志 isServerForciblyClosed
,如果它是 true
,则在下次启动时重建索引.如果计划关机,应关闭此服务。
创建自己的 CustomIndexManager
实现扩展内置 类 或完全从头开始实现 Indexmanager
接口
我们正在使用 Lucene 5.5.5 以便对我们的数据库内容进行全文搜索。我们在数据库迁移后构建索引,并使用近实时索引管理器来保持索引最新。然而,有时可能会发生服务器在索引管理器可以提交它仍然保存在内存中的索引条目之前被杀死的情况。
为了避免在服务器启动时总是重建索引,因为它很慢,我想知道是否可以检查索引是否完成。我知道有 CheckIndex
-Utility,但据我所知,它只能检查索引是否损坏,但不能检查索引是否完整。
另一种选择可能是不完全重建但完成现有索引的索引器。
解决此问题的最佳方法是什么?我的目标是在启动时尽可能少地浪费时间并拥有完整的索引。
我猜一个明显的解决方案是不再使用近实时索引管理器,但现在,我不想考虑该选项。
确实,近实时 indexmanager 在内存中缓冲修改,据我所知,目前无法验证索引刷新的完整性。
所以解决方案可能是:
切换到基于目录的索引管理器。 (缺点:与近实时索引管理器相比性能更差)
使用
healthcheck
服务来检查您的应用程序的状态并更新数据库中的标志isServerForciblyClosed
,如果它是true
,则在下次启动时重建索引.如果计划关机,应关闭此服务。创建自己的
CustomIndexManager
实现扩展内置 类 或完全从头开始实现Indexmanager
接口