lucene.net排序:Lucene相关度排序的调整



Lucene搜索结果默认按相关度排序这个相关度排序是基于内部Score和DocIDScore又基于关键词内部评分和做索引时boost默认Score高排前面如果Score再按索引顺序先索引排前面那么有人问了如果我要先索引排后面如何办呢?隐士研究了源码后发现这是相当简单事情以下代码基于Lucene 2.0

看Sort默认构造相关度就是SortField.FIELD_SCORE和SortField.FIELD_DOC组合

java 代码
/**
* Sorts by computed relevance. This is the same sort criteria as calling
* {@link Searcher#search(Query) Searcher#search}without a sort criteria,
* _disibledevent= reverse;
}

由此可见只要构造个SortField就可以实现我们要功能请看:

java 代码
// 评分降序评分样时后索引排前面
SortField { SortField.FIELD_SCORE, SortField(null, SortField.DOC, true) }

// 评分升序评分样时后索引排前面呵呵此为最不相关排前面挺有趣
SortField { SortField(null, SortField.SCORE, true), SortField(null, SortField.DOC, true) }

呵呵只要将此SortField作为参数传入Sort构造得到Sort个instance将此instance传入searcher.search(query, sort)即可得到了期望结果
Tags:  lucene.net luceneinaction lucene lucene.net排序

延伸阅读

最新评论

发表评论