应用程序重启后Lucene索引被删除

时间:2016-07-06 17:56:25

标签: lucene

在我的Spring / Lucene应用程序中,我使用Lucene IndexWriterTrackingIndexWriterSearcherManagerControlledRealTimeReopenThread

现在我正试图索引成千上万的文件。为此,我添加了Apache ActiveMQ并在单独的消息使用者中索引每个文档。

我注意到一个严重的问题 - 如果在下一次应用程序重启后JVM异常终止,我的Lucene索引为空,因为未执行IndexWriter.commit()操作。

如果我在每个IndexWriter.commit()之后调用trackingIndexWriter.addDocument(document);,一切正常。

我认为在每个IndexWriter.commit()之后使用trackingIndexWriter.addDocument(document);是个不错的选择,尤其是从效果的角度来看。

如何正确管理我的索引,以便在应用程序异常终止后不丢失它?

1 个答案:

答案 0 :(得分:1)

IndexWriter.commit()只会刷新数据。它既不会优化你的索引也不会关闭作者。

可以再次使用相同的Indexwriter添加更多数据。

不要调用IndexWriter.close(),它不仅可以刷新数据,还可以优化索引,并且操作速度非常慢。

完成后,最后您可以关闭进行优化。

因此,从性能的角度来看,每次添加文档后都可以提交。