Ver código fonte

Merge branch 'feature_20260529_v536_base_v568' of algorithm/recommend-server into master

yangxiaohui 4 dias atrás
pai
commit
1f46548f53

+ 19 - 9
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV536.java

@@ -32,16 +32,18 @@ import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
 /**
- * V536 实验(2026-05-27 复写):基于 V565 召回 + DNN 打分,fusion 只保留"流量池相关 + 兜底相关"
+ * V536 实验(2026-05-29 复写):基于 V568 召回 + DNN 打分,fusion 只保留"流量池相关 + 兜底相关"
  *
- * 与 V565 唯一差异在 fusion 阶段(mergeAndSort):
+ * 与 V568 唯一差异在 fusion 阶段(mergeAndSort):
  *   - 保留:rov 空兜底 + 流量池按比例强插(topK 头部锁 + flowPoolP/newFlowPoolSelectRate 概率门 + 一侧用光兜底回填)
  *   - 删除:标签 filter / rov boost / 强插 / 品类降权 / 节日降权 / 密度控制(Basic 的段 2/3/4/5/6/8)
  *
- * Apollo key 保留 ${rank.score.merge.weightv536},召回/打分逻辑与 V565 同源但参数独立可调,仅 fusion 策略不同。
- * 注意:召回侧需要在 RecallService 里加 isHit536Exp 块,镜像 V565 的 strategies 增删(all_rov 系列 + 9 路老召回剔除)
+ * Apollo key 保留 ${rank.score.merge.weightv536},召回/打分逻辑与 V568 同源但参数独立可调,仅 fusion 策略不同。
+ * 召回侧:与 V568 基线召回完全一致,RecallService 不需要 isHit536Exp 门控
  *
- * 历史:原 V536(V569 + 4 路召回提权)在 2026-05-27 被复写为本逻辑。
+ * 历史:
+ *   - 原 V536(V569 + 4 路召回提权)在 2026-05-27 被复写为 V565 base + 极简 fusion
+ *   - 2026-05-29 再次复写:base 从 V565 切到 V568(加回 5 路 oldSpecial + 3 路 prioriProvince,v1/cityRov 换回普通版)
  */
 @Service
 @Slf4j
@@ -65,10 +67,12 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
         Set<Long> setVideo = new HashSet<>();
         setVideo.add(param.getHeadVid());
         List<Video> rovRecallRank = new ArrayList<>();
+        // -------------------5路特殊旧召回------------------
+        RecallUtils.extractOldSpecialRecall(mergeWeight.getOrDefault("oldSpecialN", (double) param.getSize()).intValue(), param, setVideo, rovRecallRank);
         //-------------------return相似召回------------------
         RecallUtils.extractRecall(mergeWeight.getOrDefault("v6", 5.0).intValue(), param, ReturnVideoRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
-        //-------------------新地域召回 (V565: all_rov)------------------
-        RecallUtils.extractRecall(mergeWeight.getOrDefault("v1", 5.0).intValue(), param, RegionRealtimeRecallStrategyV1AllRov.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------新地域召回------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("v1", 5.0).intValue(), param, RegionRealtimeRecallStrategyV1.PUSH_FORM, setVideo, rovRecallRank);
         //-------------------scene cf rovn------------------
         RecallUtils.extractRecall(mergeWeight.getOrDefault("sceneCFRovn", 5.0).intValue(), param, SceneCFRovnRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
         //-------------------scene cf rosn------------------
@@ -83,8 +87,14 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("headCate2RecallN", 3.0).intValue(), param, HeadProvinceCate2RecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
         //-------------------head cate2 of rovn------------------
         RecallUtils.extractRecall(mergeWeight.getOrDefault("headCate2Rov", 5.0).intValue(), param, HeadCate2RovRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
-        //-------------------city rovn (V565: all_rov)------------------
-        RecallUtils.extractRecall(mergeWeight.getOrDefault("cityRov", 5.0).intValue(), param, CityRovnAllRovRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------city rovn------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("cityRov", 5.0).intValue(), param, CityRovnRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province rovn------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceRov", 3.0).intValue(), param, PrioriProvinceRovnRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province str------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceStr", 1.0).intValue(), param, PrioriProvinceStrRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
+        //-------------------priori province ros------------------
+        RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriProvinceRos", 1.0).intValue(), param, PrioriProvinceRosRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
         //-------------------return1 cate2 ros------------------
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Ros", 5.0).intValue(), param, Return1Cate2RosRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
         //-------------------return1 cate2 str------------------

+ 0 - 20
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -207,26 +207,6 @@ public class RecallService implements ApplicationContextAware {
             strategies.removeIf(s -> s != null && v565RemoveSet.contains(s.getClass().getSimpleName()));
         }
 
-        // V536: 召回组合同步 V565 (all_rov 系列 + 剔除 9 路老召回), 排序后只保留流量池 + rov 兜底
-        boolean isHit536Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "536");
-        if (isHit536Exp) {
-            strategies.add(strategyMap.get(RegionRealtimeRecallStrategyV1AllRov.class.getSimpleName()));
-            strategies.add(strategyMap.get(CityRovnAllRovRecallStrategy.class.getSimpleName()));
-            Set<String> v536RemoveSet = new HashSet<>(Arrays.asList(
-                    RegionRealtimeRecallStrategyV1.class.getSimpleName(),
-                    CityRovnRecallStrategy.class.getSimpleName(),
-                    RegionHRecallStrategy.class.getSimpleName(),
-                    Region24HRecallStrategy.class.getSimpleName(),
-                    RegionHDupRecallStrategy.class.getSimpleName(),
-                    RegionRelative24HRecallStrategy.class.getSimpleName(),
-                    RegionRelative24HDupRecallStrategy.class.getSimpleName(),
-                    PrioriProvinceRovnRecallStrategy.class.getSimpleName(),
-                    PrioriProvinceStrRecallStrategy.class.getSimpleName(),
-                    PrioriProvinceRosRecallStrategy.class.getSimpleName()
-            ));
-            strategies.removeIf(s -> s != null && v536RemoveSet.contains(s.getClass().getSimpleName()));
-        }
-
         boolean isHit564Exp = experimentService.judgeHitAlgoExp(param.getAppType(), param.getRootSessionId(), abExpCodes, "564");
         if (isHit564Exp) {
             strategies.add(strategyMap.get(ProvinceRovnRecallStrategy.class.getSimpleName()));