2013-01-10 65 views
1

我的程序運行速度太慢,以至於在將40,000個文檔插入數據庫之後,我不得不中止它的一半以優化代碼的一部分,但是在調用Lucene indexwriter.close之前。然後,我無法找到某些記錄的結果,這些記錄似乎僅限於該特定運行的40,000個文檔。Lucene indexwriter.close()是必須的嗎?

這是否意味着,那些我曾在程序運行期間索引記錄丟失? IndexWriter必須始終完全關閉以允許將數據寫入索引?

在此先感謝!

回答

1

它不是關閉,你需要調用但commitaddDocument僅分析文檔並將數據緩存到內存中,而提交將刷新掛起的更改並執行fsync。

close內部調用承諾,我想這就是爲什麼你承擔接近是必需的。

然而,謹防不調用commit往往比addDocument這個操作是非常昂貴的。

+0

我明白了,謝謝你的提示! :) – na9090

+0

你能將答案標記爲已接受嗎? – jpountz