ES电商条件排序 无解

首先按照匹配度排序 然后同一类型的匹配度再按照时间排序。比如用户输入意大利红酒。词库里面分别有意大利和红酒的词。当用户输入意大利红酒的时候搜索结果意大利红酒在前面,然后分别带意大利和红酒的标题在后面,那接下来要把最匹配到意大利红酒的按照时间排序。要怎么做。产品种类繁多,用户输入繁多。所以单独程序去为意大利红酒这几个字设置高权重是不现实的,有没有解决这一需求的统一的算法
已邀请:

shinehiy

赞同来自: arthuryoung

两种方案,1. 集群开一下script,写脚本自己排; 2. 抽出来,自己计算属性,排序返回,就是说es外面再套一层,因为有的时候要做boost,用es自己的机制确实不好使

hailin0

赞同来自:

sort不是本身可以多字段排序的吗

huigy

赞同来自:

是的,但是排出来的效果不太好

i79627313

赞同来自:

用script实现

imp

赞同来自:

那还有根据上架时间  好评差评 价格适宜程度  用户点击次数 月销量再来排 

occultskyrong - 程序猿

赞同来自:


Elasticsearch Reference [5.5] » Query DSL » Compound queries » Function Score Query


跟我类似,我还有城市筛选。。
先用function score,把需要筛选的字段进行权重加成,不同字段给不同的权重。。
 
再加一个反馈,用户点击某个商品的时候,反馈给搜索,把某个关键词对应的结果的权重提高下。
没精力写一个总权重,有精力每个关键词给定一个权重。。
下次用户搜索某个关键词的时候,根据某个关键词给权重。。。
 
搜索,用户想要的才是关键。。不是你给他什么,而是他想要什么。。
 
所以我觉得反馈才是有意义的。。。

300斤的胖子

赞同来自:

请问楼主怎么解决的,我现在也遇到同样的问题

要回复问题请先登录注册