|
@@ -66,25 +66,8 @@ public class RankService {
|
|
rovRecallRank.addAll(extractAndSort(param, Region24HRecallStrategy.PUSH_FORM));
|
|
rovRecallRank.addAll(extractAndSort(param, Region24HRecallStrategy.PUSH_FORM));
|
|
rovRecallRank.addAll(extractAndSort(param, RegionRelative24HRecallStrategy.PUSH_FORM));
|
|
rovRecallRank.addAll(extractAndSort(param, RegionRelative24HRecallStrategy.PUSH_FORM));
|
|
rovRecallRank.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
|
|
rovRecallRank.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
|
|
- // TODO 为什么sim recall 和 return recall 不去重
|
|
|
|
- rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
|
|
|
|
- rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
|
|
|
|
|
|
|
|
- // 去重
|
|
|
|
- if (CollectionUtils.isNotEmpty(rovRecallRank)) {
|
|
|
|
- Set<Long> videoIds = new HashSet<>();
|
|
|
|
- Iterator<Video> ite = rovRecallRank.iterator();
|
|
|
|
- while (ite.hasNext()) {
|
|
|
|
- Video v = ite.next();
|
|
|
|
- if (videoIds.contains(v.getVideoId())) {
|
|
|
|
- ite.remove();
|
|
|
|
- continue;
|
|
|
|
- }
|
|
|
|
- videoIds.add(v.getVideoId());
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
|
|
- // 排序实验
|
|
|
|
if (param.getAbCode().equals("60054")
|
|
if (param.getAbCode().equals("60054")
|
|
|| param.getAbCode().equals("60068")
|
|
|| param.getAbCode().equals("60068")
|
|
|| param.getAbCode().equals("60081")
|
|
|| param.getAbCode().equals("60081")
|
|
@@ -99,7 +82,18 @@ public class RankService {
|
|
|| param.getAbCode().equals("60094")
|
|
|| param.getAbCode().equals("60094")
|
|
|| param.getAbCode().equals("60095")
|
|
|| param.getAbCode().equals("60095")
|
|
|| param.getAbCode().equals("60096")) {
|
|
|| param.getAbCode().equals("60096")) {
|
|
|
|
+ // 地域召回要做截取,再做融合排序
|
|
|
|
+ removeDuplicate(rovRecallRank);
|
|
|
|
+ rovRecallRank = rovRecallRank.size() <= param.getSize()
|
|
|
|
+ ? rovRecallRank
|
|
|
|
+ : rovRecallRank.subList(0, param.getSize());
|
|
|
|
+
|
|
|
|
+ // merge sim recall 和 return recall
|
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
|
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
|
|
|
|
+ removeDuplicate(rovRecallRank);
|
|
|
|
|
|
|
|
+ // 融合排序
|
|
List<String> videoIdKeys = rovRecallRank.stream()
|
|
List<String> videoIdKeys = rovRecallRank.stream()
|
|
.map(t -> param.getRankKeyPrefix() + t.getVideoId())
|
|
.map(t -> param.getRankKeyPrefix() + t.getVideoId())
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
@@ -113,10 +107,29 @@ public class RankService {
|
|
}
|
|
}
|
|
Collections.sort(rovRecallRank, Comparator.comparingDouble(o -> -o.getSortScore()));
|
|
Collections.sort(rovRecallRank, Comparator.comparingDouble(o -> -o.getSortScore()));
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
|
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
|
|
|
|
+ removeDuplicate(rovRecallRank);
|
|
}
|
|
}
|
|
return rovRecallRank;
|
|
return rovRecallRank;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ private void removeDuplicate(List<Video> rovRecallRank) {
|
|
|
|
+ if (CollectionUtils.isNotEmpty(rovRecallRank)) {
|
|
|
|
+ Set<Long> videoIds = new HashSet<>();
|
|
|
|
+ Iterator<Video> ite = rovRecallRank.iterator();
|
|
|
|
+ while (ite.hasNext()) {
|
|
|
|
+ Video v = ite.next();
|
|
|
|
+ if (videoIds.contains(v.getVideoId())) {
|
|
|
|
+ ite.remove();
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+ videoIds.add(v.getVideoId());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
private List<Video> mergeAndRankFlowPoolRecall(RankParam param) {
|
|
private List<Video> mergeAndRankFlowPoolRecall(RankParam param) {
|
|
if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode()
|
|
if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode()
|
|
|| param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) {
|
|
|| param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) {
|