私は Lucene .Net インデックスを持っています (現在バージョン 2.9.2 を実行していますが、すぐに新しい 3.0.3 にアップグレードする予定です)。
検索パフォーマンスの問題については、DocId からアプリケーション ID へのメモリ内マッピングを作成する必要があります。そのため、格納された値をインデックスから取得する必要はありません (検索結果で数千のドキュメントが返される可能性があります...)。インデックス作成の反復が多いため、このマッピングを何度も更新または再作成する必要があるため、迅速に行う必要があります。
この問題を正確に解決しようとするこの素晴らしい記事を見ました。Lucene のFieldCache
メカニズムを使用して結果を取得するかTermPositions
、一意のインデックス付きフィールドで列挙を使用して時間を比較します。著者が言ったように、実際に を使用してそのマッピングを作成することTermPositions
は、Lucene の を使用するよりもはるかに高速ですFieldCache
が、その理由を理解することは私にとって非常に重要です。舞台裏でTermPositions
との両方が何をしているのか、誰か説明してもらえますか?FieldCache