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

时间:2012-12-11 17:15:58

标签: solr lucene

我正在尝试根据字段值提升特定文档。它通常工作正常但是一些文档返回更高的分数,即使它们具有较小的提升值。

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

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

1 个答案:

答案 0 :(得分:7)

您需要创建一个自定义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;
    }
}

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

<similarity class="myorg.mypackage.CustomSimilarity"/>