|
|
@@ -76,13 +76,18 @@ public class HeadCate2AndChannelRovRecallStrategy implements RecallStrategy {
|
|
|
Map<String, Map<String, Double>> recallVideoMap = this.cate2Recall(new ArrayList<>(mergeCate2Pair.keySet()), channelName);
|
|
|
|
|
|
// 过滤
|
|
|
- List<Long> allVid = recallVideoMap.values().stream()
|
|
|
- .map(Map::keySet)
|
|
|
- .flatMap(Collection::stream)
|
|
|
- .map(Long::parseLong)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ Map<Long, Double> scoresMap = new HashMap<>();
|
|
|
+ for (Map.Entry<String, Double> entry : mergeCate2Pair.entrySet()) {
|
|
|
+ Double cateScore = entry.getValue();
|
|
|
+ Map<String, Double> videoMap = recallVideoMap.getOrDefault(entry.getKey(), new HashMap<>());
|
|
|
+ for (Map.Entry<String, Double> v : videoMap.entrySet()) {
|
|
|
+ long vid = Long.parseLong(v.getKey());
|
|
|
+ scoresMap.merge(vid, cateScore * v.getValue(), Math::max);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ List<Long> allVid = new ArrayList<>(scoresMap.keySet());
|
|
|
|
|
|
- FilterParam filterParam = FilterParamFactory.create(param, allVid, pushFrom(), null);
|
|
|
+ FilterParam filterParam = FilterParamFactory.create(param, allVid, pushFrom(), scoresMap);
|
|
|
FilterResult filterResult = filterService.filter(filterParam);
|
|
|
Set<Long> filterVids = new HashSet<>(filterResult.getVideoIds());
|
|
|
filterVids.remove(param.getVideoId());
|