Browse Source

ADD: CB Recall and rank

sunxy 11 months ago
parent
commit
c14e2a6225

+ 8 - 9
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score4recall/strategy/ContentBaseRecallScore.java

@@ -3,14 +3,12 @@ package com.tzld.piaoquan.recommend.server.service.score4recall.strategy;
 import com.tzld.piaoquan.recommend.server.service.score.ScorerConfigInfo;
 import com.tzld.piaoquan.recommend.server.service.score4recall.AbstractScorer4Recall;
 import com.tzld.piaoquan.recommend.server.service.score4recall.model4recall.VideoTagModel4RecallMap;
+import com.tzld.piaoquan.recommend.server.util.ListMerger;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.tuple.Pair;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 
@@ -28,24 +26,25 @@ public class ContentBaseRecallScore extends AbstractScorer4Recall {
     @Override
     public List<Pair<Long, Double>> recall(Map<String, String> params) {
         VideoTagModel4RecallMap model = (VideoTagModel4RecallMap) this.getModel();
-        List<Pair<Long, Double>> result = new ArrayList<>();
         if (model == null || model.map == null) {
-            return result;
+            return Collections.emptyList();
         }
         String tags = params.get("tags");
         if (StringUtils.isBlank(tags)) {
-            return result;
+            return Collections.emptyList();
         }
         List<String> tagList = Arrays.stream(tags.split(",")).collect(Collectors.toList());
         Map<String, List<Long>> tagVideoIdMap = model.map;
+        List<List<Pair<Long, Double>>> multiTagVideos = new ArrayList<>();
         for (String tag : tagList) {
             List<Long> videoIds = tagVideoIdMap.get(tag);
             if (CollectionUtils.isNotEmpty(videoIds)) {
-                result.addAll(videoIds.stream().map(videoId -> Pair.of(videoId, 1.0))
+                multiTagVideos.add(videoIds.stream().map(videoId -> Pair.of(videoId, 1.0))
                         .collect(Collectors.toList()));
             }
         }
-        return result;
+
+        return ListMerger.mergeLists(multiTagVideos);
     }