java - 为什么 Solr 不按最大相似度因子进行排名?

标签 java solr lucene

我创建了一个自定义相似性类,我希望 Solr 按 coord() 进行排名。在我的结果中,带有此调试查询结果的文档

 0.0 = (MATCH) weight(text:现在 in 0) [MyNewSimilarityClass], result of:
      0.0 = score(doc=0,freq=1.0 = termFreq=1.0
         ), product of:
        0.0 = queryWeight, product of:
          0.0 = idf(docFreq=103081, maxDocs=4060152)
          0.0 = queryNorm
        0.0 = fieldWeight in 0, product of:
          0.0 = tf(freq=1.0), with freq of:
            1.0 = termFreq=1.0
          0.0 = idf(docFreq=103081, maxDocs=4060152)
          1.0 = fieldNorm(doc=0)
  1.43425728E8 = coord(2/167)

排名高于具有此调试查询结果的文档

 0.0 = (MATCH) weight(text:中国 in 5) [MyNewSimilarityClass], result of:
      0.0 = score(doc=5,freq=1.0 = termFreq=1.0),
        product of:
        0.0 = queryWeight, product of:
          0.0 = idf(docFreq=39366, maxDocs=4060152)
          0.0 = queryNorm
        0.0 = fieldWeight in 5, product of:
          0.0 = tf(freq=1.0), with freq of:
            1.0 = termFreq=1.0
          0.0 = idf(docFreq=39366, maxDocs=4060152)
          1.0 = fieldNorm(doc=5)
  8.9641069E8 = coord(5/167)

除了 coord() 因子之外,两者都是相等的,为什么不将较高的结果 coord() 因子放在排名的第一位?

最佳答案

由于您的其他评分因素为零,因此两个文档的总分为零/0(这是首先显示的值)。评分(主要)是每个术语的乘积(而不是相加)。

参见Lucene's Practical and Conceptual Scoring Formula .

关于java - 为什么 Solr 不按最大相似度因子进行排名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25369347/

相关文章:

java - Android - JSONException 没有值(value)

Java 灰度图像

java - Hibernate with jpa 不会在 Wildfly 中自动创建表

javascript - 如何将日期范围字符串转换为可用的 JSON?

java - Solr - 让 Java 运行时遇到问题

ruby-on-rails - 用太阳黑子重新索引一个特定的记录

Solr 搜索查询方面仅返回 100 个结果

java - Web 服务上的空指针异常

hibernate - Lucene 的 ClassCastException

java - 使用 Lucene 分析器进行 QueryDSL 和 Hibernate 搜索