Lucene如何在复合查询中订购数据?

时间:2012-08-04 12:42:10

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

如果我使用复合查询,我需要知道Lucene如何命令结果集中的记录。

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

,该怎么办?
q = type:TAG OR type:POST AND date:[111 to 999]

1 个答案:

答案 0 :(得分:1)

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

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

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