我正在使用这样的Lucene.Net
查询
(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)
我想要Lucene.Net
按顺序排列的结果PropertyId
。例如,我通过的第一条记录应该是PropertyId
25 的 1 秒和 5 的第三条记录。但目前Lucene.Net
以不同的方式排列结果集。
我正在使用这样的Lucene.Net
查询
(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)
我想要Lucene.Net
按顺序排列的结果PropertyId
。例如,我通过的第一条记录应该是PropertyId
25 的 1 秒和 5 的第三条记录。但目前Lucene.Net
以不同的方式排列结果集。
查询中字段的顺序对排序没有影响。
有两种方法可以实现您正在寻找的排序:
在查询中使用提升。您可以将 PropertyID:1 提高到高于其他匹配项,以便这些匹配项得分更高,从而首先出现在结果中,然后将 PropertyID:2 得分第二高,等等。例如:
(PropertyID:1^5 OR PropertyID:25^4 OR PropertyID:5^3 OR PropertyID:10^2 OR PropertyID:15)
这很容易实现,但如果您可能无法正常工作'在您的查询中包含其他标准,因为其他标准会影响评分。
通过您自己的 Comparator 类实现自定义排序。这可能需要相当多的工作,特别是考虑到网络上缺乏用于执行此操作的资源,但是它可以让您最大程度地控制您的排序。这是一个自定义比较器的示例,用于按字母顺序对字符串值进行排序,这可能是您开始的好地方。