【问题标题】:How does Lucene order data in composite queries?Lucene 如何在复合查询中对数据进行排序?
【发布时间】:2012-08-04 12:42:10
【问题描述】:

如果我使用复合查询,我需要知道 Lucene 如何对结果集中的记录进行排序。

看起来它使用“分数”值对精确查询进行排序,并按字典顺序对范围查询进行排序。但是如果查询看起来像

q = type:TAG OR type:POST AND date:[111 to 999]

【问题讨论】:

    标签: search solr lucene full-text-search cloudant


    【解决方案1】:

    您将逻辑搜索评分混合在一起。当您传递date:[111 to 999] 之类的查询时,Lucene 会搜索日期在指定范围内的所有文档。但是您没有就如何对它们进行排序给出任何建议-日期 111 比 555 更适合您吗?还是701比398好? Lucene 对此一无所知,因此所有找到的文档的分数都是相同的。只是为了进行排序,Lucene 按字典顺序对结果进行排序,但这主要是实现的细节,而不是一些关键思想。

    另一方面,如果您通过查询传递一些其他参数 - 无论是关键字还是标签 - Lucene 可以应用其similarity algorithm 并在结果中为不同的文档分配不同的分数。您可以在 Lucene 的评分here 上找到更多信息。

    所以,给你一个简短的回答:Lucene 按分数对结果进行排序,只有当 2 个文档的分数相同时,它才会使用其他类型的排序选项,如字典顺序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      相关资源
      最近更新 更多