2013-02-14 162 views
1

我使用的是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以不同的方式排列结果集。

+0

你能说明它返回的是什么顺序吗? – rae1 2013-02-15 13:09:27

+0

这是随机的顺序,所以每次返回不同的顺序。 – Ravi 2013-02-16 10:16:11

回答

0

查询中的字段顺序对排序没有影响。

有2种方式来实现你要找的排序:在您的查询

  1. 使用boosts。您可以提高PropertyID:1高于其他值,以便这些比赛的得分更高并因此出现在结果中的第一位,然后得分PropertyID:第二高的等等。例如: (PropertyID:1^5 OR PropertyID:25^4 OR PropertyID:5^3 OR PropertyID:10^2 OR PropertyID:15)这很容易实现,但可能无法正常工作如果您在查询中包含其他条件,则其他条件会影响评分。

  2. 通过您自己的Comparator类实现自定义排序。这可能需要相当多的工作,尤其是考虑到网络上缺乏资源来完成这一任务,但是它可以让您对排序进行最好的控制。这里是an example of a custom Comparator用于按字母顺序排序字符串值,这可能是您开始的一个好地方。