|
@@ -1,6 +1,8 @@
|
|
|
package com.tzld.piaoquan.ad.engine.service.score.impl;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
|
|
|
+import com.tzld.piaoquan.ad.engine.service.score.VideoAdThompsonScorerV2;
|
|
|
import com.tzld.piaoquan.ad.engine.service.score.container.AdCreativeFeatureContainer;
|
|
|
import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaContainer;
|
|
|
import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaForCpcContainer;
|
|
@@ -39,6 +41,8 @@ public class RankServiceImpl implements RankService {
|
|
|
FeatureRemoteService featureRemoteService;
|
|
|
@Autowired
|
|
|
RankServiceThompsonImpl rankServiceThompson;
|
|
|
+ @Autowired
|
|
|
+ VideoAdThompsonScorerV2 videoAdThompsonScorerV2;
|
|
|
|
|
|
@Autowired
|
|
|
AdCreativeFeatureContainer adCreativeFeatureContainer;
|
|
@@ -186,51 +190,51 @@ public class RankServiceImpl implements RankService {
|
|
|
param.getRequestContext().setCity(request.getCity().replace("市",""));
|
|
|
param.getRequestContext().setDay(currentTime.format(dateFormatter));
|
|
|
|
|
|
- UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
|
|
|
- if(userAdFeature==null){
|
|
|
- userAdFeature=new UserAdFeature();
|
|
|
- }
|
|
|
- Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
|
|
|
- .getAdIdList()
|
|
|
- .stream()
|
|
|
- .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
|
|
|
- Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
|
|
|
- List<AdRankItem> rankItems=Collections.emptyList();
|
|
|
- if(!cache.isEmpty()){
|
|
|
- rankItems=new LinkedList<>();
|
|
|
- for (AdRankItem value : cache.values()) {
|
|
|
- value.setVideoId(request.getVideoId());
|
|
|
- rankItems.add(value);
|
|
|
- }
|
|
|
- }
|
|
|
- //避免recommend-feature出问题
|
|
|
- if(rankItems==null|| rankItems.size()==0){
|
|
|
- rankItems=new LinkedList<>();
|
|
|
- for(Long adId:groupMap.keySet()){
|
|
|
- AdRankItem item=new AdRankItem();
|
|
|
- item.setAdId(adId);
|
|
|
- item.setItemFeature(new AdItemFeature());
|
|
|
- item.setVideoId(request.getVideoId());
|
|
|
- rankItems.add(item);
|
|
|
- }
|
|
|
- }
|
|
|
- for(AdRankItem item:rankItems){
|
|
|
- try {
|
|
|
- AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
|
|
|
- item.setBid1(dto.getBid1());
|
|
|
- item.setBid2(dto.getBid2());
|
|
|
- item.setCpa(dto.getCpa());
|
|
|
- item.setPidLambda(1d);
|
|
|
- }catch (Exception e){
|
|
|
- log.error("rankItems info error itemId={}",item.getAdId());
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
+// UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
|
|
|
+// if(userAdFeature==null){
|
|
|
+// userAdFeature=new UserAdFeature();
|
|
|
+// }
|
|
|
+// Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
|
|
|
+// .getAdIdList()
|
|
|
+// .stream()
|
|
|
+// .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
|
|
|
+// Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
|
|
|
+// List<AdRankItem> rankItems=Collections.emptyList();
|
|
|
+// if(!cache.isEmpty()){
|
|
|
+// rankItems=new LinkedList<>();
|
|
|
+// for (AdRankItem value : cache.values()) {
|
|
|
+// value.setVideoId(request.getVideoId());
|
|
|
+// rankItems.add(value);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //避免recommend-feature出问题
|
|
|
+// if(rankItems==null|| rankItems.size()==0){
|
|
|
+// rankItems=new LinkedList<>();
|
|
|
+// for(Long adId:groupMap.keySet()){
|
|
|
+// AdRankItem item=new AdRankItem();
|
|
|
+// item.setAdId(adId);
|
|
|
+// item.setItemFeature(new AdItemFeature());
|
|
|
+// item.setVideoId(request.getVideoId());
|
|
|
+// rankItems.add(item);
|
|
|
+// }
|
|
|
+// }
|
|
|
+// for(AdRankItem item:rankItems){
|
|
|
+// try {
|
|
|
+// AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
|
|
|
+// item.setBid1(dto.getBid1());
|
|
|
+// item.setBid2(dto.getBid2());
|
|
|
+// item.setCpa(dto.getCpa());
|
|
|
+// item.setPidLambda(1d);
|
|
|
+// }catch (Exception e){
|
|
|
+// log.error("rankItems info error itemId={}",item.getAdId());
|
|
|
+// e.printStackTrace();
|
|
|
+// }
|
|
|
+// }
|
|
|
|
|
|
// 兜底方案
|
|
|
List<AdRankItem> rankResult;
|
|
|
|
|
|
- rankResult = rank(param, userAdFeature, rankItems, ScorerUtils.VIDEO_CREATIVE_THOMPSON);
|
|
|
+ rankResult = videoAdThompsonScorerV2.thompsonScorerByExp1(param, request.getAdIdList());
|
|
|
|
|
|
|
|
|
if (!CollectionUtils.isEmpty(rankResult)) {
|
|
@@ -254,7 +258,6 @@ public class RankServiceImpl implements RankService {
|
|
|
log.info("svc=videoAdThompsonRank_log obj={}", JSONObject.toJSONString(object));
|
|
|
return rankResult.get(0);
|
|
|
}else {
|
|
|
- //空返回值
|
|
|
return new AdRankItem();
|
|
|
}
|
|
|
}
|
|
@@ -311,29 +314,6 @@ public class RankServiceImpl implements RankService {
|
|
|
e.printStackTrace();
|
|
|
}
|
|
|
}
|
|
|
-// for(AdRankItem item:rankItems){
|
|
|
-// try {
|
|
|
-//// AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
|
|
|
-// AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
|
|
|
-// item.setBid1(dto.getBid1());
|
|
|
-// item.setBid2(dto.getBid2());
|
|
|
-// lambda=PidLambdaContainer.getPidLambda(item.getAdId());
|
|
|
-// if(lambda<0){
|
|
|
-// item.setCpa(dto.getCpa());
|
|
|
-// item.setPidLambda(dto.getCpa()*0.6);
|
|
|
-// }else {
|
|
|
-// if(dto.getCpa()>1&&lambda<=1){
|
|
|
-// lambda=2d;
|
|
|
-// }
|
|
|
-// item.setCpa(dto.getCpa());
|
|
|
-// item.setPidLambda(lambda);
|
|
|
-// }
|
|
|
-//
|
|
|
-// }catch (Exception e){
|
|
|
-// log.error("rankItems info error itemId={}",item.getAdId());
|
|
|
-// e.printStackTrace();
|
|
|
-// }
|
|
|
-// }
|
|
|
List<AdRankItem> rankResult;
|
|
|
if(rankItems==null|| rankItems.size()==0){
|
|
|
rankItems=new LinkedList<>();
|