Parcourir la source

Merge branch 'feature/zhangbo_model' of algorithm/recommend-server into master

zhangbo il y a 8 mois
Parent
commit
f20cf81ef9

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

@@ -173,6 +173,7 @@ public class RecommendService {
                 Map<String, String> map = new HashMap<>();
 
                 map.put("traceId", String.valueOf(TraceUtils.currentTraceId()));
+                map.put("recommendTraceId", Strings.nullToEmpty(request.getRecommendTraceId()));
 
                 // TODO user
                 map.put("sessionId", request.getSessionId());

+ 23 - 9
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomson.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.recommend.server.service.recall.strategy;
 
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.collect.Lists;
 import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
@@ -32,7 +33,8 @@ import static com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConsta
 @Service
 @Slf4j
 public class FlowPoolWithLevelRecallStrategyTomson extends AbstractFlowPoolWithLevelRecallStrategy {
-
+    @ApolloJsonValue("${ifOneLevelRandom:true}")
+    private boolean ifOneLevelRandom;
     @Autowired
     private FlowPoolConfigService flowPoolConfigService;
 
@@ -125,31 +127,43 @@ public class FlowPoolWithLevelRecallStrategyTomson extends AbstractFlowPoolWithL
             videoFlowPoolMap.put(values[0], values[1]);
             videoFlowPoolMap_.put(NumberUtils.toLong(values[0], 0), values[1]);
         }
-        ScorerPipeline4Recall pipeline = ScorerUtils.getScorerPipeline4Recall("feeds_recall_config_tomson.conf");
-        List<List<Pair<Long, Double>>> results = pipeline.recall(videoFlowPoolMap);
-        List<Pair<Long, Double>> result = results.get(0);
-        Map<Long, Double> resultmap = result.stream()
+        Map<Long, Double> resultmap = null;
+        if ("1".equals(level) && ifOneLevelRandom){
+            // 流量池一层改为全随机
+            int limitSize = 60;
+            List<Long> keyList = new ArrayList<>(videoFlowPoolMap_.keySet());
+            Collections.shuffle(keyList);
+            resultmap = keyList.stream().limit(limitSize).collect(Collectors.toMap(
+                    key -> key,
+                    key -> Math.random()
+            ));
+        }else{
+            ScorerPipeline4Recall pipeline = ScorerUtils.getScorerPipeline4Recall("feeds_recall_config_tomson.conf");
+            List<List<Pair<Long, Double>>> results = pipeline.recall(videoFlowPoolMap);
+            List<Pair<Long, Double>> result = results.get(0);
+            resultmap = result.stream()
                 .collect(Collectors.toMap(
                         Pair::getLeft, // 键是Pair的left值
                         Pair::getRight, // 值是Pair的right值
                         (existingValue, newValue) -> existingValue, // 如果键冲突,选择保留现有的值(或者你可以根据需要定义其他合并策略)
                         LinkedHashMap::new // 使用LinkedHashMap来保持插入顺序(如果需要的话)
                 ));
+        }
+
         // 3 召回内部过滤
-        FilterParam filterParam = FilterParamFactory.create(param, result.stream()
-                .map(Pair::getLeft)
-                .collect(Collectors.toList()));
+        FilterParam filterParam = FilterParamFactory.create(param, new ArrayList<>(resultmap.keySet()));
         filterParam.setForceTruncation(10000);
         filterParam.setConcurrent(true);
         filterParam.setNotUsePreView(false);
         FilterResult filterResult = filterService.filter(filterParam);
         List<Video> videosResult = new ArrayList<>();
         if (filterResult != null && CollectionUtils.isNotEmpty(filterResult.getVideoIds())) {
+            Map<Long, Double> finalResultmap = resultmap;
             filterResult.getVideoIds().forEach(vid -> {
                 Video recallData = new Video();
                 recallData.setVideoId(vid);
                 recallData.setAbCode(param.getAbCode());
-                recallData.setRovScore(resultmap.getOrDefault(vid, 0.0));
+                recallData.setRovScore(finalResultmap.getOrDefault(vid, 0.0));
                 recallData.setPushFrom(pushFrom());
                 recallData.setFlowPool(videoFlowPoolMap_.get(vid));
                 recallData.setFlowPoolAbtestGroup(param.getFlowPoolAbtestGroup());

+ 0 - 4
recommend-server-service/src/main/resources/logback.xml

@@ -316,10 +316,6 @@
 
     <root level="info">
         <appender-ref ref="CONSOLE"/>
-        <appender-ref ref="DEBUG_FILE"/>
-        <appender-ref ref="INFO_FILE"/>
-        <appender-ref ref="WARN_FILE"/>
-        <appender-ref ref="ERROR_FILE"/>
         <appender-ref ref="loghubAppenderInfo"/>
         <appender-ref ref="loghubAppenderWarn"/>
         <appender-ref ref="loghubAppenderError"/>