分享好友 最新动态首页 最新动态分类 切换频道
lucene 排序 (Sort SortField 构造函数)
2024-12-26 19:37

lucene 排序 (Sort SortField 构造函数)

注意: 
  在lucene2.9中,排序的字段域必须indexed但是不能tokenized。因为虽然tokenized后虽然可以排序,但是有可能不是你想要的结果,因为tokenized可能会去除停用词或者大小写转换等。
(in Lucene 2.9 and when reading java doc for the Sort class I noticed 
it says "The field must be indexed, but should not be tokenized". 
Sorting on tokenized fields can work, but may not necessarily do what 
you expect, depending on your requirements and how the field is 
tokenized. )


Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。 

下面研究几种设置/改变检索结果排序的方法。 

1、改变Document的boost(激励因子) 
改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。 

2、改变Field的boost(激励因子) 
改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。 

3、使用Sort排序工具实现排序 
Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。 
调用sort进行排序的方法是IndexSearcher.search,例如: 
IndexSearcher.search(query,sort); 

关于Sort类,在其内部定义了6种构造方法: 
    public Sort() // 
    public Sort(SortField field)  //通过构造某个域(field)的SortField对象根据一个域进行排序 
    public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序 
    public Sort(String field) //根据某个域(field)的名称构造Sort进行排序 
    public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序 
    public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序 

4、直接使用SortField实现排序 

   关于SortField类,在其内部定义了7种构造方法: 
public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序 
public SortField (String field, int type) 
public SortField (String field, int type, boolean reverse) 
public SortField (String field, Locale locale) 
public SortField (String field, Locale locale, boolean reverse) 
public SortField (String field, SortComparatorSource comparator) 
public SortField (String field, SortComparatorSource comparator, booleanreverse) 

type对应的值分别为: 
SortField. SCORE 按积分排序 
SortField. DOC 按文档排序 
SortField. AUTO 域的值为int、long、float都有效 
SortField.STRING 域按STRING排序 
SortField..FLOAT 
SortField.LONG 
SortField.DOUBLE 
SortField.SHORT 
SortField.CUSTOM 通过比较器排序 
SortField.BYTE 

   
5、自定义排序 
最新文章
用AI造谣发50万篇引流图文,广州6人落网
南都此前曾调查利用AI造谣乱象。据此前报道,南都记者调查发现,除了ChatGPT等常用人工智能工具,南都记者通过关键词搜索,在网络上发现许多“AI洗稿”“伪原创生成器”“AI写作”等网站、小程序,其功能多样,能满足创作公众号文章、视频
抖音流量池怎么打开 抖音小店代运营
抖音流量池怎么打开?流量池主要参考评论数、转发数、抖音1数、完播率这四个维度的数据,来分析视频是否值得被推荐,想要进入流量池,还得提升这4项指标。1)评论数:A、在视频描述里,设置一些互动问题,引导用户留言评论,提升评论量。比如
Windows优化大师无广告官方版
1. 系统信息:Windows优化大师可以检测系统的硬件和软件信息,例如CPU信息、内存信息等,同时还可以查看更多系统详细信息,包括核心、内存、硬盘、网络、Internet、多媒体和其他设备等。2. 磁盘缓存:提供磁盘最小缓存、磁盘最大缓存以及缓
长安CS35PLUS着力打造智能驾趣新生活 配置超高
全新长安CS35 PLUS作为中庸稳重小型suv,这款新车在设计上无疑是非常霸气的。在外形方面,长安CS35 PLUS整体的设计时尚大气的,整个车头前脸看起来精致,全LED点亮后显得很有精神气。车身侧面的腰线依旧是长安汽车独到的线条设计,妖娆的身
复利商业销售模式怎么运营,从理论到运营的实践指南
在现代商业环境中,复利商业销售模式作为一种具有长效价值增长潜力的经营方式,逐渐受到企业的广泛关注。这种模式的核心在于通过持续积累客户价值,实现销售收入的指数级增长。一、什么是复利商业销售模式?复利商业销售模式的灵感来源于金
破解手游助手
破解手游助手,其实很简单,就是利用一些软件,把游戏安装包里面的文件进行修改。下面就给大家介绍一款可以破解手游助手的工具,它叫【手机助手】。这款APP的功能很多,而且使用起来也很方便。下面我们就来一起了解一下吧。一、下载并安装
考研订酒店有哪些注意事项
在知道自己的考试地点之后,一定要尽早预订酒店!今年的考研时间又是跟圣诞节撞个满怀,酒店肯定会供不应求。越是早点订,选择性越多,价格更优惠,而且还能有时间提前去考察酒店及酒店周边的情况。在订房时,有以下几点要注意:1.安全第一
长尾关键词挖掘工具和使用方法
很多博友说我的博客长尾关键词排名非常不错,其实我的博客压根就没有主关键词,我从建立博客到现在,一直就是做长尾关键词的排名,因为长尾关键词出现排名后,可以给我们带来海量的流量,那么今天和大家仔细说一说长尾关键词的挖掘工具和使
演员张若昀道歉:很抱歉做出了错误的行为示范
12月9日,有娱乐博主发布了一段演员张若昀随地乱丢烟头的视频。相关词条随后冲上热搜,引发热议。当晚,在个人社交平台发文道歉:“很抱歉做出了错误的行为示范!我会改正错误,严格规范自身行为,同时接受大家监督与批评。”公开资料显示
相关文章
推荐文章
发表评论
0评