フィールドの順序は lucene クエリで重要ですか?
例えば、
q = A && B && C
A が 100 万のドキュメントに表示され、B が 10000 に表示され、C が 1000 に表示されるとします。
A、B、C の AND の順序に関係なく結果は同じですが、次のクエリの応答時間は何らかの形で異なりますか?
C && B && A
A && B && C
Lucene/Solr は、特定のクエリのスペースと時間の両方の観点から最適なクエリ実行プランを選択しますか?
クエリが であっても であってA AND B AND C
もC AND B AND A
、クエリの実行時間は同じになります。
また、AND を実行する場合、ドキュメントが返されるにはすべてのクエリ用語が存在する必要があるため、ドキュメントの頻度は同じになります。
ただし、用語の頻度は異なるため、スコアは異なります。
Lucene は、定義上、「高性能なフル機能のテキスト検索エンジン ライブラリ [...]」です。各用語が出現するドキュメントの数を分析すると、AND 演算と Lucene を実行する順序を簡単に決定できます。
アルゴリズムに興味がある場合は、カーディナリティが最も低い用語の間で AND を実行して最高のパフォーマンスを得ることができ、カーディナリティが最も高い用語まで続きます。
このように、並べ替えられた投稿リストのマージ アルゴリズム [2 つの投稿リストの長さが n と m の O(n+m)] とスキップ ポインターのおかげで、少数の docID を反復処理できます。