|
@@ -1,10 +1,13 @@
|
|
package com.tzld.piaoquan.ad.engine.service.score.strategy;
|
|
package com.tzld.piaoquan.ad.engine.service.score.strategy;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
|
|
import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
|
|
|
|
+import com.tzld.piaoquan.ad.engine.commons.redis.AdRedisHelper;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
|
|
import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
|
|
import com.tzld.piaoquan.ad.engine.commons.thread.ThreadPoolFactory;
|
|
import com.tzld.piaoquan.ad.engine.commons.thread.ThreadPoolFactory;
|
|
import com.tzld.piaoquan.ad.engine.commons.util.*;
|
|
import com.tzld.piaoquan.ad.engine.commons.util.*;
|
|
|
|
+import com.tzld.piaoquan.ad.engine.service.entity.GuaranteeView;
|
|
import com.tzld.piaoquan.ad.engine.service.feature.Feature;
|
|
import com.tzld.piaoquan.ad.engine.service.feature.Feature;
|
|
import com.tzld.piaoquan.ad.engine.commons.dto.AdPlatformCreativeDTO;
|
|
import com.tzld.piaoquan.ad.engine.commons.dto.AdPlatformCreativeDTO;
|
|
import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
|
|
import com.tzld.piaoquan.ad.engine.commons.param.RankRecommendRequestParam;
|
|
@@ -13,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.apache.commons.collections4.MapUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.stereotype.Component;
|
|
import org.xm.Similarity;
|
|
import org.xm.Similarity;
|
|
@@ -42,6 +46,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
@Value("${word2vec.exp:694}")
|
|
@Value("${word2vec.exp:694}")
|
|
private String word2vecExp;
|
|
private String word2vecExp;
|
|
|
|
|
|
|
|
+
|
|
// FIXME(zhoutian): 可能需要独立配置
|
|
// FIXME(zhoutian): 可能需要独立配置
|
|
@ApolloJsonValue("${rank.score.weight.680:{}}")
|
|
@ApolloJsonValue("${rank.score.weight.680:{}}")
|
|
private Map<String, Double> weightMap;
|
|
private Map<String, Double> weightMap;
|
|
@@ -51,6 +56,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
|
|
|
Set<String> sparseFeatureSet;
|
|
Set<String> sparseFeatureSet;
|
|
|
|
|
|
|
|
+
|
|
@PostConstruct
|
|
@PostConstruct
|
|
public void afterInit() {
|
|
public void afterInit() {
|
|
this.readBucketFile();
|
|
this.readBucketFile();
|
|
@@ -164,6 +170,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
Map<String, String> sceneFeatureMap = this.handleSceneFeature(ts);
|
|
Map<String, String> sceneFeatureMap = this.handleSceneFeature(ts);
|
|
long time1 = System.currentTimeMillis();
|
|
long time1 = System.currentTimeMillis();
|
|
|
|
|
|
|
|
+ Map<String, GuaranteeView> map = getGuaranteeViewMap(request, scoreParam);
|
|
List<AdRankItem> adRankItems = new ArrayList<>();
|
|
List<AdRankItem> adRankItems = new ArrayList<>();
|
|
Random random = new Random();
|
|
Random random = new Random();
|
|
List<Future<AdRankItem>> futures = new ArrayList<>();
|
|
List<Future<AdRankItem>> futures = new ArrayList<>();
|
|
@@ -186,9 +193,8 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
} else {
|
|
} else {
|
|
adRankItem.getExt().put("isApi", "1");
|
|
adRankItem.getExt().put("isApi", "1");
|
|
}
|
|
}
|
|
-
|
|
|
|
adRankItem.getExt().put("recallsources", dto.getRecallSources());
|
|
adRankItem.getExt().put("recallsources", dto.getRecallSources());
|
|
-
|
|
|
|
|
|
+ setGuaranteeWeight(map, dto.getAdVerId(), adRankItem.getExt());
|
|
String cidStr = dto.getCreativeId().toString();
|
|
String cidStr = dto.getCreativeId().toString();
|
|
Map<String, String> cidFeatureMap = adRankItem.getFeatureMap();
|
|
Map<String, String> cidFeatureMap = adRankItem.getFeatureMap();
|
|
Map<String, Map<String, String>> cidFeature = allCidFeature.getOrDefault(cidStr, new HashMap<>());
|
|
Map<String, Map<String, String>> cidFeature = allCidFeature.getOrDefault(cidStr, new HashMap<>());
|
|
@@ -300,8 +306,9 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
for (AdRankItem item : result) {
|
|
for (AdRankItem item : result) {
|
|
|
|
|
|
double scoreCoefficient = creativeScoreCoefficient.getOrDefault(item.getAdId(), 1d);
|
|
double scoreCoefficient = creativeScoreCoefficient.getOrDefault(item.getAdId(), 1d);
|
|
- item.setScore(item.getLrScore() * scoreCoefficient * item.getCpa());
|
|
|
|
-
|
|
|
|
|
|
+ double guaranteeScoreCoefficient = getGuaranteeScoreCoefficient(scoreParam, item.getExt());
|
|
|
|
+ item.setScore(item.getLrScore() * scoreCoefficient * item.getCpa() * guaranteeScoreCoefficient);
|
|
|
|
+ item.getScoreMap().put("guaranteeScoreCoefficient", guaranteeScoreCoefficient);
|
|
item.getScoreMap().put("cpa", item.getCpa());
|
|
item.getScoreMap().put("cpa", item.getCpa());
|
|
item.getScoreMap().put("cpm", item.getCpm());
|
|
item.getScoreMap().put("cpm", item.getCpm());
|
|
item.getScoreMap().put("cpmCoefficient", cpmCoefficient);
|
|
item.getScoreMap().put("cpmCoefficient", cpmCoefficient);
|