在Solr中的查询时忽略tf/idf

C0d*_*ack 4 lucene solr

我试图基于字段值来提升特定文档.它通常工作正常但是一些文档返回更高的分数,即使它们具有较小的提升值.

在使用debugQuery=onrequest参数调试查询后,我注意到该idf函数正在为特定文档返回更高的分数,这会影响整体分数.

有没有办法在查询时忽略tf/idf评分?

fem*_*gon 8

您将要创建一个自定义的Similarity,它会覆盖tf和idf方法,并使用它来代替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;
    }
}
Run Code Online (Sandbox Code Playgroud)

设置它在schema.xml中使用该相似性:

<similarity class="myorg.mypackage.CustomSimilarity"/>
Run Code Online (Sandbox Code Playgroud)

  • 感谢您的回复,我希望有一些更简单的东西,比如我可以在查询时切换到的标志。我想知道函数查询是否可能是一个解决方案? (3认同)