Browse Source

ADD: 判断是否在允许强插的时间范围内

sunxy 1 year ago
parent
commit
a4cde471c0

+ 18 - 7
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/rank/processor/RankProcessorTagFilter.java

@@ -8,13 +8,13 @@ public class RankProcessorTagFilter {
 
     public static void processor(List<Video> rov, List<Video> flow, Map<String, Map<String, String>> rule) {
 
-        Map<String, Double> tag2Rate = new HashMap<>();
+        Map<String, String> tag2Rate = new HashMap<>();
         Map<String, List<Pair<String, String>>> tag2Dates = new HashMap<>();
         for (Map.Entry<String, Map<String, String>> entry : rule.entrySet()){
             String key = entry.getKey();
             Map<String, String> value = entry.getValue();
             if (value.containsKey("filter_rate")){
-                tag2Rate.put(key, Double.valueOf(value.get("filter_rate")));
+                tag2Rate.put(key, value.get("filter_rate"));
             }
             if (value.containsKey("filter_date")){
                 List<Pair<String, String>> tmpList = new ArrayList<>();
@@ -29,11 +29,22 @@ public class RankProcessorTagFilter {
 
         // 通过过滤概率获取本轮过滤tag集合
         Set<String> filterTags = new HashSet<>();
-        for (Map.Entry<String, Double> entry : tag2Rate.entrySet()) {
-            String key = entry.getKey();
-            Double value = entry.getValue();
-            if (Math.random() <= value){
-                filterTags.add(key);
+        for (Map.Entry<String, String> entry : tag2Rate.entrySet()) {
+            try {
+                String key = entry.getKey();
+                String value = entry.getValue();
+                String[] boostArray = value.split("-");
+                if (boostArray.length != 2) {
+                    continue;
+                }
+                double min = Double.parseDouble(boostArray[0]);
+                double max = Double.parseDouble(boostArray[1]);
+                // 生成min到max之间的随机数
+                double randomValue = min + (Math.random() * (max - min));
+                if (Math.random() <= randomValue) {
+                    filterTags.add(key);
+                }
+            } catch (Exception ignored) {
             }
         }