ブール クエリは、複数のクエリ用語のヒットを、1 つだけに一致するものよりも高くランク付けしますが、これはスコアリング アルゴリズムの一部にすぎないことに注意してください。それを洗い流すことができる他の多くの影響があります。
ブールクエリによって結合されたクエリ用語は、最終的なスコアを形成するためにそれらのサブスコアが乗算されるため、より多くのクエリ用語が一致すると自然に重みが増します。その上に、より多くの割合のクエリ用語が一致する場合に大きくなる coord 係数があり、これもスコアに乗算されます。
ただし、同じクエリ用語、ドキュメントの長さ、用語の希少性、およびブーストの複数の一致もスコアに影響を与えます。すべての用語に一致しなくても、これらの影響からより高いスコアを取得するドキュメントが存在する可能性は十分にあります。
ここで使用されているアルゴリズムの詳細については、TFIDFSimilarity ドキュメントを参照してください。
クエリに対するドキュメントのスコアリングを理解するには、 に慣れる必要がありますExplanation
。ドキュメントがどのようにスコア付けされたかについて、人間が判読できる説明を得ることができます。
Explanation explain = searcher.explain(myQuery, resultDocNo);
System.out.print(explain.ToString());
クエリに一致したドキュメントのフラグメントを特定するには、 を使用できますHighlighter
。その簡単な使い方は次のとおりです。
QueryScorer scorer = new QueryScorer(myQuery);
Highlighter highlighter = new Highlighter(scorer);
String fragment = highlighter.getBestFragment(analyzer, fieldName, myDoc.getField(fieldName));