在我的Spring/Lucene应用程序中,我使用的是Lucene IndexWriter
,TrackingIndexWriter
,SearcherManager
和ControlledRealTimeReopenThread
。Lucene索引在应用程序重新启动后被删除
现在我试图索引成千上万的文件。为此,我添加了Apache ActiveMQ并将每个文档编入一个单独的消息使用者中。
我注意到一个严重的问题 - 在下次应用程序重新启动后JVM异常终止的情况下,我的Lucene索引为空,因为没有执行IndexWriter.commit()
操作。
如果我在每个trackingIndexWriter.addDocument(document);
之后调用IndexWriter.commit()
一切正常。
我认为在每个trackingIndexWriter.addDocument(document);
之后使用IndexWriter.commit()
并不是一个好主意,特别是从性能的角度来看。
如何正确管理我的索引以便在应用程序异常终止后不丢失它?