当前位置: 首页 > news >正文

从零开始搭建搜索推荐系统(五十四)多路召回之万剑归宗

聊的不止技术。跟着小帅写代码,还原和技术大牛一对一真实对话,剖析真实项目筑成的一砖一瓦,了解最新最及时的资讯信息,还可以学到日常撩妹小技巧哦,让我们开始探索主人公小帅的职场生涯吧!

(PS:本系列文章以幽默风趣风格为主,较真侠和杠精请绕道~)


一、奶茶引发的血案

(会议室里,行服小姐姐把笔记本往桌上一拍,屏幕上是密密麻麻的搜索日志)
行服姐姐:"小帅!你自己看看!用户搜'朝阳区低糖芝士草莓冰沙',你家系统给我推的都是什么鬼?"

小帅(缩在椅子角落):"姐...这不是精准匹配了'草莓冰沙'吗?你看第三家店..."
行服姐姐(冷笑):"呵,推了家50公里外的店铺,芝士用的是植物奶油,糖度根本不能选!用户投诉都炸了!"

江华(嗑着瓜子飘过):"早说了,你这破ES单路召回就像用渔网捞金鱼——漏的比捞的多!"
老胡(端着枸杞茶微笑):"该上多路召回了,就像火锅调料台,让不同策略各显神通。"


二、什么是多路召回

1. 单路召回困境

想象你在奶茶店只许说一个关键词:

  • 你说"芝士草莓" → 店员只给含完整词组的饮品
  • 实际想喝:低糖、真芝士、5公里内能送达

2. 多路召回哲学

如同老中医开方:

  • 君药​(主策略):精准关键词匹配(保相关性)
  • 臣药​(辅策略):语义扩展/同义词(防漏网)
  • 佐使​(辅助策略):热销度/地理位置(提体验)

3. 技术隐喻

单一召回 ≈ 独木桥  
多路召回 = 立交桥  
      ↓  
并行通道各司其职:  
   ├─ 关键词高速:字面匹配  
   ├─ 语义国道:意图理解   
   └─ 热销乡道:流行度兜底  

三、奶茶订单里的多路召回

(小帅在代码注释里写下真实案例)

场景:用户搜索 "望京低卡芝士葡萄茶"

召回策略配置示例
// 多路召回DSL核心结构  
"query": {  
  "bool": {  
    "should": [  
      { // 第一路:精准关键词(必须满足)  
        "match_phrase": {  
          "product_name": {  
            "query": "芝士葡萄茶",  
            "boost": 3.0 // 权重加成  
          }  
        }  
      },  
      { // 第二路:语义扩展(相关即可)  
        "match": {  
          "product_name.synonyms": { // 同义词字段  
            "query": "低卡 芝士 葡萄",  
            "operator": "or",  
            "boost": 1.5  
          }  
        }  
      },  
      { // 第三路:热销兜底(防止冷启动)  
        "term": {  
          "is_hot": {  
            "value": true,  
            "boost": 0.8  
          }  
        }  
      },  
      { // 第四路:地理围栏(硬性过滤)  
        "geo_distance": {  
          "distance": "5km",  
          "location": "39.9924,116.4682",  
          "boost": 2.0  
        }  
      }  
    ],  
    "minimum_should_match": 1 // 至少命中一路  
  }  
}  
策略效果可视化
原始结果(单路召回):  
[  
  "芝士葡萄茶(植物奶油)" ← 10公里外  
  "低卡柠檬茶" ← 关键词不全  
]  

多路召回结果:  
[  
  "真芝士低卡葡萄冰沙" ← 命中所有条件(1km内)  
  "网红芝士葡萄爆款" ← 语义+热销(3km内)  
  "低糖芝士水果茶" ← 语义扩展(含葡萄)  
]  

四、技术深潜:万剑归宗的秘密

1. 权重调参玄学

老胡的调参口诀:

  • 精准匹配要给足面子(权重3倍起)
  • 语义扩展不能喧宾夺主(1.5倍封顶)
  • 热销兜底要像备胎(永远小于1)

2.动态策略编排

// 根据用户类型切换策略组合  
if (isVIP用户) {  
   策略组.增加("历史偏好召回");  
   策略组.提升("地理位置权重");  
} else {  
   策略组.提升("热销召回权重");  
}  

3. 冷启动保护机制

当新店铺上线时:

  • 前3天强制开启"热销+邻近"双路召回
  • 7天后根据CTR数据动态降权

未完待续…


文章转载自:

http://RwtnkbcP.fpyLL.cn
http://nYwubi9O.fpyLL.cn
http://1HSGyvQ6.fpyLL.cn
http://8TCrYpRs.fpyLL.cn
http://Gin2FVS1.fpyLL.cn
http://0esNuOfL.fpyLL.cn
http://s018XFYn.fpyLL.cn
http://yA58Cf22.fpyLL.cn
http://WgRPKsav.fpyLL.cn
http://8je7jfrN.fpyLL.cn
http://R7M2AWjF.fpyLL.cn
http://pdhbg6D0.fpyLL.cn
http://dNSqu3il.fpyLL.cn
http://t0PjVKdU.fpyLL.cn
http://apeF9hUv.fpyLL.cn
http://Jmc6PJ1S.fpyLL.cn
http://FT88PzpM.fpyLL.cn
http://J6wc4WyR.fpyLL.cn
http://azCOpO0T.fpyLL.cn
http://LiP4zDrs.fpyLL.cn
http://iX82Sij5.fpyLL.cn
http://k70LqAbX.fpyLL.cn
http://y0NGdsFn.fpyLL.cn
http://4xdfwQ3i.fpyLL.cn
http://nL0Fzq22.fpyLL.cn
http://iSDQTThi.fpyLL.cn
http://desWMqmO.fpyLL.cn
http://woZgikAU.fpyLL.cn
http://Yz2rWc31.fpyLL.cn
http://SUFTrSy2.fpyLL.cn
http://www.dtcms.com/a/66045.html

相关文章:

  • 树莓科技(成都)集团:如何铸就第五代产业园标杆
  • Redis内存淘汰策略
  • 【C++】每日一练(有效的括号)
  • 【如何使用云服务器与API搭建专属聊天系统:宝塔面板 + Openwebui 完整教程】
  • 【Python办公】Excel通用匹配工具(双表互匹)
  • Android 自定义蓝牙扫描动画:多波浪扩散效果
  • vue启动 localhost无法访问
  • 了解一下HTTP的短连接和长连接
  • 计算机视觉算法实战——手势识别(主页有源码)
  • Linux Shell脚本-实现账户库数据同步到交易库
  • kvm 创建虚拟机核心分析
  • 双指针算法专题之——复写零
  • CLR中的类型转换
  • 玩转python:通俗易懂掌握高级数据结构:collections模块之deque
  • C++中类对象作为类成员(对象成员/成员对象)的一些注意事项
  • vue2的webpack(vue.config.js) 怎么使用请求转发 devServer.proxy
  • AGI大模型(5):提示词工程
  • ubuntu20.04
  • 铁人三项(第五赛区)_2018_rop题解
  • 《算法笔记》8.1小节——搜索专题->深度优先搜索(DFS)问题 D: 【递归入门】n皇后 问题(原始的8皇后问题)
  • 我又又又又又又更新了~~纯手工编写C++画图,有注释~~~
  • 【C#】使用DeepSeek帮助评估数据库性能问题,C# 使用定时任务,每隔一分钟移除一次表,再重新创建表,和往新创建的表追加5万多条记录
  • USER与多组织关联的SQL查询以及几个关键函数用法
  • ​面向对象与面向过程编程:从概念到实战的深度解析
  • ROS学习过程(一)
  • unity几种设计模式(自用)
  • 【复习】补充
  • Cookie与Session详解
  • C++ string
  • ES6(1) 简介与基础概念