6

私は2日間グーグルしています...私は本当に助けが必要です。

IndexWriter更新ごとにOpen/Close ofを使用してluceneインデックスを更新しようとしている、複数のスレッドを持つアプリケーションがあります。スレッドはいつでも開始できます。

ええ、の問題write.lock!したがって、2つ以上の解決策がある可能性があります。

1)IndexWriter.IsLocked(index)スレッドをスリープ状態にするためにロックされているかどうかを確認します。
2)を開き、IndexWriter決して閉じないでください。問題は、同じインデックスを使用する別のアプリケーションがあることです。また、いつインデックスを閉じてプロセス全体を完了する必要がありますか?

ここに興味深い投稿があり
ますLuceneIndexWriterスレッドセーフ
Lucene-閉じたIndexWriterを開きます

更新: ちょうど2年後、これをラップするREST APIを実行しすべての書き込みと読み取りがAPIにルーティングされました。

4

1 に答える 1

7

複数のスレッド、同じプロセス:

開いたままIndexWriterにして、複数のスレッドで共有します。はIndexWriterスレッドセーフです。

複数のプロセスの場合、ソリューション#1は競合状態で問題が発生する傾向があります。Mutex安全に実装するに は、namedを使用する必要があります:http: //msdn.microsoft.com/en-us/library/bwe34f1k.aspx

そうは言っても、私は個人的にインデックスへの書き込み専用のプロセスを選択し、WCFのようなものを使用してそれと通信します。

于 2012-09-11T18:04:23.853 に答える