如何在Elasticsearch中搜索‘phone’时区分手机与手机壳?
解决电商搜索中“phone”关键词优先展示手机品类的问题
- 给品类加权提分:在搜索排序逻辑里,给「手机」品类的产品设置更高的权重。比如用Elasticsearch的话,用
function_score给对应品类的文档额外加分,示例代码:
{ "query": { "function_score": { "query": { "match": { "title": "phone" } }, "functions": [ { "filter": { "term": { "category": "手机" } }, "weight": 2 } ] } } }
这样手机品类的产品得分会直接乘以权重值,压过手机壳的得分。
- 精准匹配独立关键词:针对手机品类产品标题里的“phone”做精准匹配加权。比如手机标题常出现“XX Phone”这类独立词,而手机壳是“XX Phone Case”,可以让单独匹配“phone”的文档获得更高boost:
{ "query": { "bool": { "should": [ { "match": { "title": { "query": "phone", "boost": 1 } } }, { "term": { "title.keyword": "phone", "boost": 3 } } ] } } }
弱化品类关联词的干扰:手机壳的标题里“phone”是和“case”绑定出现的,可以给这类品类里的“phone”匹配得分做衰减处理,或者在分词阶段给“case”这类品类专属词降权。
结合用户行为优化排序:如果有用户点击数据,统计搜索“phone”时用户更倾向点击手机品类的产品,把点击量、转化率这类行为数据加入排序逻辑,让用户偏好的产品排得更靠前。
内容的提问来源于stack exchange,提问作者pytravaganza
相关产品推荐
相关产品推荐

