|
@@ -1,6 +1,7 @@
|
|
|
package com.tzld.piaoquan.recommend.server.service.rank;
|
|
|
|
|
|
import com.tzld.piaoquan.recommend.server.model.Video;
|
|
|
+import com.tzld.piaoquan.recommend.server.service.recall.strategy.*;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.RandomUtils;
|
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
@@ -26,19 +27,7 @@ public class RankService {
|
|
|
}
|
|
|
|
|
|
// rank rov recall
|
|
|
- List<String> videoIdKeys = param.getRecallResult().getRovPoolRecall().stream()
|
|
|
- .map(t -> param.getRankKeyPrefix() + t.getVideoId())
|
|
|
- .collect(Collectors.toList());
|
|
|
- List<Video> rov_recall_rank = param.getRecallResult().getRovPoolRecall().stream()
|
|
|
- .collect(Collectors.toList());
|
|
|
- List<String> video_scores = redisTemplate.opsForValue().multiGet(videoIdKeys);
|
|
|
- if (CollectionUtils.isNotEmpty(video_scores)
|
|
|
- && video_scores.size() == rov_recall_rank.size()) {
|
|
|
- for (int i = 0; i < video_scores.size(); i++) {
|
|
|
- rov_recall_rank.get(i).setRovScore(NumberUtils.toDouble(video_scores.get(i), 0.0));
|
|
|
- }
|
|
|
- Collections.sort(rov_recall_rank, Comparator.comparingDouble(o -> -o.getRovScore()));
|
|
|
- }
|
|
|
+ List<Video> rov_recall_rank = rovRecallRank(param);
|
|
|
|
|
|
// rank flow pool recall
|
|
|
List<Video> flow_recall_rank = param.getRecallResult().getFlowPoolRecall().stream()
|
|
@@ -128,4 +117,49 @@ public class RankService {
|
|
|
}
|
|
|
return new RankResult(datas);
|
|
|
}
|
|
|
+
|
|
|
+ private List<Video> rovRecallRank(RankParam param) {
|
|
|
+ if (param.getAbCode().equals("60054")
|
|
|
+ || param.getAbCode().equals("60068")
|
|
|
+ || param.getAbCode().equals("60081")
|
|
|
+ || param.getAbCode().equals("60084")) {
|
|
|
+
|
|
|
+ List<String> videoIdKeys = param.getRecallResult().getRovPoolRecall().stream()
|
|
|
+ .map(t -> param.getRankKeyPrefix() + t.getVideoId())
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<Video> rov_recall_rank = param.getRecallResult().getRovPoolRecall().stream()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ List<String> video_scores = redisTemplate.opsForValue().multiGet(videoIdKeys);
|
|
|
+ if (CollectionUtils.isNotEmpty(video_scores)
|
|
|
+ && video_scores.size() == rov_recall_rank.size()) {
|
|
|
+ for (int i = 0; i < video_scores.size(); i++) {
|
|
|
+ rov_recall_rank.get(i).setRovScore(NumberUtils.toDouble(video_scores.get(i), 0.0));
|
|
|
+ }
|
|
|
+ Collections.sort(rov_recall_rank, Comparator.comparingDouble(o -> -o.getRovScore()));
|
|
|
+ }
|
|
|
+ return rov_recall_rank;
|
|
|
+ } else {
|
|
|
+ List<Video> rov_recall_rank = new ArrayList<>();
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, RegionHRecallStrategy.PUSH_FORM));
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, Region24HRecallStrategy.PUSH_FORM));
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, RegionRelative24HRecallStrategy.PUSH_FORM));
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, RegionRelative48HRecallStrategy.PUSH_FORM));
|
|
|
+ rov_recall_rank.addAll(extractRovPoolAndSort(param, RegionRelative48HDupRecallStrategy.PUSH_FORM));
|
|
|
+ return rov_recall_rank;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<Video> extractRovPoolAndSort(RankParam param, String pushForm) {
|
|
|
+ if (param == null
|
|
|
+ || param.getRecallResult() == null
|
|
|
+ || CollectionUtils.isEmpty(param.getRecallResult().getRovPoolRecall())) {
|
|
|
+ return Collections.emptyList();
|
|
|
+ }
|
|
|
+ return param.getRecallResult().getRovPoolRecall().stream()
|
|
|
+ .filter(o -> o.getPushFrom().equals(pushForm))
|
|
|
+ .sorted(Comparator.comparingDouble(o -> -o.getRovScore()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ }
|
|
|
+
|
|
|
}
|