複合クエリを使用する場合、Lucene が結果セット内のレコードをどのように並べ替えるかを知る必要があります。
正確なクエリの場合は「スコア」値を使用してソートし、範囲クエリの場合は辞書順でソートするようです。しかし、次のようなクエリがある場合はどうなりますか
q = type:TAG OR type:POST AND date:[111 to 999]
複合クエリを使用する場合、Lucene が結果セット内のレコードをどのように並べ替えるかを知る必要があります。
正確なクエリの場合は「スコア」値を使用してソートし、範囲クエリの場合は辞書順でソートするようです。しかし、次のようなクエリがある場合はどうなりますか
q = type:TAG OR type:POST AND date:[111 to 999]
論理検索とスコアリングを組み合わせます。のようなクエリを渡すとdate:[111 to 999]
、Lucene は日付が指定された範囲内にあるすべてのドキュメントを検索します。しかし、それらをソートする方法についてのアドバイスはありません.555日よりも111日の方が望ましいですか? または701は398よりも優れていますか? Lucene はそれを認識していないため、見つかったすべてのドキュメントのスコアは同じです。いくつかの順序を作るために、Lucene は結果を辞書順に並べ替えますが、それは主に実装の詳細であり、重要なアイデアではありません。
一方、キーワードやタグなど、クエリで他のパラメーターを渡すと、Lucene はその類似性アルゴリズムを適用し、結果のさまざまなドキュメントにさまざまなスコアを割り当てることができます。Lucene のスコアリングの詳細については、こちらを参照してください。
したがって、簡単な回答を与えると、Lucene は結果をスコアで並べ替え、2 つのドキュメントのスコアが同じ場合にのみ、辞書順などの他の種類の並べ替えオプションを使用します。