设置优先级导致
问题描述:
我使用的是Lucene.Net
这样的查询设置优先级导致
(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)
我想在PropertyId
顺序Lucene.Net
结果。我通过例如第一条记录应为PropertyId
1秒为25,第三条为5.但目前Lucene.Net
以不同的方式排列结果集。
答
查询中的字段顺序对排序没有影响。
有2种方式来实现你要找的排序:在您的查询
使用boosts。您可以提高PropertyID:1高于其他值,以便这些比赛的得分更高并因此出现在结果中的第一位,然后得分PropertyID:第二高的等等。例如:
(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用于按字母顺序排序字符串值,这可能是您开始的一个好地方。
你能说明它返回的是什么顺序吗? – rae1 2013-02-15 13:09:27
这是随机的顺序,所以每次返回不同的顺序。 – Ravi 2013-02-16 10:16:11