以下文件/目录是本地调试/同步用,不要 git add 进任何业务 PR:
recommend-server-service/src/main/resources/application-dev.yml
apollo/ 目录(如 apollo/rank.score.merge.weightv564.json 等)
docs/ 目录、实验配置/ 目录 — 本地资料,同上git add 时手动列文件名,不要用 git add -A 或 git add .,避免把这些误带进去。
RecallService.getStrategies() 给所有用户挂载一组召回策略,并发跑 Redis 拿候选视频写入候选池RankStrategy4RegionMergeModelVxxx 在 mergeAndRankRovRecall() 里通过 RecallUtils.extractRecall(weight, param, PUSH_FROM/FORM, ...) 按 PUSH_FROM 字符串挑想要的召回路RecallService 加新召回不会自动进任何 rank 实验,必须同时改对应 rank 类的 extractRecall 调用才能生效if (isHitXxxExp) strategies.add(...) — 命中实验才挂载(842/568 用此模式)if (isHit564Exp) { strategies.add(...); strategies.removeIf(...) } — 命中实验时挂新召回 + 剔除该实验不要的召回,省 Redis 调用judgeHitExp 用 rootSessionId 分桶:同一用户同一会话里要么始终命中要么始终不命中,召回/排序天然对齐PUSH_FORM(拼错的,6+ 处)vs PUSH_FROM(正确,3 处)在 recall strategy 里并存
PUSH_FROM,别复制旧的拼错版本pushFrom() 字符串过滤,改用 getClass().getSimpleName(),绕开这个不一致@Component implements RecallStrategy,Spring 会自动按 getClass().getSimpleName() 注册到 RecallService 的 strategyMap,然后再去 getStrategies() 里 add 一行就生效apollo/rank.score.merge.weightv{NNN}.json 对应 rank 类的 @ApolloJsonValue("${rank.score.merge.weightv{NNN}:}")xxxRov / xxxRos / xxxStr 等,与 mergeWeight.getOrDefault("xxx", 默认值) 一致extractRecall 列表后,Apollo JSON 要同步清理废弃 key(不会报错,但是死配置)getOrDefault(key, 默认值) 提供兜底,所以 Apollo 没配也能跑province_rovnprovinceRov:5 权重默认值(可在 Apollo JSON 覆盖)RecallService.java 里 if (isHit564Exp) 块的 removeIf 实现,要回滚整块删除即可