真实面经题目 · 原创解析

如何设计一个基于历史搜索关键词的推荐系统?

基于历史搜索关键词的推荐系统要把用户 query 历史转成可用兴趣画像,再匹配候选内容或广告。设计重点包括 query 日志表、用户画像表、关键词标准化与类目映射表、候选物料表、曝光点击转化日志表,以及召回、排序、过滤和反馈闭环。

出现于:蚂蚁集团 · 算法

60 秒回答模板

先定义目标:用用户历史搜索关键词推断兴趣并推荐相关物料。再设计数据表:搜索日志、关键词词典、用户关键词画像、物料关键词索引、曝光点击转化日志。然后设计流程:query 清洗归一、兴趣聚合与衰减、关键词召回、排序、策略过滤。最后说明评估:CTR、CVR、覆盖率、多样性和隐私合规。

考点 关键词归一
难度 真实面经题
回答目标 讲清原理、实现和边界

深入解析

01

数据层

搜索日志表要保留能还原推荐链路的字段:user_id、request_id、原始 query、归一化 query、时间、入口场景、设备、返回结果、点击和后续转化。原始 query 用于排查和回放,归一化 query 用于稳定建模,两者权限和保留期应分开控制。

02

词典层

关键词词典不是简单字符串表,应包含 keyword_id、原始词、归一词、同义词、类目、业务状态、置信度、权重、更新时间和审核来源。它负责把同一意图的不同表达收敛到可索引的标准关键词,并支持停用、合并和回滚。

03

画像层

用户关键词画像表可按 user_id 与 keyword_id 聚合兴趣,字段包括兴趣分、搜索次数、点击转化次数、最近触发时间、时间衰减分、短期窗口分、长期窗口分和来源。这样排序时能区分临时意图和稳定偏好。

04

物料层

候选内容或广告物料表需要 item_id、关键词标签、类目、状态、质量分、投放或过滤约束、落地页信息和更新时间,并建立 keyword_id 到 item_id 的倒排索引。召回时既要命中关键词,也要检查物料状态、类目和约束是否可投。

05

流程层

流程上离线任务负责清洗 query、更新词典、聚合长期画像和物料索引;实时链路负责把最新搜索写入短期画像。请求到来时按高权重关键词召回候选,再用匹配度、用户画像、上下文、质量分和频控规则排序过滤。

06

治理层

治理层要覆盖效果和合规:记录曝光、点击、转化、实验桶和负反馈,监控 CTR、CVR、覆盖率、多样性和误推荐;对敏感词、隐私字段、过期兴趣做过滤、脱敏、最小化保存和保留期控制,用户关闭个性化后停止使用画像。

易错点

  • 只讲推荐模型,不设计表结构和字段。
  • 直接把原始 query 当标签使用,忽略分词、归一和同义词。
  • 没有时间衰减,导致过期搜索长期影响推荐。
  • 只记录点击,不记录曝光,无法正确评估 CTR 和负样本。
  • 忽略敏感词过滤、频控和用户负反馈。

面试官追问

用户关键词画像的兴趣分如何计算?

可综合搜索次数、点击转化、最近时间、query 置信度和行为类型,用时间衰减得到 keyword-user 分数。

如何区分短期搜索意图和长期兴趣?

短期兴趣使用实时或近几小时 query,长期兴趣用更长窗口聚合;排序时按场景给不同时间窗不同权重。

关键词召回后排序模型可以使用哪些特征?

可用用户关键词分、物料关键词匹配度、类目相似度、历史点击转化、上下文、质量分、频控和负反馈特征。

如何设计曝光点击转化日志支持效果评估?

必须记录 request_id、user_id、item_id、keyword_id、曝光位置、时间、点击、转化和实验桶,才能构造负样本和做 A/B 分析。

如何处理敏感关键词和隐私合规问题?

对敏感 query 做过滤、脱敏、最小化保存和保留期控制,用户可关闭个性化时要停止使用相关画像。