Sfoglia il codice sorgente

Merge branch 'feature_filter' of algorithm/recommend-server into master

dingyunpeng 4 mesi fa
parent
commit
2ac213bd75
42 ha cambiato i file con 211 aggiunte e 302 eliminazioni
  1. 12 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/common/RedisKeyConstants.java
  2. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/implement/recall/HistoryLongPeriodFilter.java
  3. 1 8
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RecommendParam.java
  4. 35 78
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java
  5. 1 36
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/AbstractFilterService.java
  6. 2 7
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/FilterParam.java
  7. 50 41
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/strategy/RiskVideoStrategy.java
  8. 2 6
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/FilterParamFactory.java
  9. 2 4
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallParam.java
  10. 4 27
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java
  11. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AbstractNewContentVideoRecallStrategy.java
  12. 1 2
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AbstractRegionRecallStrategy.java
  13. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AppFallbackRecallStrategy.java
  14. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/BlessRecallStrategy.java
  15. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/CFRovnRecallStrategyV1.java
  16. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ContentBaseRecallStrategy.java
  17. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FestivalRecallStrategyV1.java
  18. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomson.java
  19. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomsonFilterDigit.java
  20. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomsonFilterDigitV2.java
  21. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelScoreRecallStrategy.java
  22. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1.java
  23. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1_default.java
  24. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1_sort.java
  25. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV2.java
  26. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV2_sort.java
  27. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3.java
  28. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3_default.java
  29. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3_sort.java
  30. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV4.java
  31. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV5HighValue.java
  32. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV6RootRov.java
  33. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV1.java
  34. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV2.java
  35. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV3.java
  36. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV4.java
  37. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/SceneCFRosnRecallStrategy.java
  38. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/SceneCFRovnRecallStrategy.java
  39. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ShareDeepRecallStrategy.java
  40. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ShareWidthRecallStrategy.java
  41. 0 3
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/TitleTagRecallStrategyV1.java
  42. 101 0
      recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/xxl/RickUserCacheJob.java

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

@@ -0,0 +1,12 @@
+package com.tzld.piaoquan.recommend.server.common;
+
+/**
+ * @author dyp
+ */
+public class RedisKeyConstants {
+
+    public static class Recommend{
+        public static String riskUserMid = "risk:user:mid";
+        public static String riskUserUid = "risk:user:uid";
+    }
+}

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/implement/recall/HistoryLongPeriodFilter.java

@@ -47,9 +47,6 @@ public class HistoryLongPeriodFilter extends AbstractFilter<Video> {
         RecallParam recallParam = recommendService.convertToRecallParam(recommendParam);
         FilterParam filterParam = FilterParamFactory.create(recallParam,
                 list.stream().map(Video::getVideoId).collect(Collectors.toList()));
-        filterParam.setForceTruncation(10000);
-        filterParam.setConcurrent(true);
-        filterParam.setNotUsePreView(false);
         FilterResult filterResult = filterService.filter(filterParam);
         if (filterResult != null && filterResult.getVideoIds() != null) {
             list.removeIf(video -> !filterResult.getVideoIds().contains(video.getVideoId()));

+ 1 - 8
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/model/RecommendParam.java

@@ -39,19 +39,12 @@ public class RecommendParam {
     private int size;
     private String uid;
 
-    // 风险过滤
-    private int expansionFactor;
-    private Boolean riskFilterFlag;
-    private Map<Integer, List<String>> appRegionFiltered;
-
-    @JSONField(serialize = false)
-    private List<Long> videosWithRisk;
-
     private String regionCode;
     private MachineInfo machineInfo;
     private String province;
     private String city;
     private Set<String> abExpCodes;
+    private boolean riskUser;
 
     // 层 - 实验
     private Map<String, String> expIdMap;

+ 35 - 78
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/RecommendService.java

@@ -3,7 +3,11 @@ package com.tzld.piaoquan.recommend.server.service;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.google.common.base.Stopwatch;
 import com.google.common.base.Strings;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
 import com.google.common.reflect.TypeToken;
+import com.tzld.piaoquan.recommend.server.common.RedisKeyConstants;
 import com.tzld.piaoquan.recommend.server.common.base.Constant;
 import com.tzld.piaoquan.recommend.server.gen.common.Result;
 import com.tzld.piaoquan.recommend.server.gen.recommend.*;
@@ -96,8 +100,32 @@ public class RecommendService {
 
     private ThreadLocal<Map<String, Object>> timerLogMapTL = ThreadLocal.withInitial(HashMap::new);
 
+    @Value("${risk.video.filter.switch:true}")
+    private boolean riskVideoFilterSwitch;
+    @ApolloJsonValue("${risk.scene:[]}")
+    private Set<Long> riskScenes;
+
+    private LoadingCache<String, Set<String>> riskUserCache = CacheBuilder.newBuilder()
+            .maximumSize(5)
+            .refreshAfterWrite(300, TimeUnit.SECONDS)
+            .expireAfterWrite(300, TimeUnit.SECONDS)
+            .expireAfterAccess(300, TimeUnit.SECONDS)
+            .build(new CacheLoader<String, Set<String>>() {
+                @Override
+                public Set<String> load(String key) {
+                    Set<String> result = redisTemplate.opsForSet().members(key);
+                    if (CollectionUtils.isEmpty(result)) {
+                        return Collections.emptySet();
+                    }
+                    return result;
+                }
+            });
+
     @PostConstruct
     public void init() {
+        Set<String> data1 = riskUserCache.getUnchecked(RedisKeyConstants.Recommend.riskUserUid);
+        Set<String> data2 = riskUserCache.getUnchecked(RedisKeyConstants.Recommend.riskUserMid);
+        log.info("riskUserCache uid size {}  mid size {}", data1.size(), data2.size());
     }
 
     public RecommendResponse homepageRecommend(RecommendRequest request) {
@@ -390,52 +418,13 @@ public class RecommendService {
         param.setLastDigit(lastDigit);
 
         // 风险过滤
-        List<String> keysRisk = new ArrayList<>();
-        keysRisk.add("RISK_SHIELD_FILTER_RULE_V1_JSON");
-        keysRisk.add("RISK_SHIELD_FILTER_VIDEO_V1_STR");
-        keysRisk.add("RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT");
-        keysRisk.add("RISK_SHIELD_FILTER_FLAG_BOOL");
-        List<String> valuesRisk = redisTemplate.opsForValue().multiGet(keysRisk);
-        String RISK_SHIELD_FILTER_RULE_V1_JSON = "";
-        String RISK_SHIELD_FILTER_VIDEO_V1_STR = "";
-        String RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT = "";
-        String RISK_SHIELD_FILTER_FLAG_BOOL = "";
-        if (valuesRisk != null && valuesRisk.size() == 4) {
-            RISK_SHIELD_FILTER_RULE_V1_JSON = valuesRisk.get(0);
-            RISK_SHIELD_FILTER_VIDEO_V1_STR = valuesRisk.get(1);
-            RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT = valuesRisk.get(2);
-            RISK_SHIELD_FILTER_FLAG_BOOL = valuesRisk.get(3);
-        } else {
-            log.error("risk rule read redis is wrong");
-        }
-        Map<Integer, List<String>> appRegionFiltered = ParserUtils.parseJsonForRiskRule(RISK_SHIELD_FILTER_RULE_V1_JSON);
-        List<Long> videosWithRisk = ParserUtils.parseJsonForRiskVideos(RISK_SHIELD_FILTER_VIDEO_V1_STR);
-        int expansionFactor = 5;
-        if (RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT != null) {
-            try {
-                expansionFactor = Integer.parseInt(RISK_SHIELD_FILTER_EXPANSION_FACTOR_INT);
-            } catch (NumberFormatException e) {
-                expansionFactor = 5;
-            }
-        }
-        // 容灾
-        if (expansionFactor < 5) {
-            expansionFactor = 5;
-        } else if (expansionFactor > 25) {
-            expansionFactor = 25;
-        }
-        Boolean riskFilterFlag = false;
-        if (RISK_SHIELD_FILTER_FLAG_BOOL != null) {
-            try {
-                riskFilterFlag = Boolean.parseBoolean(RISK_SHIELD_FILTER_FLAG_BOOL.toLowerCase());
-            } catch (Exception e) {
-                riskFilterFlag = false;
-            }
+        if (riskVideoFilterSwitch) {
+            boolean riskUser = riskScenes.contains(request.getHotSceneType())
+                    || riskUserCache.getUnchecked(RedisKeyConstants.Recommend.riskUserUid).contains(param.getUid())
+                    || riskUserCache.getUnchecked(RedisKeyConstants.Recommend.riskUserMid).contains(param.getMid());
+            param.setRiskUser(riskUser);
         }
-        param.setAppRegionFiltered(appRegionFiltered);
-        param.setVideosWithRisk(videosWithRisk);
-        param.setExpansionFactor(expansionFactor);
-        param.setRiskFilterFlag(riskFilterFlag);
+
 
         if (request.hasMachineInfo()) {
             MachineInfoProto machineInfoProto = request.getMachineInfo();
@@ -568,10 +557,7 @@ public class RecommendService {
         recallParam.setSize(param.getSize());
         recallParam.setUid(param.getUid());
         //风险过滤
-        recallParam.setExpansionFactor(param.getExpansionFactor());
-        recallParam.setRiskFilterFlag(param.getRiskFilterFlag());
-        recallParam.setVideosWithRisk(param.getVideosWithRisk());
-        recallParam.setAppRegionFiltered(param.getAppRegionFiltered());
+        recallParam.setRiskUser(param.isRiskUser());
         recallParam.setAbExpCodes(param.getAbExpCodes());
 
         recallParam.setProvince(param.getProvince());
@@ -629,35 +615,6 @@ public class RecommendService {
         return rankParam;
     }
 
-    @Deprecated
-    private void markFlowPoolVideo(RecommendParam param, List<Video> videos) {
-        // TODO
-        for (Video data : videos) {
-            try {
-                Long videoId = data.getVideoId();
-                String quick_flow_pool_isin_flow_pool_key =
-                        String.format("flow:pool:quick:video:ids:%s:3", param.getAppType());
-                String quick_flow_pool_flow_pool_key =
-                        String.format("flow:pool:quick:video:%s:3:%s", param.getAppType(), videoId);
-                if (redisTemplate.opsForSet().isMember(quick_flow_pool_isin_flow_pool_key, String.valueOf(videoId))) {
-                    data.setFlowPool(redisTemplate.opsForSet().randomMember(quick_flow_pool_flow_pool_key));
-                    data.setInFlowPool(true);
-                } else {
-                    String isIn_flow_pool_key =
-                            String.format("flow:pool:video:ids:%s", param.getAppType());
-                    String flow_pool_key =
-                            String.format("flow:pool:video:%s:%s", param.getAppType(), videoId);
-                    if (redisTemplate.opsForSet().isMember(isIn_flow_pool_key, String.valueOf(videoId))) {
-                        data.setFlowPool(redisTemplate.opsForSet().randomMember(flow_pool_key));
-                        data.setInFlowPool(true);
-                    }
-                }
-            } catch (Exception e) {
-                log.error("markFlowPoolVideo error data={}", JSONUtils.toJson(data));
-            }
-        }
-    }
-
     public void updateCache(RecommendRequest request, RecommendParam param, List<Video> videos) {
         if (StringUtils.isBlank(request.getMid())
                 || CollectionUtils.isEmpty(videos)) {

+ 1 - 36
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/AbstractFilterService.java

@@ -24,37 +24,6 @@ public abstract class AbstractFilterService {
 
     private final ExecutorService pool = ThreadPoolFactory.filterPool();
 
-
-    private List<Long> filterWithRiskVideo(boolean riskFlag,
-                                           int appType,
-                                           String regionCode,
-                                           Map<Integer, List<String>> rules,
-                                           List<Long> videosWithRisk,
-                                           List<Long> videoIds,
-                                           int forceTruncation) {
-        if (!riskFlag) {
-            return this.truncation(videoIds, forceTruncation);
-        }
-        // 1 判断是否过滤,不展示的app+区域列表。
-        boolean filterFlag;
-        if (rules.containsKey(appType)) {
-            filterFlag = rules.get(appType).contains(regionCode);
-        } else {
-            filterFlag = true;
-        }
-        if (!filterFlag) {
-            return this.truncation(videoIds, forceTruncation);
-        }
-        // 2 开始过滤。
-        List<Long> videoIdNew = new ArrayList<>();
-        for (Long videoId : videoIds) {
-            if (!videosWithRisk.contains(videoId)) {
-                videoIdNew.add(videoId);
-            }
-        }
-        return this.truncation(videoIdNew, forceTruncation);
-    }
-
     private List<Long> truncation(List<Long> videoIds, int forceTruncation) {
         if (forceTruncation == 0) {
             return videoIds;
@@ -64,11 +33,6 @@ public abstract class AbstractFilterService {
     }
 
     protected List<Long> viewFilter(FilterParam param) {
-        // hardcode : 风险过滤会做截断,所以先同步调用
-        List<Long> riskVideoIds = filterWithRiskVideo(param.getRiskFilterFlag(),
-                param.getAppType(), param.getRegionCode(), param.getAppRegionFiltered(), param.getVideosWithRisk(),
-                param.getVideoIds(), param.getForceTruncation());
-        param.setVideoIds(riskVideoIds);
 
         List<FilterStrategy> strategies = getStrategies(param);
         CountDownLatch cdl = new CountDownLatch(strategies.size());
@@ -114,6 +78,7 @@ public abstract class AbstractFilterService {
         strategies.add(ServiceBeanFactory.getBean(RecommendStatusStrategy.class));
         strategies.add(ServiceBeanFactory.getBean(SupplyExpStrategy.class));
         strategies.add(ServiceBeanFactory.getBean(AppletVideoStatusStrategy.class));
+        strategies.add(ServiceBeanFactory.getBean(RiskVideoStrategy.class));
         switch (param.getAppType()) {
             case 0:
             case 4:

+ 2 - 7
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/FilterParam.java

@@ -18,17 +18,10 @@ public class FilterParam {
     private String uid;
 
     // 风险过滤
-    private Boolean riskFilterFlag;
-    private Map<Integer, List<String>> appRegionFiltered;
-    private List<Long> videosWithRisk;
     private String regionCode;
     private String cityCode;
-    private int forceTruncation;
     private Set<String> abExpCodes;
 
-    public boolean concurrent; // hardcode 临时解决过滤慢的问题
-    public boolean notUsePreView;
-
     // 层 - 实验
     private Map<String, String> expIdMap;
 
@@ -38,4 +31,6 @@ public class FilterParam {
 
     private String clientIp;
 
+    private boolean riskUser;
+
 }

+ 50 - 41
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/strategy/RiskVideoStrategy.java

@@ -1,66 +1,75 @@
 package com.tzld.piaoquan.recommend.server.service.filter.strategy;
 
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.google.common.cache.CacheBuilder;
+import com.google.common.cache.CacheLoader;
+import com.google.common.cache.LoadingCache;
+import com.tzld.piaoquan.recommend.server.repository.WxVideoTagRel;
+import com.tzld.piaoquan.recommend.server.repository.WxVideoTagRelRepository;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterStrategy;
+import com.tzld.piaoquan.recommend.server.util.CommonCollectionUtils;
+import com.tzld.piaoquan.recommend.server.util.JSONUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+import java.util.stream.Collectors;
 
 /**
  * @author dyp
  */
 @Component
+@Slf4j
 public class RiskVideoStrategy implements FilterStrategy {
 
+    @ApolloJsonValue("${risk.video.tag:[]}")
+    private List<Long> riskVideoTagIds;
+
+    @Autowired
+    private WxVideoTagRelRepository repository;
+    // 内存持久保存不淘汰
+    private LoadingCache<String, Set<Long>> riskVideoCache = CacheBuilder.newBuilder()
+            .maximumSize(10)
+            .refreshAfterWrite(60, TimeUnit.SECONDS)
+            .expireAfterWrite(60, TimeUnit.SECONDS)
+            .expireAfterAccess(60, TimeUnit.SECONDS)
+            .build(new CacheLoader<String, Set<Long>>() {
+                @Override
+                public Set<Long> load(String key) {
+                    List<WxVideoTagRel> rels = repository.findAllByTagIdIn(riskVideoTagIds);
+                    return CommonCollectionUtils.toSet(rels, WxVideoTagRel::getVideoId);
+                }
+            });
+
     @Override
     public List<Long> filter(FilterParam param) {
-
-        if (CollectionUtils.isEmpty(param.getVideoIds())) {
+        if (param == null) {
             return Collections.emptyList();
         }
-        boolean riskFlag = param.getRiskFilterFlag();
-        int appType = param.getAppType();
-        String regionCode = param.getRegionCode();
-        Map<Integer, List<String>> rules = param.getAppRegionFiltered();
-        List<Long> videosWithRisk = param.getVideosWithRisk();
-        List<Long> videoIds = param.getVideoIds();
-
-
-        if (!riskFlag) {
-            return this.truncation(param.getVideoIds(), param.getForceTruncation());
-        }
-        // 1 判断是否过滤,不展示的app+区域列表。
-        boolean filterFlag = false;
-        if (rules.containsKey(appType)) {
-            filterFlag = false;
-            if (rules.get(appType).contains(regionCode)) {
-                filterFlag = true;
-            }
-        } else {
-            filterFlag = true;
-        }
-        if (!filterFlag) {
-            return this.truncation(videoIds, param.getForceTruncation());
-        }
-        // 2 开始过滤。
-        List<Long> videoIdNew = new ArrayList<>();
-        for (Long videoId : videoIds) {
-            if (!videosWithRisk.contains(videoId)) {
-                videoIdNew.add(videoId);
-            }
+        if (CollectionUtils.isEmpty(param.getVideoIds())) {
+            return param.getVideoIds();
         }
-        return this.truncation(videoIdNew, param.getForceTruncation());
-    }
 
-    private List<Long> truncation(List<Long> videoIds, int forceTruncation) {
-        if (forceTruncation == 0) {
-            return videoIds;
-        } else {
-            return videoIds.subList(0, Math.min(forceTruncation, videoIds.size()));
+        if (!param.isRiskUser()) {
+            return param.getVideoIds();
         }
+
+        Set<Long> riskVids = riskVideoCache.getUnchecked("");
+        List<Long> videoIds = param.getVideoIds().stream()
+                .filter(l -> !riskVids.contains(l))
+                .collect(Collectors.toList());
+
+        log.info("RiskVideoStrategy \t param={} \t before={} \t after={}",
+                JSONUtils.toJson(param),
+                JSONUtils.toJson(param.getVideoIds()),
+                JSONUtils.toJson(videoIds));
+
+        return videoIds;
     }
 }

+ 2 - 6
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/FilterParamFactory.java

@@ -20,9 +20,7 @@ public class FilterParamFactory {
         filterParam.setExpIdMap(param.getExpIdMap());
 
         // 风险过滤
-        filterParam.setRiskFilterFlag(param.getRiskFilterFlag());
-        filterParam.setVideosWithRisk(param.getVideosWithRisk());
-        filterParam.setAppRegionFiltered(param.getAppRegionFiltered());
+        filterParam.setRiskUser(param.isRiskUser());
         filterParam.setRegionCode(param.getRegionCode());
         filterParam.setAbExpCodes(param.getAbExpCodes());
         filterParam.setCityCode(param.getCityCode());
@@ -41,9 +39,7 @@ public class FilterParamFactory {
         filterParam.setExpIdMap(param.getExpIdMap());
 
         // 风险过滤
-        filterParam.setRiskFilterFlag(param.getRiskFilterFlag());
-        filterParam.setVideosWithRisk(param.getVideosWithRisk());
-        filterParam.setAppRegionFiltered(param.getAppRegionFiltered());
+        filterParam.setRiskUser(param.isRiskUser());
         filterParam.setRegionCode(param.getRegionCode());
         filterParam.setAbExpCodes(param.getAbExpCodes());
         filterParam.setCityCode(param.getCityCode());

+ 2 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallParam.java

@@ -30,10 +30,6 @@ public class RecallParam {
     private Long videoId;
     private String uid;
     private boolean specialRecommend;
-    private int expansionFactor;
-    private Boolean riskFilterFlag;
-    private Map<Integer, List<String>> appRegionFiltered;
-    private List<Long> videosWithRisk;
     private Set<String> abExpCodes;
     // 层 - 实验
     private Map<String, String> expIdMap;
@@ -43,4 +39,6 @@ public class RecallParam {
 
     private String clientIp;
 
+    private boolean riskUser;
+
 }

+ 4 - 27
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -8,6 +8,8 @@ import com.tzld.piaoquan.recommend.server.model.Video;
 import com.tzld.piaoquan.recommend.server.service.filter.strategy.BlacklistContainer;
 import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConstants;
 import com.tzld.piaoquan.recommend.server.service.recall.strategy.*;
+import com.tzld.piaoquan.recommend.server.util.CommonCollectionUtils;
+import com.tzld.piaoquan.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -58,8 +60,7 @@ public class RecallService implements ApplicationContextAware {
 
     public RecallResult recall(RecallParam param) {
         List<RecallStrategy> strategies = getRecallStrategy(param);
-//        log.info("strategies {}", JSONUtils.toJson(CommonCollectionUtils.toList(strategies,
-//        o -> o.getClass().getSimpleName())));
+        log.info("strategies {}", JSONUtils.toJson(CommonCollectionUtils.toList(strategies, o -> o.getClass().getSimpleName())));
         CountDownLatch cdl = new CountDownLatch(strategies.size());
         List<Future<RecallResult.RecallData>> recallResultFutures = new ArrayList<>();
         for (final RecallStrategy strategy : strategies) {
@@ -183,7 +184,7 @@ public class RecallService implements ApplicationContextAware {
                 strategies.addAll(getRegionRecallStrategy(param));
         }
         // 命中用户黑名单不走流量池
-        if (!hitUserBlacklist || !isInBlacklist) {
+        if (!param.isRiskUser() &&  (!hitUserBlacklist || !isInBlacklist)) {
             Set<String> abExpCodes = param.getAbExpCodes();
             if (Objects.nonNull(abExpCodes) && abExpCodes.contains(Constant.SUPPLY_AB_CODE_ID)) {
 //            if (Objects.equals(Constant.SUPPLY_AB_CODE, abCode)) {
@@ -232,30 +233,6 @@ public class RecallService implements ApplicationContextAware {
                 }
             }
         }
-//            if ("60126".equals(abCode) || "60125".equals(abCode) || "60124".equals(abCode)
-//            || "60105".equals(abCode) || "60106".equals(abCode)  || "60107".equals(abCode)
-//            || "60113".equals(abCode) || "60114".equals(abCode)
-//            || "60115".equals(abCode)){
-//                strategies.add(strategyMap.get(FlowPoolWithLevelRecallStrategyTomsonFilterDigit.class.getSimpleName()));
-//            }else{
-//                int lastDigit = param.getLastDigit();
-//                String lastDigitAB = lastDigitAbcode != null? lastDigitAbcode.getOrDefault(lastDigit, "default"): "default";
-//                switch (lastDigitAB){
-//                    case "random":
-//                        strategies.add(strategyMap.get(FlowPoolWithLevelRecallStrategyFilterDigit.class.getSimpleName()));
-//                        break;
-//                    case "tomson":
-//                        strategies.add(strategyMap.get(FlowPoolWithLevelRecallStrategyTomsonFilterDigit.class.getSimpleName()));
-//                        break;
-//                    case "score":
-//                        strategies.add(strategyMap.get(FlowPoolWithLevelScoreRecallStrategy.class.getSimpleName()));
-//                        break;
-//                    default:
-//                        strategies.add(strategyMap.get(FlowPoolWithLevelRecallStrategyFilterDigit.class.getSimpleName()));
-//                        break;
-//                }
-//            }
-
 
         //3:通过“abcode”控制“召回子策略”
         switch (abCode) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AbstractNewContentVideoRecallStrategy.java

@@ -61,9 +61,6 @@ public abstract class AbstractNewContentVideoRecallStrategy implements RecallStr
             }
             // 3 召回内部过滤
             FilterParam filterParam = FilterParamFactory.create(param, videoIdList);
-            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())) {

+ 1 - 2
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AbstractRegionRecallStrategy.java

@@ -112,7 +112,7 @@ public abstract class AbstractRegionRecallStrategy implements RecallStrategy {
 
         // 召回
         // 风险过滤 扩大因子
-        int getSize = param.getSize() * param.getExpansionFactor();
+        int getSize = param.getSize() * 5;
         int freq = 0;
         String lastVideoId = "";
         List<Video> results = new ArrayList<>();
@@ -134,7 +134,6 @@ public abstract class AbstractRegionRecallStrategy implements RecallStrategy {
                 videoMap.put(NumberUtils.toLong(t.getValue(), 0), t.getScore());
             }
             FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
-            filterParam.setForceTruncation(20);
 
             FilterResult filterResult = filterService.filter(filterParam);
 

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/AppFallbackRecallStrategy.java

@@ -55,9 +55,6 @@ public class AppFallbackRecallStrategy implements RecallStrategy {
                 .map(Long::parseLong)
                 .collect(Collectors.toList());
         FilterParam filterParam = FilterParamFactory.create(param, videoIdList);
-        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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/BlessRecallStrategy.java

@@ -59,9 +59,6 @@ public class BlessRecallStrategy implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/CFRovnRecallStrategyV1.java

@@ -71,9 +71,6 @@ public class CFRovnRecallStrategyV1 implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, vids);
-        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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ContentBaseRecallStrategy.java

@@ -61,9 +61,6 @@ public class ContentBaseRecallStrategy implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FestivalRecallStrategyV1.java

@@ -58,9 +58,6 @@ public class FestivalRecallStrategyV1 implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

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

@@ -155,9 +155,6 @@ public class FlowPoolWithLevelRecallStrategyTomson extends AbstractFlowPoolWithL
 
         // 3 召回内部过滤
         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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomsonFilterDigit.java

@@ -140,9 +140,6 @@ public class FlowPoolWithLevelRecallStrategyTomsonFilterDigit extends AbstractFl
         FilterParam filterParam = FilterParamFactory.create(param, result.stream()
                 .map(Pair::getLeft)
                 .collect(Collectors.toList()));
-        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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelRecallStrategyTomsonFilterDigitV2.java

@@ -140,9 +140,6 @@ public class FlowPoolWithLevelRecallStrategyTomsonFilterDigitV2 extends Abstract
         FilterParam filterParam = FilterParamFactory.create(param, result.stream()
                 .map(Pair::getLeft)
                 .collect(Collectors.toList()));
-        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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FlowPoolWithLevelScoreRecallStrategy.java

@@ -155,9 +155,6 @@ public class FlowPoolWithLevelScoreRecallStrategy extends AbstractFlowPoolWithLe
 
         // 3 召回内部过滤
         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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1.java

@@ -52,9 +52,6 @@ public class RegionRealtimeRecallStrategyV1 implements RecallStrategy {
         long t1 = System.currentTimeMillis();
         // 3 召回内部过滤
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
-        filterParam.setForceTruncation(10000);
-        filterParam.setConcurrent(true);
-        filterParam.setNotUsePreView(false);
         FilterResult filterResult = filterService.filter(filterParam);
         List<Video> videosResult = new ArrayList<>();
         List<Long> videosResultId = new ArrayList<>();

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1_default.java

@@ -63,9 +63,6 @@ public class RegionRealtimeRecallStrategyV1_default implements RecallStrategy {
         long t1 = System.currentTimeMillis();
         // 3 召回内部过滤
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
-        filterParam.setForceTruncation(10000);
-        filterParam.setConcurrent(true);
-        filterParam.setNotUsePreView(false);
         FilterResult filterResult = filterService.filter(filterParam);
         List<Video> videosResult = new ArrayList<>();
         List<Long> videosResultId = new ArrayList<>();

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV1_sort.java

@@ -53,9 +53,6 @@ public class RegionRealtimeRecallStrategyV1_sort implements RecallStrategy {
         long t1 = System.currentTimeMillis();
         // 3 召回内部过滤
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
-        filterParam.setForceTruncation(10000);
-        filterParam.setConcurrent(true);
-        filterParam.setNotUsePreView(false);
         FilterResult filterResult = filterService.filter(filterParam);
         List<Video> videosResult = new ArrayList<>();
         List<Long> videosResultId = new ArrayList<>();

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV2.java

@@ -43,9 +43,6 @@ public class RegionRealtimeRecallStrategyV2 implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV2_sort.java

@@ -44,9 +44,6 @@ public class RegionRealtimeRecallStrategyV2_sort implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3.java

@@ -50,9 +50,6 @@ public class RegionRealtimeRecallStrategyV3 implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3_default.java

@@ -60,9 +60,6 @@ public class RegionRealtimeRecallStrategyV3_default implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV3_sort.java

@@ -50,9 +50,6 @@ public class RegionRealtimeRecallStrategyV3_sort implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV4.java

@@ -42,9 +42,6 @@ public class RegionRealtimeRecallStrategyV4 implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV5HighValue.java

@@ -43,9 +43,6 @@ public class RegionRealtimeRecallStrategyV5HighValue implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV6RootRov.java

@@ -52,9 +52,6 @@ public class RegionRealtimeRecallStrategyV6RootRov implements RecallStrategy {
         long t1 = System.currentTimeMillis();
         // 3 召回内部过滤
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV1.java

@@ -41,9 +41,6 @@ public class RegionRealtimeRecallStrategyV7VovLongTermV1 implements RecallStrate
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV2.java

@@ -41,9 +41,6 @@ public class RegionRealtimeRecallStrategyV7VovLongTermV2 implements RecallStrate
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV3.java

@@ -41,9 +41,6 @@ public class RegionRealtimeRecallStrategyV7VovLongTermV3 implements RecallStrate
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/RegionRealtimeRecallStrategyV7VovLongTermV4.java

@@ -41,9 +41,6 @@ public class RegionRealtimeRecallStrategyV7VovLongTermV4 implements RecallStrate
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/SceneCFRosnRecallStrategy.java

@@ -50,9 +50,6 @@ public class SceneCFRosnRecallStrategy implements RecallStrategy {
             Map<Long, Double> vid2Score = getIdScoreMap(headVid, redisValue);
             List<Long> vids = new ArrayList<>(vid2Score.keySet());
             FilterParam filterParam = FilterParamFactory.create(param, vids);
-            filterParam.setForceTruncation(10000);
-            filterParam.setConcurrent(true);
-            filterParam.setNotUsePreView(false);
             FilterResult filterResult = filterService.filter(filterParam);
             if (filterResult != null && CollectionUtils.isNotEmpty(filterResult.getVideoIds())) {
                 filterResult.getVideoIds().forEach(vid -> {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/SceneCFRovnRecallStrategy.java

@@ -50,9 +50,6 @@ public class SceneCFRovnRecallStrategy implements RecallStrategy {
             Map<Long, Double> vid2Score = getIdScoreMap(headVid, redisValue);
             List<Long> vids = new ArrayList<>(vid2Score.keySet());
             FilterParam filterParam = FilterParamFactory.create(param, vids);
-            filterParam.setForceTruncation(10000);
-            filterParam.setConcurrent(true);
-            filterParam.setNotUsePreView(false);
             FilterResult filterResult = filterService.filter(filterParam);
             if (filterResult != null && CollectionUtils.isNotEmpty(filterResult.getVideoIds())) {
                 filterResult.getVideoIds().forEach(vid -> {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ShareDeepRecallStrategy.java

@@ -50,9 +50,6 @@ public class ShareDeepRecallStrategy implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/ShareWidthRecallStrategy.java

@@ -50,9 +50,6 @@ public class ShareWidthRecallStrategy implements RecallStrategy {
             videoMap.put(v.getLeft(), v.getRight());
         }
         FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.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())) {

+ 0 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/TitleTagRecallStrategyV1.java

@@ -149,9 +149,6 @@ public class TitleTagRecallStrategyV1 implements RecallStrategy {
         }
 
         FilterParam filterParam = FilterParamFactory.create(param, sortedKeys);
-        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())) {

+ 101 - 0
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/xxl/RickUserCacheJob.java

@@ -0,0 +1,101 @@
+package com.tzld.piaoquan.recommend.server.xxl;
+
+import com.aliyun.odps.data.Record;
+import com.tzld.piaoquan.recommend.server.common.RedisKeyConstants;
+import com.tzld.piaoquan.recommend.server.service.odps.ODPSManager;
+import com.xxl.job.core.biz.model.ReturnT;
+import com.xxl.job.core.handler.annotation.XxlJob;
+import com.xxl.job.core.log.XxlJobLogger;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.RandomUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.dao.DataAccessException;
+import org.springframework.data.redis.core.*;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+/**
+ * @author sunxy
+ */
+@Component
+@Slf4j
+public class RickUserCacheJob {
+
+    @Autowired
+    private ODPSManager odpsManager;
+
+    @Autowired
+    private RedisTemplate<String, String> redisTemplate;
+
+    @XxlJob("updateRiskUserCache")
+    public ReturnT<String> upldateRiskUserCache(String params) {
+        // 执行 ODPS Sql,获取数据
+        Pair<List<String>, List<String>> pairs = queryRiskUser();
+        if (pairs == null) {
+            XxlJobLogger.log("updateRiskUserCache, data is empty");
+            return ReturnT.SUCCESS;
+        }
+        List<String> uids = pairs.getLeft();
+        if (CollectionUtils.isNotEmpty(uids)) {
+            redisTemplate.executePipelined(new SessionCallback<String>() {
+                @Override
+                public <K, V> String execute(RedisOperations<K, V> redisOperations) throws DataAccessException {
+                    redisOperations.delete((K) RedisKeyConstants.Recommend.riskUserUid);
+                    ((SetOperations<String, String>) redisOperations.opsForSet()).add(RedisKeyConstants.Recommend.riskUserUid,
+                            uids.toArray(new java.lang.String[uids.size()]));
+                    return null;
+                }
+            });
+        } else {
+            redisTemplate.delete(RedisKeyConstants.Recommend.riskUserUid);
+        }
+
+        List<String> mids = pairs.getRight();
+        if (CollectionUtils.isNotEmpty(mids)) {
+            redisTemplate.executePipelined(new SessionCallback<String>() {
+                @Override
+                public <K, V> String execute(RedisOperations<K, V> redisOperations) throws DataAccessException {
+                    redisOperations.delete((K) RedisKeyConstants.Recommend.riskUserMid);
+                    ((SetOperations<String, String>) redisOperations.opsForSet()).add(RedisKeyConstants.Recommend.riskUserMid,
+                            mids.toArray(new java.lang.String[mids.size()]));
+                    return null;
+                }
+            });
+        } else {
+            redisTemplate.delete(RedisKeyConstants.Recommend.riskUserMid);
+        }
+        XxlJobLogger.log("upldateRiskUserCache finish");
+        return ReturnT.SUCCESS;
+    }
+
+    private Pair<List<String>, List<String>> queryRiskUser() {
+        String sql = "SELECT uid,mid FROM loghubods.wx_review_staff_list WHERE dt = MAX_PT('loghubods" +
+                ".wx_review_staff_list');";
+        List<Record> records = odpsManager.query(sql);
+        if (records == null || records.size() == 0) {
+            return null;
+        }
+
+        List<String> uids = new ArrayList<>();
+        List<String> mids = new ArrayList<>();
+        for (Record record : records) {
+            String uid = String.valueOf(record.getBigint(0));
+            if (StringUtils.isNotBlank(uid)) {
+                uids.add(uid);
+            }
+
+            if (StringUtils.isNotBlank(record.getString(1))) {
+                mids.add(record.getString(1));
+            }
+        }
+        return Pair.of(uids, mids);
+    }
+
+
+}