فهرست منبع

Add: PushFromIndex proto

sunxy 1 سال پیش
والد
کامیت
809a103f07

+ 6 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/implement/TopRecommendPipeline.java

@@ -6,6 +6,7 @@ import com.google.common.base.Stopwatch;
 import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.recommend.server.common.base.RankItem;
 import com.tzld.piaoquan.recommend.server.framework.candidiate.Candidate;
+import com.tzld.piaoquan.recommend.server.framework.candidiate.CandidateInfo;
 import com.tzld.piaoquan.recommend.server.framework.common.User;
 import com.tzld.piaoquan.recommend.server.framework.merger.MergeUtils;
 import com.tzld.piaoquan.recommend.server.framework.merger.StrategyQueue;
@@ -319,6 +320,11 @@ public class TopRecommendPipeline {
             video.setSortScore(score);
             video.setScoreStr(item.getScoreStr());
             video.setScoresMap(item.getScoresMap());
+
+            Map<String, List<String>> pushFromIndex = new HashMap<>();
+            pushFromIndex.put(item.getQueue(), item.getCandidateInfoList().stream()
+                    .map(CandidateInfo::getCandidateQueueName).collect(Collectors.toList()));
+            video.setPushFromIndex(pushFromIndex);
             result.add(video);
         }
         Collections.sort(result, Comparator.comparingDouble(o -> -o.getSortScore()));

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

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

+ 12 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/VideoRecommendService.java

@@ -6,6 +6,7 @@ import com.google.common.base.Strings;
 import com.tzld.piaoquan.recommend.server.common.ThreadPoolFactory;
 import com.tzld.piaoquan.recommend.server.framework.common.User;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
+import com.tzld.piaoquan.recommend.server.gen.recommend.PushFromIndex;
 import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
 import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendResponse;
 import com.tzld.piaoquan.recommend.server.gen.recommend.VideoProto;
@@ -18,6 +19,7 @@ import com.tzld.piaoquan.recommend.server.service.rank.RankResult;
 import com.tzld.piaoquan.recommend.server.service.rank.strategy.RankStrategy4RegionMergeModelV547;
 import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -97,6 +99,15 @@ public class VideoRecommendService {
         // 更新position
         List<VideoProto> vps = new ArrayList<>();
         for (int i = 0; i < videos.size(); i++) {
+            Map<String, List<String>> pushFromIndex = videos.get(i).getPushFromIndex();
+            List<PushFromIndex> pushFromIndexList = new ArrayList<>();
+            if (MapUtils.isNotEmpty(pushFromIndex)) {
+                pushFromIndex.forEach((k, v) -> {
+                    PushFromIndex.Builder builder = PushFromIndex.newBuilder().setPushFrom(k);
+                    v.forEach(builder::addIndex);
+                    pushFromIndexList.add(builder.build());
+                });
+            }
             vps.add(VideoProto.newBuilder()
                     .setPosition(i + 1)
                     .setPushFrom(Strings.nullToEmpty(videos.get(i).getPushFrom()))
@@ -107,6 +118,7 @@ public class VideoRecommendService {
                     .setFlowPool(Strings.nullToEmpty(videos.get(i).getFlowPool()))
                     .setIsInFlowPool(videos.get(i).isInFlowPool() ? 1 : 0)
                     .setRand(videos.get(i).getRand())
+                    .addAllPushFromIndex(pushFromIndexList)
                     .build());
         }