elasticsearch sort评分

根据项目需求需要对搜索词进行IK分词后,然后按照是否可售卖>是否推荐>发布日期进行排序,如下所示

BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
boolQueryBuilder.must(QueryBuilders.multiMatchQuery("酒店","主标题","副标题"));
SearchRequestBuilder searchRequestBuilder = ElasticsearchConfiguration.getInstance().getClient()
                .prepareSearch("test")
                .setTypes("test")
                .setQuery(boolQueryBuilder)
                .addSort(SortBuilders.fieldSort(是否可售卖).order(SortOrder.DESC))
                .addSort(SortBuilders.fieldSort(是否推荐).order(SortOrder.DESC))
                .addSort(SortBuilders.fieldSort(发布日期).order(SortOrder.ASC));
对执行的结果进行核对,发现排序不是自己想要的,而且获得评分为空

ik分词器分词后,然后按照sort设置的字段进行排序,但是此时无法用到分词打分。查阅官网发现分词后的_score可进行排序。意思就是分词后得到的_score可作为一个字段和sort里面的字段一起进行排序

https://www.elastic.co/guide/en/elasticsearch/reference/current/search-request-sort.html

		.addSort(SortBuilders.fieldSort(是否可售卖).order(SortOrder.DESC))
                .addSort(SortBuilders.fieldSort(是否推荐).order(SortOrder.DESC))
		.addSort(SortBuilders.scoreSort().order(SortOrder.DESC))
                .addSort(SortBuilders.fieldSort(是否推荐).order(SortOrder.ASC));
实现后可关注下排序,此时应该更加合理了


       


  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值