如果我使用复合查询,我需要知道Lucene如何命令结果集中的记录。
看起来它使用“得分”值对精确查询进行排序,并按字典顺序对范围查询进行排序。但是,如果查询看起来像
,该怎么办?q = type:TAG OR type:POST AND date:[111 to 999]
答案 0 :(得分:1)
您将逻辑搜索和得分混合在一起。当您传递date:[111 to 999]
之类的查询时,Lucene会搜索日期在指定范围内的所有文档。但是你没有给出关于如何对它们进行排序的建议 - 对于你来说,日期比555更适合你吗?或者701比398好? Lucene对此一无所知,因此所有找到的文件的得分都是一样的。为了做出一些订单,Lucene按字典顺序对结果进行排序,但这主要是实现的细节,而不是一些关键的想法。
另一方面,如果您通过查询传递一些其他参数 - 无论是关键字还是标签 - Lucene可以应用其similarity algorithm并为结果中的不同文档指定不同的分数。您可以在Lucene的得分here上找到更多信息。
所以,给你简短的回答:Lucene按分数对结果进行排序,并且只有当2个文档的分数相同时,它才会使用其他类型的排序选项,如词典顺序。