1

我正在使用这样的Lucene.Net查询

(PropertyID:1 OR PropertyID:25 OR PropertyID:5 OR PropertyID:10 OR PropertyID:15)

我想要Lucene.Net按顺序排列的结果PropertyId。例如,我通过的第一条记录应该是PropertyId25 的 1 秒和 5 的第三条记录。但目前Lucene.Net以不同的方式排列结果集。

4

1 回答 1

0

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

有两种方法可以实现您正在寻找的排序:

  1. 在查询中使用提升。您可以将 PropertyID:1 提高到高于其他匹配项,以便这些匹配项得分更高,从而首先出现在结果中,然后将 PropertyID:2 得分第二高,等等。例如: (PropertyID:1^5 OR PropertyID:25^4 OR PropertyID:5^3 OR PropertyID:10^2 OR PropertyID:15)这很容易实现,但如果您可能无法正常工作'在您的查询中包含其他标准,因为其他标准会影响评分。

  2. 通过您自己的 Comparator 类实现自定义排序。这可能需要相当多的工作,特别是考虑到网络上缺乏用于执行此操作的资源,但是它可以让您最大程度地控制您的排序。这是一个自定义比较器的示例,用于按字母顺序对字符串值进行排序,这可能是您开始的好地方。

于 2013-02-15T18:33:29.500 回答