zhangbo 11 months ago
parent
commit
a706d5f61a

+ 4 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/RankRouter.java

@@ -122,6 +122,10 @@ public class RankRouter {
                 return rankStrategy4ShareDeepAndWidth.rank(param);
             case "60151": // 650
                 return rankStrategy4RegionMergeModelV650.rank(param);
+            case "60654": // 654
+                return rankStrategy4RegionMergeModelV654.rank(param);
+            case "60655": // 655
+                return rankStrategy4RegionMergeModelV655.rank(param);
             default:
                 break;
         }

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

@@ -66,6 +66,9 @@ public class RankStrategy4RegionMergeModelV569 extends RankService {
         //-------------------逻-------------------
         //-------------------辑-------------------
 
+        List<Video> rovRecallRank = new ArrayList<>();
+        Set<Long> setVideo = new HashSet<>();
+        //-------------------老地域召回-------------------
         List<Video> oldRovs = new ArrayList<>();
         oldRovs.addAll(extractAndSort(param, RegionHRecallStrategy.PUSH_FORM));
         oldRovs.addAll(extractAndSort(param, RegionHDupRecallStrategy.PUSH_FORM));
@@ -74,37 +77,44 @@ public class RankStrategy4RegionMergeModelV569 extends RankService {
         oldRovs.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
         removeDuplicate(oldRovs);
         int sizeReturn = param.getSize();
-        //-------------------老地域召回-------------------
         List<Video> v0 = oldRovs.size() <= sizeReturn
                 ? oldRovs
                 : oldRovs.subList(0, sizeReturn);
+        this.duplicate(setVideo, v0);
+        rovRecallRank.addAll(v0);
+        setVideo.addAll(v0.stream().map(Video::getVideoId).collect(Collectors.toSet()));
+        //-------------------sim相似召回------------------
         List<Video> v5 = extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM);
-        List<Video> v6 = extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM);
+        v5 = v5.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v5 = v5.subList(0, Math.min(mergeWeight.getOrDefault("v5", 5.0).intValue(), v5.size()));
+        rovRecallRank.addAll(v5);
+        setVideo.addAll(v5.stream().map(Video::getVideoId).collect(Collectors.toSet()));
+        //-------------------return相似召回------------------
+        List<Video> v6 = extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM);
+        v6 = v6.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v6 = v6.subList(0, Math.min(mergeWeight.getOrDefault("v6", 5.0).intValue(), v6.size()));
+        rovRecallRank.addAll(v6);
+        setVideo.addAll(v6.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------新地域召回------------------
-        List<Video> v1 = extractAndSort(param, RegionRealtimeRecallStrategyV1.PUSH_FORM);
+        List<Video> v1 = extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM);
+        v1 = v1.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v1 = v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size()));
+        rovRecallRank.addAll(v1);
+        setVideo.addAll(v1.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------节日特殊召回-------------------
         List<Video> v7 = extractAndSort(param, FestivalRecallStrategyV1.PUSH_FORM);
-        //-------------------基于title的tag召回-------------------
-        List<Video> v10 = extractAndSort(param, TitleTagRecallStrategyV1.PUSH_FORM);
-
+        v7 = v7.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v7 = v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size()));
+        rovRecallRank.addAll(v7);
+        setVideo.addAll(v7.stream().map(Video::getVideoId).collect(Collectors.toSet()));
+        //-------------------基于cf rov n 召回-------------------
+        List<Video> v8 = extractAndSort(param, CFRovnRecallStrategyV1.PUSH_FORM);
+        v8 = v8.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v8 = v8.subList(0, Math.min(mergeWeight.getOrDefault("v8", 6.0).intValue(), v8.size()));
+        rovRecallRank.addAll(v8);
+        setVideo.addAll(v8.stream().map(Video::getVideoId).collect(Collectors.toSet()));
 
 
-        Set<Long> setVideo = new HashSet<>();
-        this.duplicate(setVideo, v0);
-        this.duplicate(setVideo, v5);
-        this.duplicate(setVideo, v6);
-        this.duplicate(setVideo, v1);
-        this.duplicate(setVideo, v7);
-        this.duplicate(setVideo, v10);
-
-        List<Video> rovRecallRank = new ArrayList<>();
-        rovRecallRank.addAll(v0);
-        rovRecallRank.addAll(v5.subList(0, Math.min(mergeWeight.getOrDefault("v5", 5.0).intValue(), v5.size())));
-        rovRecallRank.addAll(v6.subList(0, Math.min(mergeWeight.getOrDefault("v6", 5.0).intValue(), v6.size())));
-        rovRecallRank.addAll(v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size())));
-        rovRecallRank.addAll(v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size())));
-        rovRecallRank.addAll(v10.subList(0, Math.min(mergeWeight.getOrDefault("v10", 6.0).intValue(), v10.size())));
-
         //-------------------排-------------------
         //-------------------序-------------------
         //-------------------逻-------------------

+ 30 - 21
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelV654.java

@@ -44,7 +44,9 @@ public class RankStrategy4RegionMergeModelV654 extends RankStrategy4RegionMergeM
         //-------------------合-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
-
+        List<Video> rovRecallRank = new ArrayList<>();
+        Set<Long> setVideo = new HashSet<>();
+        //-------------------老地域召回-------------------
         List<Video> oldRovs = new ArrayList<>();
         oldRovs.addAll(extractAndSort(param, RegionHRecallStrategy.PUSH_FORM));
         oldRovs.addAll(extractAndSort(param, RegionHDupRecallStrategy.PUSH_FORM));
@@ -53,37 +55,44 @@ public class RankStrategy4RegionMergeModelV654 extends RankStrategy4RegionMergeM
         oldRovs.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
         removeDuplicate(oldRovs);
         int sizeReturn = param.getSize();
-        //-------------------老地域召回-------------------
         List<Video> v0 = oldRovs.size() <= sizeReturn
                 ? oldRovs
                 : oldRovs.subList(0, sizeReturn);
+        this.duplicate(setVideo, v0);
+        rovRecallRank.addAll(v0);
+        setVideo.addAll(v0.stream().map(Video::getVideoId).collect(Collectors.toSet()));
+        //-------------------sim相似召回------------------
         List<Video> v5 = extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM);
-        List<Video> v6 = extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM);
+        v5 = v5.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v5 = v5.subList(0, Math.min(mergeWeight.getOrDefault("v5", 5.0).intValue(), v5.size()));
+        rovRecallRank.addAll(v5);
+        setVideo.addAll(v5.stream().map(Video::getVideoId).collect(Collectors.toSet()));
+        //-------------------return相似召回------------------
+        List<Video> v6 = extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM);
+        v6 = v6.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v6 = v6.subList(0, Math.min(mergeWeight.getOrDefault("v6", 5.0).intValue(), v6.size()));
+        rovRecallRank.addAll(v6);
+        setVideo.addAll(v6.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------新地域召回------------------
-        List<Video> v1 = extractAndSort(param, RegionRealtimeRecallStrategyV1.PUSH_FORM);
+        List<Video> v1 = extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM);
+        v1 = v1.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v1 = v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size()));
+        rovRecallRank.addAll(v1);
+        setVideo.addAll(v1.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------节日特殊召回-------------------
         List<Video> v7 = extractAndSort(param, FestivalRecallStrategyV1.PUSH_FORM);
+        v7 = v7.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v7 = v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size()));
+        rovRecallRank.addAll(v7);
+        setVideo.addAll(v7.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------基于cf rov n 召回-------------------
         List<Video> v8 = extractAndSort(param, CFRovnRecallStrategyV1.PUSH_FORM);
+        v8 = v8.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v8 = v8.subList(0, Math.min(mergeWeight.getOrDefault("v8", 6.0).intValue(), v8.size()));
+        rovRecallRank.addAll(v8);
+        setVideo.addAll(v8.stream().map(Video::getVideoId).collect(Collectors.toSet()));
 
 
-
-        Set<Long> setVideo = new HashSet<>();
-        this.duplicate(setVideo, v0);
-        this.duplicate(setVideo, v5);
-        this.duplicate(setVideo, v6);
-        this.duplicate(setVideo, v1);
-        this.duplicate(setVideo, v7);
-        this.duplicate(setVideo, v8);
-
-        List<Video> rovRecallRank = new ArrayList<>();
-        rovRecallRank.addAll(v0);
-        rovRecallRank.addAll(v5.subList(0, Math.min(mergeWeight.getOrDefault("v5", 5.0).intValue(), v5.size())));
-        rovRecallRank.addAll(v6.subList(0, Math.min(mergeWeight.getOrDefault("v6", 5.0).intValue(), v6.size())));
-        rovRecallRank.addAll(v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size())));
-        rovRecallRank.addAll(v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size())));
-        rovRecallRank.addAll(v8.subList(0, Math.min(mergeWeight.getOrDefault("v8", 6.0).intValue(), v8.size())));
-
         //-------------------排-------------------
         //-------------------序-------------------
         //-------------------逻-------------------

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

@@ -11,6 +11,7 @@ import org.springframework.stereotype.Service;
 
 import java.text.SimpleDateFormat;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * @author zhangbo
@@ -31,7 +32,9 @@ public class RankStrategy4RegionMergeModelV655 extends RankStrategy4RegionMergeM
         //-------------------合-------------------
         //-------------------逻-------------------
         //-------------------辑-------------------
-
+        List<Video> rovRecallRank = new ArrayList<>();
+        Set<Long> setVideo = new HashSet<>();
+        //-------------------老地域召回-------------------
         List<Video> oldRovs = new ArrayList<>();
         oldRovs.addAll(extractAndSort(param, RegionHRecallStrategy.PUSH_FORM));
         oldRovs.addAll(extractAndSort(param, RegionHDupRecallStrategy.PUSH_FORM));
@@ -40,28 +43,31 @@ public class RankStrategy4RegionMergeModelV655 extends RankStrategy4RegionMergeM
         oldRovs.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
         removeDuplicate(oldRovs);
         int sizeReturn = param.getSize();
-        //-------------------老地域召回-------------------
         List<Video> v0 = oldRovs.size() <= sizeReturn
                 ? oldRovs
                 : oldRovs.subList(0, sizeReturn);
+        this.duplicate(setVideo, v0);
+        rovRecallRank.addAll(v0);
+        setVideo.addAll(v0.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------新地域召回------------------
         List<Video> v1 = extractAndSort(param, RegionRealtimeRecallStrategyV1.PUSH_FORM);
+        v1 = v1.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v1 = v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size()));
+        rovRecallRank.addAll(v1);
+        setVideo.addAll(v1.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------节日特殊召回-------------------
         List<Video> v7 = extractAndSort(param, FestivalRecallStrategyV1.PUSH_FORM);
+        v7 = v7.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v7 = v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size()));
+        rovRecallRank.addAll(v7);
+        setVideo.addAll(v7.stream().map(Video::getVideoId).collect(Collectors.toSet()));
         //-------------------基于cf rov n 召回-------------------
         List<Video> v8 = extractAndSort(param, CFRovnRecallStrategyV1.PUSH_FORM);
+        v8 = v8.stream().filter(r-> !setVideo.contains(r.getVideoId())).collect(Collectors.toList());
+        v8 = v8.subList(0, Math.min(mergeWeight.getOrDefault("v8", 16.0).intValue(), v8.size()));
+        rovRecallRank.addAll(v8);
+        setVideo.addAll(v8.stream().map(Video::getVideoId).collect(Collectors.toSet()));
 
-        Set<Long> setVideo = new HashSet<>();
-        this.duplicate(setVideo, v0);
-        this.duplicate(setVideo, v1);
-        this.duplicate(setVideo, v7);
-        this.duplicate(setVideo, v8);
-
-        List<Video> rovRecallRank = new ArrayList<>();
-        rovRecallRank.addAll(v0);
-        rovRecallRank.addAll(v1.subList(0, Math.min(mergeWeight.getOrDefault("v1", 5.0).intValue(), v1.size())));
-        rovRecallRank.addAll(v7.subList(0, Math.min(mergeWeight.getOrDefault("v7", 5.0).intValue(), v7.size())));
-        rovRecallRank.addAll(v8.subList(0, Math.min(mergeWeight.getOrDefault("v8", 16.0).intValue(), v8.size())));
 
         //-------------------排-------------------
         //-------------------序-------------------