Browse Source

ADD:PushFromRank

sunxy 11 months ago
parent
commit
6b81bc2181

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

@@ -38,5 +38,6 @@ public class Video {
     public double scoreRegion = 0.0D;
     public Map<String, Double> scoresMap = new HashMap<>();
     public Map<String, List<String>> pushFromIndex = new HashMap<>();
+    public Map<String, Integer> pushFromRank = new HashMap<>();
 
 }

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

@@ -203,6 +203,9 @@ public class RecommendService {
                 map.put("score", String.valueOf(v.getScore()));
                 map.put("scoresMap", JSONUtils.toJson(v.getScoresMap()));
 
+                map.put("pushFromRank", JSONUtils.toJson(v.getPushFromRank()));
+                map.put("abExpCode", JSONUtils.toJson(param.getAbExpCodes()));
+
                 return map;
 
             }).collect(Collectors.toList());

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

@@ -117,6 +117,7 @@ public class RankService {
         if (CollectionUtils.isEmpty(param.getRecallResult().getData())) {
             return;
         }
+        // pushFromIndex
         Map<Long, Set<String>> videoIdPushFromMap = new HashMap<>();
         for (RecallResult.RecallData data : param.getRecallResult().getData()) {
             if (CollectionUtils.isEmpty(data.getVideos())) {
@@ -127,6 +128,10 @@ public class RankService {
                 pushFromSet.add(data.getPushFrom());
             }
         }
+
+        // pushFromRank
+        Map<String, List<Video>> pushFromVideosMap = param.getRecallResult().getData().stream()
+                .collect(Collectors.toMap(RecallResult.RecallData::getPushFrom, RecallResult.RecallData::getVideos));
         for (RecallResult.RecallData data : param.getRecallResult().getData()) {
             if (CollectionUtils.isEmpty(data.getVideos())) {
                 continue;
@@ -134,12 +139,29 @@ public class RankService {
             for (Video video : data.getVideos()) {
                 Set<String> pushFromSet = videoIdPushFromMap.get(video.getVideoId());
                 if (pushFromSet != null && pushFromSet.size() > 0) {
-                    Map<String, List<String>> map = new HashMap<>();
-                    pushFromSet.forEach(p -> map.computeIfAbsent(p, k -> new ArrayList<>()));
-                    video.setPushFromIndex(map);
+                    Map<String, List<String>> pushFromIndex = new HashMap<>();
+                    Map<String, Integer> pushFromRank = new HashMap<>();
+                    pushFromSet.forEach(p -> {
+
+                        pushFromIndex.computeIfAbsent(p, k -> new ArrayList<>());
+
+                        List<Video> videos = pushFromVideosMap.get(p);
+                        if (CollectionUtils.isNotEmpty(videos)) {
+                            for (int i = 0; i < videos.size(); i++) {
+                                if (Objects.equals(videos.get(i).getVideoId(), video.getVideoId())) {
+                                    pushFromRank.put(p, i);
+                                    break;
+                                }
+                            }
+                        }
+
+                    });
+                    video.setPushFromIndex(pushFromIndex);
+                    video.setPushFromRank(pushFromRank);
                 }
             }
         }
+
     }
 
     public void rankFilter(RankParam param, List<Video> rovRecallRank, List<Video> flowPoolRank) {