【发布时间】: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
如果我使用复合查询,我需要知道 Lucene 如何对结果集中的记录进行排序。
看起来它使用“分数”值对精确查询进行排序,并按字典顺序对范围查询进行排序。但是如果查询看起来像
q = type:TAG OR type:POST AND date:[111 to 999]
【问题讨论】:
标签: search solr lucene full-text-search cloudant
您将逻辑搜索和评分混合在一起。当您传递date:[111 to 999] 之类的查询时,Lucene 会搜索日期在指定范围内的所有文档。但是您没有就如何对它们进行排序给出任何建议-日期 111 比 555 更适合您吗?还是701比398好? Lucene 对此一无所知,因此所有找到的文档的分数都是相同的。只是为了进行排序,Lucene 按字典顺序对结果进行排序,但这主要是实现的细节,而不是一些关键思想。
另一方面,如果您通过查询传递一些其他参数 - 无论是关键字还是标签 - Lucene 可以应用其similarity algorithm 并在结果中为不同的文档分配不同的分数。您可以在 Lucene 的评分here 上找到更多信息。
所以,给你一个简短的回答:Lucene 按分数对结果进行排序,只有当 2 个文档的分数相同时,它才会使用其他类型的排序选项,如字典顺序。
【讨论】: