Lucene-验证索引的完整性

Mar*_*cel 6 java lucene indexing validation hibernate

我们使用Lucene 5.5.5是为了允许对我们的数据库内容进行全文搜索。我们在数据库迁移后建立索引,并利用近实时索引管理器来使索引保持最新。但是,有时可能会发生这样的情况,即服务器在索引管理器可以提交仍保留在内存中的索引条目之前被杀死。

为了避免在服务器启动时总是重建索引,因为它很慢,我想知道是否可以检查索引是否完成。我知道有CheckIndex-Utility,但据我了解,它只能检查索引是否损坏,但不能检查索引是否完整。

另一种选择可能是不完全重建但完成现有索引的索引器。

最好的方法是什么?我的目标是在启动时浪费尽可能少的时间并拥有完整的索引。

一个明显的解决方案是我不再使用近实时索引管理器,但是就目前而言,我不想考虑该选项。

Mik*_*nko 1

事实上,近乎实时的索引管理器会缓冲内存中的修改,据我所知,目前无法验证索引刷新的完整性。

所以解决方案可能是:

  1. 切换到基于目录的索引管理器。(缺点:与近实时 Indexmanager 相比性能较差)

  2. 使用服务来检查应用程序的状态并更新数据库中的healthcheck标志,如果是则在下次启动时重建索引。如果计划关闭,应关闭此服务。isServerForciblyClosedtrue

  3. 创建您自己的CustomIndexManager实现扩展内置类或完全从头开始实现Indexmanager接口