我使用Lucene來索引文檔並執行搜索後,我立即將其刪除。 這一切都可以被認爲是包括以下步驟有點原子動作:Lucene的良好做法和線程安全
指數(作家)- >搜索(搜索)- >獲得通過的分數文檔 (讀者)- >刪除文檔(讀取器)
這個動作可以通過在相同的索引多個併發線程(使用FSDirectory
)來執行。
重要提示:每個線程處理一組獨立的文件,使一個線程不會去碰另一個線程的文件
爲目的,我有幾個問題:
1)我應該使用一個單一的實例(所有線程)的IndexWriter
,IndexReader
和IndexSearcher
? (它們應該是線程安全的)
2)可以通過一個IndexWriter
操作索引,而IndexReader
刪除文件?我需要關閉另一個來做它的事嗎? 的意思是,一個線程可以寫入索引而另一個線程從中刪除(正如我前面提到的,我可以保證他們處理單獨的數據集)
3)您可能有的任何其他良好做法和建議最受讚賞。
非常感謝!
感謝您的迅速和書面答覆! – levtatarov 2012-01-16 11:25:14