【问题标题】:How to apply default sorting in lucene on equal scores?如何在相等的分数上应用 lucene 中的默认排序?
【发布时间】:2009-11-09 10:10:52
【问题描述】:

早安,

如果我有例如具有以下字段的文档

Person_name - Birthday
Jordan - 2009-06-15
Marc - 2009-01-01
Marcos - 2009-01-01
Marcissh_something_something - 2009-06-15
Marcos - 2009-12-31

在搜索 Person_name:Marc* 时,我得到了以下分数(这里的分数是假设的)

Person_name - Birthday - Score
Jordan - 2009-06-15 - 0.0
Marc - 2009-01-01 - 1.0
Marcos - 2009-01-01 - 0.8
Marcissh_something_something - 2009-06-15 - 0.1
Marcos - 2009-12-31 - 0.8

我怎样才能检索结果,使得结果首先按相关性排序,然后假设相同的相关性(分数)按生日降序排序......这样结果是

Person_name - Birthday - Score
Marc - 2009-01-01 - 1.0
Marcos - 2009-12-31 - 0.8
Marcos - 2009-01-01 - 0.8
Marcissh_something_something - 2009-06-15 - 0.1

谢谢

【问题讨论】:

    标签: lucene sorting


    【解决方案1】:

    我本来打算推荐一个 ScoreDocComparator,但我发现它现在已被弃用。您可以使用FieldComparator。您需要创建一个TopFieldCollector 并根据您的意愿定义它的Sort。我相信这是相当新的,因为我找不到一个很好的例子。

    【讨论】:

    【解决方案2】:

    尝试检查搜索结果,然后自己对得分相同的结果进行排序。为此,您可以使用比较器来比较分数和搜索结果的自然字段。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-22
      • 2015-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-19
      • 2020-05-22
      • 2016-05-15
      • 2011-08-19
      相关资源
      最近更新 更多