在什么条件下对lucene索引(罗盘)进行I / O操作(移动/替换)是安全的

时间:2011-10-21 09:53:26

标签: java lucene io indexing compass-lucene

有时需要从头开始重新构建lucene-index。由于我不希望索引在构建的几个小时内不完整,我使用单独的罗盘实例来构建新索引并在之后将其替换为文件系统。 在此之前,使用SearchEngineIndexManager#stop()停止所有指南针实例,然后使用SearchEngineIndexManager#start()重新启动它们

但是,在此操作过程中,索引似乎时刻都会被破坏。

当SearchEngineIndexManger停止时,替换文件系统中的索引是否安全? 如果我需要在文件系统中对lucene索引进行操作,是否还需要考虑其他必要的预防措施?

2 个答案:

答案 0 :(得分:0)

如何将服务器置于只读模式,然后在第二个 lucene实例(具有自己的索引)上启动reindex。完成索引后,关闭所有服务器并将新索引提供给主lucene服务器。

答案 1 :(得分:0)

我设法通过在停止之后和重新启动sleep之前添加5秒IndexManager来解决问题。可能是一个丑陋的解决方案,但对我有用。

可以肯定的是,我在重新启动后还添加了对SearchEngineIndexManager#clearCache()的调用。