在我的Spring/Lucene應用程序中,我使用的是Lucene IndexWriter
,TrackingIndexWriter
,SearcherManager
和ControlledRealTimeReopenThread
。Lucene索引在應用程序重新啓動後被刪除
現在我試圖索引成千上萬的文件。爲此,我添加了Apache ActiveMQ並將每個文檔編入一個單獨的消息使用者中。
我注意到一個嚴重的問題 - 在下次應用程序重新啓動後JVM異常終止的情況下,我的Lucene索引爲空,因爲沒有執行IndexWriter.commit()
操作。
如果我在每個trackingIndexWriter.addDocument(document);
之後調用IndexWriter.commit()
一切正常。
我認爲在每個trackingIndexWriter.addDocument(document);
之後使用IndexWriter.commit()
並不是一個好主意,特別是從性能的角度來看。
如何正確管理我的索引以便在應用程序異常終止後不丟失它?