これについては、いくつかの方法があります。
1-ブーストの違いを大きくします。
クエリで適用するブースト係数が十分に大きい場合は、スコアに影響を与える他のすべての係数をオーバーライドする必要があります。したがって、0.2、1.0、および2.0ではなく、.000001、1.0、および1000000を試してみることができます。何か使えるものができるまで、少し実験してください。次に、デフォルトのようにrelevance(Sort.RELEVANCE
)で並べ替えると、必要な並べ替えが得られるだけでなく、これらのサブグループ内のスコアリングの他のすべての便利な側面も維持されます。
2-実際にクエリブーストによる並べ替えを適用します
これは、ブーストファクターで厳密に並べ替えるために必要なオプションであり、次に、単一のクエリで他の並べ替えパラメーターを使用する必要があります。
Luceneの並べ替えでは、用語に適用されたブースト係数を直接表示することはできません(正当な理由で、やりたいことは少し奇妙なことです。ブーストはスコアに影響を与えることを目的としており、スコアではありません)。最も近いのは、関連性による並べ替えです。もちろん、これは他の多くの要素を考慮に入れています。
生のブースト係数を取得する必要がある場合は、類似性をオーバーライドする必要があります。
考慮すべき3つのブーストがあります。
- クエリブースト:クエリの一部として適用され、これはに渡されます
Similarity.computeWeight
- フィールドとドキュメントのブースト:インデックス時に適用され、結合され、インデックスに格納され、「長さノルム」係数とも結合されます。
取得することに興味があると思われる唯一のブーストは、クエリレベルのブーストです。これは、最も簡単に対処できるはずです。TFIDFSimilarityを変更するか、[Similarity]のサブクラスを最初から作成することができます。いずれにせよ、ほとんどのロジックをスタブアウトして、クエリブーストを返すだけです。