Browse Source

Merge branch 'feature/zhangbo_wish' of algorithm/recommend-server into master

zhangbo 1 year ago
parent
commit
0d2857d57b

+ 1 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/enums/AppTypeEnum.java

@@ -46,6 +46,7 @@ public enum AppTypeEnum {
     ZUI_JING_QI(19, "票圈最惊奇"),
     ZUI_JING_QI(19, "票圈最惊奇"),
     PIAO_QUAN_VIDEO_PLUS(21, "票圈视频+"),
     PIAO_QUAN_VIDEO_PLUS(21, "票圈视频+"),
     JOURNEY(22, "票圈足迹"),
     JOURNEY(22, "票圈足迹"),
+    PIAO_QUAN_MEIHAO_ZHUFU(25, "票圈美好祝福"),
     ADMIN_CRAWLER(888888, "后台-爬虫"),
     ADMIN_CRAWLER(888888, "后台-爬虫"),
     OTHERS(999999, "其他的调用方,比如后台管理系统");
     OTHERS(999999, "其他的调用方,比如后台管理系统");
 
 

+ 22 - 8
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankService.java

@@ -65,7 +65,28 @@ public class RankService {
             }
             }
             return null;
             return null;
         }
         }
+        // 1 通过 apptype 判断该小程序走怎样的排序策略。
+        if (param.getAppType() == AppTypeEnum.PIAO_QUAN_MEIHAO_ZHUFU.getCode()){
+            List<Video> results = new ArrayList<>();
+            results.addAll(extractAndSort(param, FestivalRecallStrategyV1.PUSH_FORM));
+            List<String> videoIdKeys = results.stream()
+                    .map(t -> param.getRankKeyPrefix() + t.getVideoId())
+                    .collect(Collectors.toList());
+            List<String> videoScores = redisTemplate.opsForValue().multiGet(videoIdKeys);
+            if (CollectionUtils.isNotEmpty(videoScores)
+                    && videoScores.size() == results.size()) {
+                for (int i = 0; i < videoScores.size(); i++) {
+                    results.get(i).setSortScore(NumberUtils.toDouble(videoScores.get(i), 0.0));
+                }
+                Collections.sort(results, Comparator.comparingDouble(o -> -o.getSortScore()));
+            }
+            results.addAll(extractAndSort(param, RegionRealtimeRecallStrategyV2.PUSH_FORM));
+            results.addAll(extractAndSort(param, RegionRealtimeRecallStrategyV3.PUSH_FORM));
+            removeDuplicate(results);
+            return new RankResult(results);
+        }
 
 
+        // 2 正常走分发 排序+冷启动
         List<Video> rovRecallRank = mergeAndRankRovRecall(param);
         List<Video> rovRecallRank = mergeAndRankRovRecall(param);
         // log.info("mergeAndRankRovRecall rovRecallRank={}", JSONUtils.toJson(rovRecallRank));
         // log.info("mergeAndRankRovRecall rovRecallRank={}", JSONUtils.toJson(rovRecallRank));
         List<Video> flowPoolRank = mergeAndRankFlowPoolRecall(param);
         List<Video> flowPoolRank = mergeAndRankFlowPoolRecall(param);
@@ -90,14 +111,7 @@ public class RankService {
     public List<Video> mergeAndRankRovRecall(RankParam param) {
     public List<Video> mergeAndRankRovRecall(RankParam param) {
         // TODO ab test
         // TODO ab test
         // TODO 抽象成Strategy
         // TODO 抽象成Strategy
-//        boolean hitTest = newRankSwitch
-//                || CommonCollectionUtils.contains(param.getAbExpCodes(), newRankAbExpCode);
-//        if (hitTest) {
-//            return mergeAndRankRovRecallNew(param);
-//        } else {
-//            return mergeAndRankRovRecallOld(param);
-//        }
-        // 研发重写了代码,直接走新逻辑
+
         return mergeAndRankRovRecallOld(param);
         return mergeAndRankRovRecallOld(param);
     }
     }
 
 

+ 6 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -86,7 +86,12 @@ public class RecallService implements ApplicationContextAware {
         if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode()
         if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode()
                 || param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) {
                 || param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) {
             strategies.addAll(getRegionRecallStrategy(param));
             strategies.addAll(getRegionRecallStrategy(param));
-        } else {
+        } else if (param.getAppType() == AppTypeEnum.PIAO_QUAN_MEIHAO_ZHUFU.getCode()){
+            strategies.add(strategyMap.get(FestivalRecallStrategyV1.class.getSimpleName()));
+            strategies.add(strategyMap.get(RegionRealtimeRecallStrategyV2.class.getSimpleName()));
+            strategies.add(strategyMap.get(RegionRealtimeRecallStrategyV3.class.getSimpleName()));
+            return strategies;
+        }else {
             switch (abCode) {
             switch (abCode) {
                 case "60120": // 576
                 case "60120": // 576
                 case "60121": // 536
                 case "60121": // 536