0

私はWebアプリケーションでLuceneを使用しています。Luceneは、記事が追加されたときにインデックスを作成するために使用されます。インデックスディレクトリにはIndexWriterインスタンスが1つしか存在しない可能性があるため、アプリケーションにはシングルトンIndexWriterを使用します。

  1. すべてのドキュメントをインデックスディレクトリにコミットするには、いつIndexWriterを閉じる必要がありますか?
  2. Webサーバー(tomcat)がダウンした場合、コミットされていないドキュメントをどのように回復する必要がありますか?Luceneはクラッシュから回復する方法を提供しましたか?
4

2 に答える 2

0

IndexWriterを閉じて再度開くのではなく、 IndexWriter.commitを確認することをお勧めします。

于 2012-11-20T22:15:34.490 に答える
0

すべてのドキュメントをインデックスディレクトリにコミットするには、いつIndexWriterを閉じる必要がありますか?

データの損失が非常に心配な場合は、できるだけ頻繁にコミットしてください(各ドキュメントの後でさえ実行できます)。検索の鮮度が重要でない場合は、古いリーダーをそのままにして、後で再度開くことができます。

Webサーバー(tomcat)がダウンした場合、コミットされていないドキュメントをどのように回復する必要がありますか?Luceneはクラッシュから回復する方法を提供しましたか?

Luceneはアトミックです-writer.commit()またはを終了するとすぐwriter.close()に、変更はディスクに保持され、後で読み取ることができます。これで十分だと思います。

忘れないでください:Luceneは単なる検索ライブラリです。アプリケーションがクラッシュしないようにするのはあなたの責任です。たとえそうだとしても、回復戦略を実行するのはあなたの責任です。Luceneは、原子性に関してすでにかなりまともな仕事をしています。

于 2012-11-20T22:12:24.500 に答える