私はluceneを使って文書を索引付けし、検索を実行した後すぐに削除します。 このすべては、以下のステップを含むややアトミックアクションとして考えることができます。lucene良い練習とスレッドの安全性
指数(作家)- >検索(検索者)は、- >は スコア(リーダー)ドキュメントを取得します - >削除ドキュメント(リーダ)
このアクションは(FSDirectory
を使用して)同じインデックス上の複数の同時スレッドによって行うことができます。
重要:各スレッドは、文書の別のセットを処理しますので、一つのスレッドは、その目的のために
に別のスレッドの文書を触れないだろう、私はいくつかの質問があります:
1)私はシングルを使用する必要がありますすべてのスレッドのインスタンス数はIndexWriter
,IndexReader
、IndexSearcher
? (彼らはスレッドセーフであるはずです)
2)IndexWriter
はインデックスを操作することができ、IndexReader
は文書を削除できますか?そのことをするためにもう一方を閉じる必要がありますか? 意味、1つはインデックスに書き込むことができますが、もう1つはインデックスから削除します(先に述べたように、別々のデータセットを扱うことが保証されます)。
3)他の良いプラクティスや提案があります最も感謝します。
ありがとう!
スピーディー&よく書かれた返信のおかげで! – levtatarov