6

フィールド値に基づいて特定のドキュメントをブーストしようとしています。通常は問題なく動作していますが、一部のドキュメントでは、ブースト値が小さいにもかかわらず、より高いスコアが返されます。

request パラメーターを使用してクエリをデバッグした後、関数が特定のドキュメントに対してより高いスコアを返してdebugQuery=onいることに気付きました。これは全体的なスコアに影響を与えています。idf

クエリ時に tf/idf スコアリングを無視する方法はありますか?

4

1 に答える 1

9

tf メソッドと idf メソッドをオーバーライドするカスタムのSimilarityを作成し、それを DefaultSimilarity の代わりに使用します。

何かのようなもの:

class CustomSimilarity extends DefaultSimilarity {

    @Override
    public float tf(float freq) {
        return 1.0;
    }

    @Override
    public float tf(int freq) {
        return 1.0;
    }

    @Override
    // Note the signature of this method may now take longs:
    //   public float idf(long docFreq, long numDocs)
    public float idf(int docFreq, int numDocs) {
        return 1.0;
    }
}

schema.xml でその類似性を使用するように設定します。

<similarity class="myorg.mypackage.CustomSimilarity"/>
于 2012-12-11T18:51:44.423 に答える