【问题标题】:Is it possible to get Lucene scoring as a number between 0 and 1?是否可以将 Lucene 评分作为 0 到 1 之间的数字?
【发布时间】:2021-03-19 05:32:28
【问题描述】:

似乎这个数字可以远高于或低于 1,而不是在 0-1 的范围内。 Neo4j 使用 Lucene 全文搜索,分数不在 0-1 范围内。这在 Lucene 中是预期的吗?

【问题讨论】:

标签: neo4j lucene


【解决方案1】:

我相信 Lucene 的默认得分确实在 0 到 1 之间,但是一旦涉及到提升或其他自定义得分,那么得分值可以是任何适合浮点数的正值。

但是,您可以轻松地将分数标准化为 0 到 1 的范围,方法是将每个命中的分数除以查询中任何命中的最大分数,如 StackOverflow answer 所述。

【讨论】:

  • RonC,在上面的示例中可以将其转换为 (0,1] 的范围,但是它并没有真正说明查询与文档的相关性或相似性。最大浮点数是总是 1,即使排名靠前的文档与查询有点相似。我希望浮点数能真正表明查询与文档的相似程度。如果查询是“ab”,排名靠前的文档是“axxxxxyb”,他们几乎没有“相似”,分数应该是 0.02,如果排名靠前的 doc 'abc' 或 'cab',那么分数可能高达 0.9。这样浮动真的很相似。
  • 我明白了。您真正需要的是一种让 Lucene 在 0 到 1 的 absolute 范围内对文档进行评分的方法,其中 0 是“根本不匹配”,1 是“完美匹配”。我需要创建自己的自定义评分来做到这一点,并且您必须定义“完美匹配”的含义。假设一个文档包含搜索短语一次,另一个包含 3 次,另一个文档包含 5 次。每个人应该得到什么分数?即使包含它 5 次也不能是绝对比例的 1,因为理论上某些文档可以包含更多次。
猜你喜欢
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2016-02-10
  • 2016-07-21
  • 1970-01-01
  • 2020-07-02
  • 2016-03-12
  • 2016-11-29
相关资源
最近更新 更多