Lucene-验证索引的完整性

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

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

另一个选择可能是无法完全重建但可以完成已经存在的索引的索引器。

解决这个问题的最佳方法是什么?我的目标是在启动时浪费尽可能少的时间,并拥有完整的索引。

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

vancehgame 回答:Lucene-验证索引的完整性

实际上,近实时索引管理器将修改内容缓存在内存中,据我所知,目前尚无法验证索引刷新的完整性。

因此解决方案可能是:

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

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

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

本文链接:https://www.f2er.com/3168084.html

大家都在问