请教大佬,搜索结果按某个字段进行分类,每个分类第一条结果优先展示,同一分类其他结果进行减分降权(不是过滤掉),应该怎么做呢
Elasticsearch | 作者 kyzu0021 | 发布于2023年03月23日 | 阅读数:4680
搜索结果按某个字段进行分类,每个分类第一条结果优先展示,同一分类其他结果进行减分降权(不是过滤掉)。比如搜索运动鞋,为了公平原则,保证不同店铺都能起码展示一条结果,同一店铺的第二及之后的结果进行减分降权,排名递减。请问ES应该怎么做,还是只能在业务端对搜索结果进行二次处理呢
3 个回复
charlesfang
赞同来自: wfx 、kyzu0021
https://www.elastic.co/guide/e ... .html
如果需要考虑同一类结果的排序问题,你这个属于二次排序,只能是二次处理了。es内部也有一个rescore功能,可以考虑一下,列表已经是根据_score降序排序的结果,还是得用上边的ScriptScore在rescore中处理,处理方式一致。https://www.elastic.co/guide/e ... score
YuLiGod - 小于小朋友
赞同来自: kyzu0021
这样需要两次请求,并且聚合多节点操作,可能比较慢;
从业务的角度来说,最好支持店铺可以对其运动鞋分类中的1个商品进行标记,标记后设置标记字段为1,查询时可以根据该字段进行排序并加权即可;这样店铺也可以自己选择对应的"星标商品"进行推荐;
Marquezzzz
赞同来自: