我尝试对Lucene搜索进行排序,但我找不到更好的方法来对结果进行排序。 我首先要的是以表达式开头的结果,次要顺序是按字母顺序排列的。
有什么办法可以在Lucene开始排序吗?
我尝试使用自定义收集器,但我不确定它是否正确。
感谢。
答案 0 :(得分:0)
在Lucene中进行排序通常是一种不好的做法,如果你要对你要搜索的字段进行排序(以及你正在搜索的精确表达式) - Lucene应该使用其评分算法为你排序结果
现在,如果我们把它放在一边,当您打开 IndexSearcher 并即将使用搜索()时,您可以使用此方法:搜索(查询查询,整理,排序排序)并实现一个Sort类来定义您的排序策略。
问候,
答案 1 :(得分:0)
谢谢,我点了一个排序: new Sort(new SortField(fieldToSort,SortField.Type.STRING,false));
然后使用Collections.sort从Lucene得到的结果。
Collections.sort(results, new Comparator<View>(){
public int compare(View v1, View v2){
if(v1.startsWith(text)) {
if(v2.startsWith(text)){
return v1.compareTo(v2);
} else {
return -1;
}
}else if(v2.startsWith(text)){
return 1;
}
return v2.compareTo(v1);
}
});
非常感谢。