我想了解應該如何使用Lucene。Lucene NRTManager處理
從我看過的內容來看,創建一個IndexReader
代價很高,所以使用Search Manager
是正確的選擇。然而,SearchManager
應由NRTManager
(順便說一句,應該替換爲執行每個添加或刪除操作的IndexWriter
)生成。但爲了有一個NRTManager
,我應該首先有一個IndexWriter
,這就是我的問題。
文檔說:
- 的IndexWriter類是線程安全的
- 這個類的構造函數需要一個
Directory
對象,因此它似乎創建instace應該是昂貴的(如在的IndexReader的情況下, ) 所有更改緩衝和定期刷新(所以他們似乎使用單一實例),以鼓勵
但:
種
的變化,但沖洗後
commit
或close
- 纔可以看到完成製作後的更新(添加/刪除),實例應該關閉
- 我也發現了這一點:Forgot to close the Lucene IndexWriter after adding Documents to the index它是說,不是關閉一個作家可能會毀了一切
那麼我真的該怎麼辦?有一個單一的IndexWriter
實例是一個好主意(只製作commit
而不是close
它)?
更重要的是,如果我使用NRTManager
,我該怎麼做一個commit
?它甚至有可能嗎?
謝謝你,博客上的精彩文章。這讓我意識到,我不需要NRTManager(在我的情況下,它只是過分複雜的東西)。關於IndexWriter的結束,我會提供你的建議。 – Dragos 2012-03-19 21:36:00