0

次の方法を使用して、インデックスに関するメタデータ (最後に更新されたインデックスのタイムスタンプ) をプッシュする非常に便利な方法があるようです。

IndexWriter.Commit(commitUserData)

私が観察しているのは、コミットに少なくとも 1 つのドキュメント命令 (追加/削除または更新) が含まれている場合にのみこれが機能することですが、私の場合は、更新するドキュメントがなくてもユーザー データをプッシュしたいと考えています。「一時ドキュメント」を常に更新することでこれを回避しましたが、汚いと感じています。

これをより良く行う他の方法はありますか?Lucene.NET 2.9.4.1 を使用。

ありがとう!

4

1 に答える 1

0

コミットuserdataマップは、コミットに関する情報を永続化するために使用されます。コミットするものがない場合、luceneがメタデータを保存しないことは理にかなっています。(情報を関連付けるコミットはありません)

保存する日付が、インデックスの更新が必要かどうかを最後に確認した時刻(つまり、Webサイトの最後のクロール)を表す場合は、この情報を別の場所に保存する必要があります。(データベース/設定ファイルなど)

FSDirectory.TouchFile FSDirectory.ListAllとメソッドを組み合わせFSDirectory.FileModifiedて使用​​し、luceneインデックスファイルのタイムスタンプを使用することもできます。

http://lucene.apache.org/core/old_versioned_docs/versions/2_9_4/api/all/org/apache/lucene/store/FSDirectory.html

于 2012-11-19T14:31:46.727 に答える