Lucene的排序搜索

本文深入探讨了Lucene排序搜索机制,包括如何通过设置促进因子提高文档相关度得分,以及如何实现自定义排序,如按价格进行升序或降序排列。通过实例代码演示了如何在Lucene文档中设置特定字段的提升得分,并展示了使用IndexSearcher的search方法实现按特定属性排序的方法。
摘要由CSDN通过智能技术生成

Lucene的排序搜索


默认根据文档查询的相关度得分来进行排序,得分越高,排名越前。

  1、设置Lucene的文档对象Document中的一个促进因子,可以提高相关度得分。

Book book = new Book();
book.setId(2);
book.setTitle("建筑的永恒之道");
book.setAuthor("亚历山大");
book.setContent("《建筑的永恒之道》提出了一个关于建筑设计、建筑和规划的新的理论、思想.");
book.setPrice(65.5F);
         
Document doc = new Document();
doc.add(new Field("id",String.valueOf(book.getId()),Store.YES,Index.NOT_ANALYZED));
doc.add(new Field("title",book.getTitle(),Store.YES,Index.ANALYZED));
doc.add(new Field("author",book.getAuthor(),Store.YES,Index.ANALYZED));
doc.add(new Field("price",String.valueOf(book.getPrice()),Store.YES,Index.ANALYZED));
doc.add(new Field("content",book.getContent(),Store.YES,Index.ANALYZED));
         
//设置促进得分因子值,值越大,得分越高.默认值是1.0F.
doc.setBoost(2.0F);

2、自定义排序。

  比如我们需要按图书的价格排序。我们需要用到IndexSearcher的search方法。search方法有很多的重载。我们使用search(Query query,int n,Sort sort)这个方法。

  search(Query query,int n,Sort sort)方法参数解释:

  query  -----> Lucene的查询对象。

  n        -----> 返回前n条记录。

  sort    -----> 排序对象。


//按价格升序排序
//Sort sort = new Sort(new SortField("price",SortField.FLOAT));
         
//按价格降序排序
Sort sort = new Sort(new SortField("price",SortField.FLOAT,true));
         
//可按多个属性排序
//Sort sort1 = new Sort(new SortField("price",SortField.FLOAT),new SortField("id",SortField.FLOAT));
         
//排序搜索,返回符合条件的前10条记录. TopFieldDocs是TopDocs的子类
TopFieldDocs topFieldDocs = indexSearcher.search(query,10, sort);
//搜索结果总数量
int totalCount = topFieldDocs.totalHits;
// 搜索的结果列表
ScoreDoc[] scoreDocs = topFieldDocs.scoreDocs; 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值