Pārlūkot izejas kodu

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

zhaohaipeng 3 nedēļas atpakaļ
vecāks
revīzija
bfb5743a92
15 mainītis faili ar 77 papildinājumiem un 15 dzēšanām
  1. 14 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RankVideoInfo.java
  2. 3 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/Video.java
  3. 5 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java
  4. 11 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankService.java
  5. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV536.java
  6. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV562.java
  7. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV563.java
  8. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV564.java
  9. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV565.java
  10. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV566.java
  11. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV567.java
  12. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV568.java
  13. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV569.java
  14. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV839.java
  15. 4 1
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RelevantModelV1.java

+ 14 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RankVideoInfo.java

@@ -0,0 +1,14 @@
+package com.tzld.piaoquan.recommend.server.model;
+
+import lombok.Data;
+
+@Data
+public class RankVideoInfo {
+
+    private long videoId;
+
+    private String pushFrom;
+
+    private double score;
+
+}

+ 3 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/Video.java

@@ -37,7 +37,9 @@ public class Video {
     public Map<String, Double> scoresMap = new HashMap<>();
     public Map<String, List<String>> pushFromIndex = new HashMap<>();
     public Map<String, Integer> pushFromRank = new HashMap<>();
-    public Map<String, List<Long>> pushFromRankVideo = new HashMap<>();
+    public Map<String, List<Long>> pushFromRankVideo = new LinkedHashMap<>();
+
+    public Map<Long, RankVideoInfo> rankVideoInfoMap = new LinkedHashMap<>();
 
     // 处理后,传给模型的特征
     public Map<String, String> allFeatureMap = new HashMap<>();

+ 5 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.recommend.server.service;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.base.Stopwatch;
 import com.google.common.base.Strings;
@@ -285,6 +286,10 @@ public class RecommendService {
 
                 map.put("rootSessionId", request.getRootSessionId());
 
+                JSONObject extJson = new JSONObject();
+                extJson.put("rankVideoInfoMap", v.getRankVideoInfoMap());
+                map.put("ext", JSONUtils.toJson(extJson));
+
                 return map;
 
             }).collect(Collectors.toList());

+ 11 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankService.java

@@ -3,6 +3,7 @@ package com.tzld.piaoquan.recommend.server.service.rank;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.piaoquan.recommend.server.common.enums.AppTypeEnum;
+import com.tzld.piaoquan.recommend.server.model.RankVideoInfo;
 import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConstants;
 import com.tzld.piaoquan.recommend.server.service.recall.RecallResult;
@@ -125,7 +126,7 @@ public abstract class RankService {
             }
             for (Video video : data.getVideos()) {
                 Set<String> pushFromSet = videoIdPushFromMap.get(video.getVideoId());
-                if (pushFromSet != null && pushFromSet.size() > 0) {
+                if (pushFromSet != null && !pushFromSet.isEmpty()) {
                     Map<String, List<String>> pushFromIndex = new HashMap<>();
                     Map<String, Integer> pushFromRank = new HashMap<>();
                     pushFromSet.forEach(p -> {
@@ -265,15 +266,22 @@ public abstract class RankService {
         return false;
     }
 
-    protected void addPushFromVideoRank(List<Video> rankVideo) {
+    protected void rankBeforePostProcessor(List<Video> rankVideo) {
         try {
-            Map<String, List<Long>> pushFromVideoRank = new HashMap<>();
+            Map<String, List<Long>> pushFromVideoRank = new LinkedHashMap<>();
+            Map<Long, RankVideoInfo> rankVideoInfoMap = new LinkedHashMap<>();
             for (Video video : rankVideo) {
                 video.setPushFromRankVideo(pushFromVideoRank);
+                video.setRankVideoInfoMap(rankVideoInfoMap);
 
                 String pushFrom = video.getPushFrom();
                 List<Long> pushFromVideos = pushFromVideoRank.computeIfAbsent(pushFrom, k -> new ArrayList<>());
                 pushFromVideos.add(video.getVideoId());
+
+                RankVideoInfo rankVideoInfo = new RankVideoInfo();
+                rankVideoInfo.setVideoId(video.getVideoId());
+                rankVideoInfo.setPushFrom(pushFrom);
+                rankVideoInfoMap.put(video.getVideoId(), rankVideoInfo);
             }
         } catch (Exception e) {
             log.error("addPushFromVideoRank ", e);

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

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -250,6 +250,9 @@ public class RankStrategy4RegionMergeModelV536 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV562.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV562 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -250,6 +250,9 @@ public class RankStrategy4RegionMergeModelV562 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV563.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV563 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -225,6 +225,9 @@ public class RankStrategy4RegionMergeModelV563 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV564.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -189,6 +189,9 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV565.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV565 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -186,6 +186,9 @@ public class RankStrategy4RegionMergeModelV565 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV566.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV566 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -250,6 +250,9 @@ public class RankStrategy4RegionMergeModelV566 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV567.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -186,6 +186,9 @@ public class RankStrategy4RegionMergeModelV567 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV568.java

@@ -83,7 +83,7 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("prioriPremiumRovn", 0.0).intValue(), param, PrioriPremiumRovnRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -199,6 +199,9 @@ public class RankStrategy4RegionMergeModelV568 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV569.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV569 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -249,6 +249,9 @@ public class RankStrategy4RegionMergeModelV569 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV839.java

@@ -80,7 +80,7 @@ public class RankStrategy4RegionMergeModelV839 extends RankStrategy4RegionMergeM
         RecallUtils.extractRecall(mergeWeight.getOrDefault("return1Cate2Str", 5.0).intValue(), param, Return1Cate2StrRecallStrategy.PUSH_FORM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         //-------------------排-------------------
         //-------------------序-------------------
@@ -225,6 +225,9 @@ public class RankStrategy4RegionMergeModelV839 extends RankStrategy4RegionMergeM
             if (MapUtils.isNotEmpty(contextInfo)) {
                 video.getMetaFeatureMap().put("context", contextInfo);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         ExtractVideoMergeCate.addOtherParam(result, videoBaseInfoMap);

+ 4 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RelevantModelV1.java

@@ -41,7 +41,7 @@ public class RankStrategy4RelevantModelV1 extends RankStrategy4RegionMergeModelB
         RecallUtils.extractRecall(apolloParams.getOrDefault("returnUv", 100d).intValue(), param, HotReturnUvRecallStrategy.PUSH_FROM, setVideo, rovRecallRank);
 
         // 记录召回源中的视频
-        this.addPushFromVideoRank(rovRecallRank);
+        this.rankBeforePostProcessor(rovRecallRank);
 
         // ------------------- 排序 -------------------
         Map<String, String> rtFeatureDumpsMap = dumpsRtFeature(param.getUserRTShareList());
@@ -113,6 +113,9 @@ public class RankStrategy4RelevantModelV1 extends RankStrategy4RegionMergeModelB
             if (null != rtFeatureDumpsMap && !rtFeatureDumpsMap.isEmpty()) {
                 video.getMetaFeatureMap().put("rt", rtFeatureDumpsMap);
             }
+            if (Objects.nonNull(video.getRankVideoInfoMap()) && video.getRankVideoInfoMap().containsKey(video.getVideoId())){
+                video.getRankVideoInfoMap().get(video.getVideoId()).setScore(score);
+            }
             result.add(video);
         }
         result.sort(Comparator.comparingDouble(o -> -o.getSortScore()));