1

Lucene.NetとNHibernate.Searchを全文検索エンジンとして使用するWebアプリケーションがあります。NHibernate.Searchは、データベースで変更が行われるたびに、それがLuceneインデックスに伝播されるように設定されています。

Webアプリケーションは、4つのワーカープロセスを使用して実行されています。まず第一に、これは問題ですか?Luceneインデックスがデータベースと100%同期していないことに気づきました。データベースへの一部の変更は、Luceneインデックスに表示されません。ただし、手動でデータのインデックスを再作成しようとすると、これは正常に機能します。

マルチプロセス環境でLucene.Netを使用することで、並行性に影響はありますか?

4

1 に答える 1

0

これは、開いているIndexWriterがインデックスディレクトリをロックしている問題のように聞こえます。1つのワーカープロセスが他のプロセスのインデックスをロックします。

Lucene.Netは、インデックスごとにライターが1つしかない限り、マルチプロセス環境で使用できます。ディレクトリの実装が異なれば、これはさまざまな方法で実施され、通常は。という名前のファイルが関係しますwrite.lock

一般的な解決策は、インデックス作成と検索を処理する個別の検索プロセスを用意することです。

于 2013-05-04T09:51:36.173 に答える