0

Lucene 検索エンジンを使用して、住所データのインデックスを作成しています。MMapDirectoryインデックスを格納するために使用します。ここで、新しいキャッシュを作成しながら古いキャッシュを使用したいと考えています。古いキャッシュを別のディレクトリにコピーする必要がありますか? または、これを行う良い方法はありますか?createコンストラクターのパラメーターがそのために行われているのだろうかと思いますIndexWriterが、実際に正しく使用する方法と「リアルタイム検索」を提供するかどうかはわかりません。

4

1 に答える 1

2

質問が次の場合:IndexSearchersが現在のインデックスを検索しているときに、変更前に既存のインデックスをIndexWriterで更新できますか?答えは「はい」です。

IndexWriter.Commit()の前に開かれたIndexSearchersは、変更前と同じようにインデックスを表示します。Commitの後に開かれたIndexSearchersのみが変更を表示します。

IndexWriterのcreateパラメータは、ディレクトリが存在しない場合はディレクトリを作成するように指示するだけで、指定された場所にある既存のインデックスも上書きします。

リアルタイム検索の場合、これはIndexWriter.GetIndexReader()メソッドを使用して検索者を作成/更新し、IndexWriterをできるだけ長く開いたままにすることで実行されます。

ちなみに、MMapDirectoryは、Lucene.netを使用するSimpleFSDirectoryと比較して常にパフォーマンスが悪く、2.9.4.1バージョンでも実装されていないと思います。私はそれを使用することをお勧めしません。

于 2012-08-14T20:54:18.337 に答える