Prechádzať zdrojové kódy

feat:添加节日视频降权实验

zhaohaipeng 1 týždeň pred
rodič
commit
4fda0e724c

+ 9 - 11
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/processor/RankProcessorBoost.java

@@ -85,12 +85,15 @@ public class RankProcessorBoost {
 
     }
 
-    public static void boostByFestive(RankParam param, List<Video> rovList, Set<String> festiveRootSessionIdTails) {
+    public static void boostByFestive(RankParam param, List<Video> rovList, Map<String, String> rankReduceByFestiveConfig) {
 
-        if (CollectionUtils.isEmpty(param.getAbExpCodes()) || !param.getAbExpCodes().contains("747")){
+        String abCode = rankReduceByFestiveConfig.getOrDefault("abCode", "747");
+
+        if (CollectionUtils.isEmpty(param.getAbExpCodes()) || StringUtils.isEmpty(abCode) || !param.getAbExpCodes().contains(abCode)) {
             return;
         }
 
+        Set<String> festiveRootSessionIdTails = new HashSet<>(Arrays.asList(rankReduceByFestiveConfig.getOrDefault("festiveRootSessionIdTails", "0,1,2,3,4,a,b,c").split(",")));
         String rootSessionId = param.getRootSessionId();
         if (StringUtils.isBlank(rootSessionId) || CollectionUtils.isEmpty(festiveRootSessionIdTails)) {
             return;
@@ -101,6 +104,7 @@ public class RankProcessorBoost {
         }
 
 
+        double reduceCoefficient = Double.parseDouble(rankReduceByFestiveConfig.getOrDefault("reduceCoefficient", "0.2"));
         String format = "yyyy-MM-dd";
         int nowHour = LocalDateTime.now().getHour();
         LocalDate now = LocalDate.now();
@@ -119,15 +123,9 @@ public class RankProcessorBoost {
                 LocalDate festiveDate = DateUtils.convertStrToLocalDate(festiveDateStr, format);
                 // 计算今天与节日相差的天数,如果节日时间在之后,返回负数
                 long diffDay = ChronoUnit.DAYS.between(festiveDate, now);
-                if (diffDay == 0 && nowHour >= 10) {
-                    double reduceCoefficient = 0.2;
-                    double originScore = video.getScore();
-                    video.setScore(originScore * reduceCoefficient);
-                    video.setSortScore(originScore * reduceCoefficient);
-                    video.getScoresMap().put("festiveReduceCoefficient", reduceCoefficient);
-                    break;
-                } else if (diffDay >= 1 && diffDay <= 2) {
-                    double reduceCoefficient = 0.2;
+                boolean flag = (diffDay == 0 && nowHour >= 10) || (diffDay >= 1 && diffDay <= 2);
+                if (flag) {
+                    log.info("[FestiveVideoReduce] video: {}, festiveName: {}, festiveDate: {}, reduceCoefficient: {}", video.getVideoId(), festiveName, festiveDateStr, reduceCoefficient);
                     double originScore = video.getScore();
                     video.setScore(originScore * reduceCoefficient);
                     video.setSortScore(originScore * reduceCoefficient);

+ 3 - 4
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/strategy/RankStrategy4RegionMergeModelBasic.java

@@ -43,9 +43,8 @@ public abstract class RankStrategy4RegionMergeModelBasic extends RankService {
     @Value("${new.flow.pool.select.rate:1}")
     private double newFlowPoolSelectRate;
 
-    @Value("#{'${rootsessionid.tails.festive:}'.split(',')}")
-    private Set<String> festiveRootSessionIdTails;
-
+    @ApolloJsonValue("${RankReduceByFestiveConfig:{}}")
+    private Map<String, String> rankReduceByFestiveConfig = new HashMap<>();
 
     String CLASS_NAME = this.getClass().getSimpleName();
 
@@ -122,7 +121,7 @@ public abstract class RankStrategy4RegionMergeModelBasic extends RankService {
 
         // 节日视频降权
 
-        RankProcessorBoost.boostByFestive(param, rovVideos, festiveRootSessionIdTails);
+        RankProcessorBoost.boostByFestive(param, rovVideos, rankReduceByFestiveConfig);
 
         // 7 流量池按比例强插
         List<Video> result = new ArrayList<>();