|
@@ -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) {
|
|
|
}
|
|
|
}
|
|
|
|