我们使用 Lucene 5.5.5 以允许对我们的数据库内容进行全文搜索。我们在数据库迁移后构建索引,并使用近实时索引管理器来保持索引是最新的。但是,有时可能会发生服务器在索引管理器可以提交它仍然保存在内存中的索引条目之前被杀死的情况。
为了避免总是在服务器启动时重建索引,因为它很慢,我想知道是否可以检查索引是否完成。我知道有CheckIndex
- 实用程序,但据我了解,它只能检查索引是否损坏,但不能检查是否完整。
另一种选择可能是不完全重建但完成现有索引的索引器。
解决此问题的最佳方法是什么?我的目标是在启动时尽可能少地浪费时间,并拥有一个完整的索引。
我猜一个明显的解决方案是不再使用近实时索引管理器,但现在,我不想考虑这个选项。
最佳答案
确实,近实时 indexmanager 将修改缓冲在内存中,据我所知,目前无法验证索引刷新的完整性。
所以解决方案可能是:
healthcheck
将检查您的应用程序状态并更新标志的服务 isServerForciblyClosed
在数据库中,如果是 true
然后在下次启动时重建索引。如果计划关闭,应关闭此服务。 CustomIndexManager
实现扩展内置类或完全从头实现 Indexmanager
接口(interface)关于java - Lucene - 验证索引的完整性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58689947/