真实面经题目 · 原创解析
如何设计一个基于历史搜索关键词的推荐系统?
基于历史搜索关键词的推荐系统要把用户 query 历史转成可用兴趣画像,再匹配候选内容或广告。设计重点包括 query 日志表、用户画像表、关键词标准化与类目映射表、候选物料表、曝光点击转化日志表,以及召回、排序、过滤和反馈闭环。
真实面经题目 · 原创解析
基于历史搜索关键词的推荐系统要把用户 query 历史转成可用兴趣画像,再匹配候选内容或广告。设计重点包括 query 日志表、用户画像表、关键词标准化与类目映射表、候选物料表、曝光点击转化日志表,以及召回、排序、过滤和反馈闭环。
先定义目标:用用户历史搜索关键词推断兴趣并推荐相关物料。再设计数据表:搜索日志、关键词词典、用户关键词画像、物料关键词索引、曝光点击转化日志。然后设计流程:query 清洗归一、兴趣聚合与衰减、关键词召回、排序、策略过滤。最后说明评估:CTR、CVR、覆盖率、多样性和隐私合规。
搜索日志表要保留能还原推荐链路的字段:user_id、request_id、原始 query、归一化 query、时间、入口场景、设备、返回结果、点击和后续转化。原始 query 用于排查和回放,归一化 query 用于稳定建模,两者权限和保留期应分开控制。
关键词词典不是简单字符串表,应包含 keyword_id、原始词、归一词、同义词、类目、业务状态、置信度、权重、更新时间和审核来源。它负责把同一意图的不同表达收敛到可索引的标准关键词,并支持停用、合并和回滚。
用户关键词画像表可按 user_id 与 keyword_id 聚合兴趣,字段包括兴趣分、搜索次数、点击转化次数、最近触发时间、时间衰减分、短期窗口分、长期窗口分和来源。这样排序时能区分临时意图和稳定偏好。
候选内容或广告物料表需要 item_id、关键词标签、类目、状态、质量分、投放或过滤约束、落地页信息和更新时间,并建立 keyword_id 到 item_id 的倒排索引。召回时既要命中关键词,也要检查物料状态、类目和约束是否可投。
流程上离线任务负责清洗 query、更新词典、聚合长期画像和物料索引;实时链路负责把最新搜索写入短期画像。请求到来时按高权重关键词召回候选,再用匹配度、用户画像、上下文、质量分和频控规则排序过滤。
治理层要覆盖效果和合规:记录曝光、点击、转化、实验桶和负反馈,监控 CTR、CVR、覆盖率、多样性和误推荐;对敏感词、隐私字段、过期兴趣做过滤、脱敏、最小化保存和保留期控制,用户关闭个性化后停止使用画像。
可综合搜索次数、点击转化、最近时间、query 置信度和行为类型,用时间衰减得到 keyword-user 分数。
短期兴趣使用实时或近几小时 query,长期兴趣用更长窗口聚合;排序时按场景给不同时间窗不同权重。
可用用户关键词分、物料关键词匹配度、类目相似度、历史点击转化、上下文、质量分、频控和负反馈特征。
必须记录 request_id、user_id、item_id、keyword_id、曝光位置、时间、点击、转化和实验桶,才能构造负样本和做 A/B 分析。
对敏感 query 做过滤、脱敏、最小化保存和保留期控制,用户可关闭个性化时要停止使用相关画像。