|
|
@@ -40,6 +40,7 @@ public abstract class RankService {
|
|
|
if (2 == param.getRecommendType()) {
|
|
|
tagDuplicateVideos(param);
|
|
|
List<Video> rovRecallRank = mergeAndRankRovRecall(param);
|
|
|
+ this.addPushFromVideoRank(rovRecallRank);
|
|
|
return new RankResult(rovRecallRank);
|
|
|
}
|
|
|
|
|
|
@@ -92,6 +93,8 @@ public abstract class RankService {
|
|
|
|
|
|
List<Video> douHotFlowPoolRank = extractAndSort(param, DouHotFlowPoolRecallStrategy.PUSH_FROM);
|
|
|
|
|
|
+ this.addPushFromVideoRank(rovRecallRank);
|
|
|
+
|
|
|
removeDuplicate(param, rovRecallRank, flowPoolRank, douHotFlowPoolRank);
|
|
|
|
|
|
|
|
|
@@ -103,7 +106,7 @@ public abstract class RankService {
|
|
|
if (CollectionUtils.isEmpty(param.getRecallResult().getData())) {
|
|
|
return;
|
|
|
}
|
|
|
- // pushFromIndex
|
|
|
+ // pushFromIndex, videoId -> pushFromList
|
|
|
Map<Long, Set<String>> videoIdPushFromMap = new HashMap<>();
|
|
|
for (RecallResult.RecallData data : param.getRecallResult().getData()) {
|
|
|
if (CollectionUtils.isEmpty(data.getVideos())) {
|
|
|
@@ -115,10 +118,11 @@ public abstract class RankService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- // pushFromRank
|
|
|
+ // pushFromRank pushFrom -> videos
|
|
|
Map<String, List<Video>> pushFromVideosMap = param.getRecallResult().getData().stream()
|
|
|
.collect(Collectors.toMap(RecallResult.RecallData::getPushFrom, result -> result.getVideos() == null
|
|
|
? new ArrayList<>() : result.getVideos(), (v1, v2) -> v2));
|
|
|
+
|
|
|
for (RecallResult.RecallData data : param.getRecallResult().getData()) {
|
|
|
if (CollectionUtils.isEmpty(data.getVideos())) {
|
|
|
continue;
|
|
|
@@ -265,4 +269,18 @@ public abstract class RankService {
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
+ private void addPushFromVideoRank(List<Video> rankVideo) {
|
|
|
+ try {
|
|
|
+ Map<String, List<Long>> pushFromVideoRank = new HashMap<>();
|
|
|
+ for (Video video : rankVideo) {
|
|
|
+ video.setPushFromRankVideo(pushFromVideoRank);
|
|
|
+
|
|
|
+ String pushFrom = video.getPushFrom();
|
|
|
+ List<Long> pushFromVideos = pushFromVideoRank.computeIfAbsent(pushFrom, k -> new ArrayList<>());
|
|
|
+ pushFromVideos.add(video.getVideoId());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("addPushFromVideoRank ", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|