使用lucene的多字段排序--回复网友BUFFON

网友BUFFON问了我一个问题 ,问题地址可以点此 链接

我们来看看这个问题
怎样实现在按一个或多个FEILD的匹配度排序的同时又按一个FIELD的顺序排序

以及BUFFON想要达到的效果:
----------------------------------
|   field1         |        field2       |
-----------------------------------
|  XXXXXXX1  |    333                |
-----------------------------------
|  XXXXXXX2  |    333                |
-----------------------------------
|  XXXXXXX3  |    222                |
-----------------------------------
|  XXXXXXX4  |    333                |
-----------------------------------
|  XXXXXXX5  |    555                |
-----------------------------------
然后我想再按field2进行分组和归类,使得到的结果变成这样
----------------------------------
|   field1         |        field2       |
-----------------------------------
|  XXXXXXX1  |    333                |
-----------------------------------
|  XXXXXXX2  |    333                |
-----------------------------------
|  XXXXXXX4  |    333                |
-----------------------------------
|  XXXXXXX3  |    222                |
-----------------------------------
|  XXXXXXX5  |    555                |
-----------------------------------


我觉得这个问题的提法有些问题,
1)好像不存在关于某个field的相关度的说法,只有整条记录的相关度,
2)你并没有对多字段排序的需求

看了你的问题,我觉得你想要的是:
点击某个字段,然后
先按点击字段排序再按匹配度排序

解决办法
new  Sort( new  SortField[] {
    new SortField("orderby"),
    SortField.FIELD_SCORE
}

创建一个sort实例,构造方法见上面的代码,传到seach方法。代码中的 orderby就是你点击的filed名,更准确的说是你建索引时的名字。

这个问题给我们的提示就是对于复杂的排序,应该使用Sort类的构造方法

这个构造方法可以解决多字段排序,可以指定

1)按哪个或哪些字段排
2)排序字段类型
3)升序或者降序
4)记录相关度
5)建索引时的索引顺序

其他的有关细节我就不再赘述了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值