从头开始在lucene中排序
Sort in lucene by the start
我尝试对 Lucene 搜索进行排序,但找不到更好的结果排序方法。
我首先想要以我的表达式开头的结果,次要顺序是按字母顺序排列的。
在Lucene中有什么方法可以通过启动排序?
我尝试使用自定义收集器,但我不确定它是否正确。
谢谢。
在 Lucene 中排序通常是一种不好的做法,如果您正在搜索的字段上排序(并且使用您正在搜索的精确表达式)- Lucene 应该使用它为您排序结果评分算法。
现在,如果我们把它放在一边,当您打开 IndexSearcher 并准备使用 search() 时,您可以使用此方法:search(Query query, int n, Sort sort) 并实施 Sort class 来定义您的排序策略。
此致,
谢谢,我点了一个排序:
新排序(新排序字段(fieldToSort,SortField.Type.STRING,假));
然后用 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);
}
});
非常感谢。
我尝试对 Lucene 搜索进行排序,但找不到更好的结果排序方法。 我首先想要以我的表达式开头的结果,次要顺序是按字母顺序排列的。
在Lucene中有什么方法可以通过启动排序?
我尝试使用自定义收集器,但我不确定它是否正确。
谢谢。
在 Lucene 中排序通常是一种不好的做法,如果您正在搜索的字段上排序(并且使用您正在搜索的精确表达式)- Lucene 应该使用它为您排序结果评分算法。
现在,如果我们把它放在一边,当您打开 IndexSearcher 并准备使用 search() 时,您可以使用此方法:search(Query query, int n, Sort sort) 并实施 Sort class 来定义您的排序策略。
此致,
谢谢,我点了一个排序: 新排序(新排序字段(fieldToSort,SortField.Type.STRING,假));
然后用 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);
}
});
非常感谢。