我正在使用Lucene.Net
这样的查询
(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)
我希望Lucene.Net
的结果按PropertyId
的顺序排列。我通过例如第一条记录应为PropertyId
1秒为25秒,第三条为5.但目前Lucene.Net
以不同方式安排结果集。
答案 0 :(得分:0)
查询中字段的顺序对排序没有影响。
有两种方法可以实现您正在寻找的排序:
在查询中使用boosts。您可以将PropertyID:1提升到高于其余值,以便这些匹配得分更高,从而首先出现在结果中,然后得分PropertyID:2秒最高等等。例如:
(PropertyID:1^5 OR PropertyID:25^4 OR PropertyID:5^3 OR PropertyID:10^2 OR PropertyID:15)
这很容易实现,但如果您在查询中包含其他条件,则可能无法正常工作,因为其他条件会影响评分。
通过您自己的Comparator类实现自定义排序。这可能需要相当多的工作,特别是考虑到网络上缺乏这样做的资源,但是它将为您提供对排序的最大控制。这里an example of a custom Comparator用于按字母顺序排序字符串值,这可能是您开始的好地方。