外卖系统中的搜索架构:主搜与垂搜详解
当我们打开外卖APP,核心诉求就是“找吃的”。这个看似简单的过程,背后其实由两套不同的搜索系统接力完成:主搜(全局搜索) 和 垂搜(垂直搜索)。从技术实现上看,这是一个典型的 “召回-粗排-精排-重排” 的工业级搜索架构。
一、主搜:负责“猜你想要什么”的快速导览
主搜的技术目标是在百毫秒内,从亿级商品和百万级商家中,快速筛选出千级别相关结果,并进行智能排序。这个过程主要分为召回和排序两大阶段。
1. 召回阶段:多路并发,广撒网
- 倒排索引:这是搜索引擎的核心技术。系统预先建立“关键词->商家ID列表”的索引库。搜索“酸菜鱼”时,直接通过倒排索引找到所有相关商家。
- 多路召回策略:系统并行执行多个召回通道:
- 文本召回:匹配商家名、菜品名中的关键词
- 语义召回:使用BERT等语义模型,理解“番茄”和“西红柿”的语义关联
- 向量召回:将搜索词和商品转换为向量,通过向量相似度查找
- 热门召回:确保热门商家不被遗漏
- 个性化召回:基于用户历史偏好召回相似商家
2. 排序阶段:从粗排到精排
- 粗排模型:由于召回结果过多(可能上万),先用轻量级模型快速筛选至千级别。主要考虑核心特征:距离、基础销量、评分等。
- 精排模型:对粗排结果使用复杂机器学习模型进行精细排序:
# 精排模型考虑数百维特征
排序分数 = f(距离特征, 实时销量, 历史评分, 用户偏好, 商业化权重, 上下文特征)
- 实时特征:当前时段、天气、用户实时位置
- 用户画像:历史偏好、价格敏感度、口味偏好
- 商业化因素:广告出价、推广预算
- 上下文特征:搜索意图分类(找品牌?找品类?解馋?)
主搜就像一个站在美食城门口的智能接待机器人。你告诉他“我想吃酸菜鱼”,他通过内置的多种传感器(多路召回)和大脑中的AI算法(精排模型),迅速指出最优方向。
二、垂搜:负责“帮你精准筛选”的实时过滤引擎
当进入搜索结果页,垂搜开始接管。它的技术特点是实时过滤和灵活重排,基于主搜的结果进行精细化处理。
1. 技术基础:正排索引与属性存储
每个商家被存储为包含所有属性的文档:
{
"shop_id": 12345,
"shop_name": "川味坊",
"rating": 4.7,
"avg_price": 45,
"monthly_sales": 2856,
"delivery_time": 30,
"tags": ["川菜", "麻辣", "优惠券"],
"location": {"lat": 39.9042, "lng": 116.4074}
}
2. 筛选器技术实现
- 布尔过滤:每个筛选条件转化为布尔表达式
- “评分4.5以上” →
rating >= 4.5 - “人均30-50元” →
avg_price BETWEEN 30 AND 50
- 位图索引:对分类等枚举字段,使用位图技术快速求交集
- 多维度排序:支持按不同字段实时重排,底层依赖Lucene/Elasticsearch的排序能力
3. 重排机制
当用户选择“按距离排序”时,垂搜不再使用主搜的复杂模型分数,而是基于单一维度重新计算:
新排序 = sort_by(remaining_shops, 'distance')
垂搜就像是你进入美食街后遇到的专业餐厅管理系统。你提出具体需求,系统通过实时数据库查询和过滤算法,精准呈现结果。
三、技术协同:从算法到底层的完整架构
1. 完整搜索流程
用户搜索 → 查询理解 → 主搜(召回→粗排→精排) → 垂搜(属性加载→实时过滤→重排) → 前端渲染
2. 数据流与系统优化
- 缓存策略:热门搜索词的结果在Redis中缓存,减轻数据库压力
- 降级策略:当精排模型超时时,自动降级到粗排结果
- AB实验:在线测试不同排序模型的效果
- 实时反馈:用户点击行为实时反馈至模型,优化后续排序
3. 与推荐系统的融合
现代外卖搜索已超越单纯检索,融入了推荐思想:
- 混排机制:当搜索结果不足时,自动补充个性化推荐结果
- 多样性控制:避免同一品类商家过度集中,保证结果多样性
- 探索与利用:适当展示新商家,收集用户反馈数据
四、技术演进方向
当前系统仍在持续进化:
- 多模态搜索:通过菜品图片直接搜索相似商品
- 端侧智能:在手机端预加载个性化模型,提升响应速度
- 强化学习:根据长期用户满意度优化排序策略
- 联邦学习:在保护隐私的前提下利用更多用户数据
总结:技术视角的分工
- 主搜 = 倒排索引 + 多路召回 + 粗排/精排模型
- 解决“从哪里开始找”的问题
- 技术核心:相关性、智能化、响应速度
- 垂搜 = 正排索引 + 布尔过滤 + 多维度排序
- 解决“如何找到最满意的那一个”的问题
- 技术核心:精确性、实时性、用户控制
这种架构设计在工程上实现了完美的关注点分离:主搜专注“理解意图”,垂搜专注“满足要求”。它们共同构成了一个既智能又可控的外卖搜索体验,在算法复杂度和系统性能之间取得了最佳平衡。

浙公网安备 33010602011771号