solr - 在 Solr 查询时忽略 tf/idf

标签 solr lucene

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

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

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

最佳答案

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

关于solr - 在 Solr 查询时忽略 tf/idf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825170/

相关文章:

java.io.IOException : read past EOF Lucene in Java with Eclipse

lucene - Jackrabbit 针对 UUID 运行查询

solr - Solr 短语 slop order 是否依赖?

java - 通过 Solrj 访问 Solrfacet_ranges

jquery - 带有 slider UI 的价格范围过滤器,在同一查询中包含来自 Solr 的最小值和最大值?

java - 如何读取lucene 5.5.5索引?

java - Lucene Android NoClassDefFoundError

search - ElasticSearch 中的文档相似度

solr - 了解 Lucene 领先的通配符性能

ruby-on-rails - Sunspot -- Boost 记录出现在文本早期的匹配项