|
@@ -2,6 +2,7 @@ package com.tzld.piaoquan.recommend.server.service.rank.strategy;
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
|
|
|
import com.google.common.reflect.TypeToken;
|
|
|
import com.tzld.piaoquan.recommend.server.common.base.RankItem;
|
|
|
import com.tzld.piaoquan.recommend.server.model.Video;
|
|
@@ -36,6 +37,8 @@ public class RankStrategy4RankModel extends RankService {
|
|
|
|
|
|
@Value("${video.model.weight:}")
|
|
|
private Double mergeWeight;
|
|
|
+ @ApolloJsonValue("${video.model.weightv2:}")
|
|
|
+ private Map<String, Double> mergeWeightNew;
|
|
|
final private String CLASS_NAME = this.getClass().getSimpleName();
|
|
|
|
|
|
// public Video getTestVideo(Long id, String s){
|
|
@@ -86,18 +89,24 @@ public class RankStrategy4RankModel extends RankService {
|
|
|
Collections.sort(rovRecallRank, Comparator.comparingDouble(o -> -o.getSortScore()));
|
|
|
}
|
|
|
|
|
|
- //------------------- todo zhangbo 增加排序str模型逻辑 合并二者得分-------------------
|
|
|
+ //------------------- todo zhangbo 增加排序str ros模型逻辑 合并二者得分-------------------
|
|
|
List<Video> videosWithModel = model(rovRecallRank, param);
|
|
|
+ Map<String, Double> mergeWeight = this.mergeWeightNew == null? new HashMap<>(): this.mergeWeightNew;
|
|
|
+ double alpha = mergeWeight.getOrDefault("alpha", 1.0D);
|
|
|
+ double beta = mergeWeight.getOrDefault("beta", 0.0D);
|
|
|
+ double gamma = mergeWeight.getOrDefault("gamma", 0.0D);
|
|
|
for (Video v : videosWithModel){
|
|
|
- double mergeWeightIn = this.mergeWeight == null? 0.0D: this.mergeWeight;
|
|
|
- double score = v.getSortScore() + mergeWeightIn * v.getScoreStr();
|
|
|
+ double score = alpha * v.getSortScore() + beta * v.getScoreStr() + gamma * v.getScoreRos();
|
|
|
+ if (mergeWeight.containsKey("mul") && mergeWeight.getOrDefault("mul", 0.0D) > 0.5){
|
|
|
+ score = alpha * v.getSortScore() + (beta + v.getScoreStr()) * (gamma + v.getScoreRos());
|
|
|
+ }
|
|
|
v.setScoreRegion(v.getSortScore());
|
|
|
v.score = score;
|
|
|
v.setSortScore(score);
|
|
|
}
|
|
|
- Collections.sort(videosWithModel, Comparator.comparingDouble(o -> -o.getSortScore()));
|
|
|
+ videosWithModel.sort(Comparator.comparingDouble(o -> -o.score));
|
|
|
|
|
|
- //------------------- 增加日志-------------------
|
|
|
+ //------------------- 增加日志 -------------------
|
|
|
int size = 4;
|
|
|
List<Long> oldRes = rovRecallRank.subList(0, Math.min(rovRecallRank.size(), size)).stream().map(r-> r.getVideoId()).collect(Collectors.toList());
|
|
|
List<Long> newRes = videosWithModel.subList(0, Math.min(videosWithModel.size(), size)).stream().map(r-> r.getVideoId()).collect(Collectors.toList());
|