|
@@ -4,9 +4,7 @@ import com.tzld.piaoquan.recommend.server.model.Video;
|
|
|
import com.tzld.piaoquan.recommend.server.service.rank.RankParam;
|
|
|
import com.tzld.piaoquan.recommend.server.service.rank.RankResult;
|
|
|
import com.tzld.piaoquan.recommend.server.service.rank.RankService;
|
|
|
-import com.tzld.piaoquan.recommend.server.service.recall.strategy.FestivalRecallStrategyV1;
|
|
|
-import com.tzld.piaoquan.recommend.server.service.recall.strategy.ReturnVideoRecallStrategy;
|
|
|
-import com.tzld.piaoquan.recommend.server.service.recall.strategy.SimHotVideoRecallStrategy;
|
|
|
+import com.tzld.piaoquan.recommend.server.service.recall.strategy.*;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.math.NumberUtils;
|
|
@@ -32,6 +30,11 @@ public class FestivalStrategy4RankModel extends RankService {
|
|
|
@Override
|
|
|
public List<Video> mergeAndRankRovRecall(RankParam param) {
|
|
|
List<Video> rovRecallRank = new ArrayList<>();
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, RegionHRecallStrategy.PUSH_FORM));
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, RegionHDupRecallStrategy.PUSH_FORM));
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, Region24HRecallStrategy.PUSH_FORM));
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, RegionRelative24HRecallStrategy.PUSH_FORM));
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
|
|
|
rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
|
|
|
rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
|
|
|
List<Video> festivalRecallVideoList = extractAndSort(param, FestivalRecallStrategyV1.PUSH_FORM);
|
|
@@ -39,14 +42,21 @@ public class FestivalStrategy4RankModel extends RankService {
|
|
|
if (CollectionUtils.isNotEmpty(festivalRecallVideoList)) {
|
|
|
rovRecallRank.addAll(festivalRecallVideoList.stream().limit(30).collect(Collectors.toList()));
|
|
|
}
|
|
|
+ // 补充不分地域小时数据
|
|
|
+ rovRecallRank.addAll(extractAndSort(param, RegionHWithoutDupRecallStrategy.PUSH_FORM));
|
|
|
+ // 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()
|
|
|
.map(t -> param.getRankKeyPrefix() + t.getVideoId())
|
|
|
.collect(Collectors.toList());
|
|
|
List<String> videoScores = redisTemplate.opsForValue().multiGet(videoIdKeys);
|
|
|
-// log.info("FestivalStrategy4RankModel mergeAndRankRovRecall videoIdKeys={}, videoScores={}", JSONUtils.toJson(videoIdKeys),
|
|
|
-// JSONUtils.toJson(videoScores));
|
|
|
+// log.info("rank mergeAndRankRovRecall videoIdKeys={}, videoScores={}", JSONUtils.toJson(videoIdKeys),
|
|
|
+// JSONUtils.toJson(videoScores));
|
|
|
if (CollectionUtils.isNotEmpty(videoScores)
|
|
|
&& videoScores.size() == rovRecallRank.size()) {
|
|
|
for (int i = 0; i < videoScores.size(); i++) {
|