lucene-相关度排序

Lucene的排序基于相关度得分,得分高的文档排列在前。得分受查询条件、文档中关键字出现次数及位置影响。可以通过设置Boost值在索引时调整文档权重,或使用Sort对象对不同域进行排序。例如,Boost可通过Document和Field的setBoost()方法设定,Sort则支持基于域的多形式排序。注意,String和Int类型的比较规则不同。SEO优化中,可通过关键字优化、论坛互动和点击率提升文档得分。
摘要由CSDN通过智能技术生成

知识点的梳理:

  • lucene 为查询出来的结果(document)都打一个分,得分越高,排列的顺序越靠前,我们可以自己去干预..

       

  • 相关度排序
    • 相关度排序得分
      • 相关度得分是在查询时根据查询条件实进计算出来的;
      • 如果索引库数据不变,查询条件不变,查出的文档得分也不变;
    • 注意事项
      • 排序我们可以通过设置这个权重值来影响他的得分;
      • 得分跟命中的次数有关系;
      • 这个得分跟文档出现的搜索关键字的次数或者位置有关系...
    • Boost和Sort
      • 通过改变文档Boost值来改变排序结果:
        • Boost是指索引建立过程中,给整篇文档或者文档的某一特定属性设定的权值因子,在检索时,优先返回分数高的。通过Document对象的setBoost()方法和Field对象的setBoost()方法,可以分别为Document和Field指定Boost参数。不同在于前者对文档中每一个域都修改了参数,而后者只针对指定域进行修改。默认值为1F,一般不做修改。
      • 使用Sort对象定制排序:
        • Sort支持的排序功能以文档当中的域为单位,通过这种方法,可以实现一个或者多个不同域的多形式的值排序。
  • Boost示例
    • 测试代码

public class TestSort {

public static void main(String[] args) throws IOException, ParseException {

IndexSearcher indexSearcher = LuceneUtils.getIndexSearcher();

String keywords = "梦想";//查询"梦想"

String[] fields = { "content"};

QueryParser quertParser = new MultiFieldQueryParser(LuceneUtils.getVersion(),fields,LuceneUtils.getAnalyzer());

//条件

Query query = quertParser.parse(keywords);

TopDocs topDosc = indexSearcher.search(query, 50);

ScoreDoc[] scoreDocs = topDosc.scoreDocs;

for (ScoreDoc scoreDoc : scoreDocs

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值