0

私はバックグラウンドで何が起こっているのかを正確に理解しようとしています。

転置インデックスの単純化されたモデルを考えると(位置とスコアを忘れてください):単語ごとに、ドキュメントIDのソートされたリストがあります。複数の単語のクエリは、それらのソートされたリストと交差して、別のそのようなリストを生成します。(最終的にはランキングがあります)

例えば

word1: 1 3 7 9 10 11 ...
word2: 2 3 4 9 10 12 ...

次のフィールドの理解は正しいですか?

異なるフィールドは、異なるインデックススペースまたは少なくとも異なるリストを意味します。たとえば、フィールドがabstractであり、bodyを持つと、次のようなシナリオになる可能性があります。

abstract:word1 7 10 ...
body:word1     1 3 9 10 11 ...
abstract:word2 3 4 ...
body:word2     1 3 9 10 12 ...

この理解は正しいですか?そうでない場合、基礎となる転置インデックスの観点から、これらのフィールドは何ですか?内部でどのように行われるかを明示的に示しているドキュメントは見つかりませんでした。

それとは別に、すべて/任意のフィールドで検索するような機能のサポートがあるかどうか疑問に思います。私が想定しているように実装した場合、これは面倒であるか、上記のようなリストを保持することによって冗長性が必要になるはずです。完全なワードリストのサブレンジを使用してフィールドを実装すると、確かにパフォーマンスが向上する可能性があります。

Luceneが実際に何をしているのかを知るのは素晴らしいことです。

4

1 に答える 1

1

Lucene 4.0以降、フィールドごとに異なる用語辞書があるため、要約と本文の投稿リストは別々に保存されます。

それとは別に、すべて/任意のフィールドで検索するような機能のサポートがあるかどうか疑問に思います。私が想定しているように実装した場合、これは面倒であるか、上記のようなリストを保持することによって冗長性が必要になるはずです。完全なワードリストのサブレンジを使用してフィールドを実装すると、確かにパフォーマンスが向上する可能性があります。

「サブレンジまたは完全なワードリストの手段」の意味を理解することはできませんが、複数のフィールドでBooleanQueryを実行すると、Luceneはその場で投稿リストをマージします。

Luceneが実際に何をしているのかを知るのは素晴らしいことです。

ソースコードには自由にアクセスできます。:-)

于 2012-11-07T22:07:31.637 に答える