|
@@ -89,6 +89,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
Map<String, Map<String, String>> videoFeature = feature.getVideoFeature();
|
|
|
Map<String, Map<String, Map<String, String>>> allAdVerFeature = feature.getAdVerFeature();
|
|
|
Map<String, Map<String, Map<String, String>>> allCidFeature = feature.getCidFeature();
|
|
|
+ Map<String, Map<String, Map<String, String>>> allSkuFeature = feature.getSkuFeature();
|
|
|
Map<String, String> reqFeature = this.getReqFeature(scoreParam, request);
|
|
|
|
|
|
Map<String, String> userFeatureMap = new HashMap<>();
|
|
@@ -156,6 +157,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
adRankItem.setId(dto.getAdId());
|
|
|
adRankItem.setCampaignId(dto.getCampaignId());
|
|
|
adRankItem.setCpm(ObjUtil.nullOrDefault(dto.getCpm(), 90).doubleValue());
|
|
|
+ adRankItem.setSkuId(dto.getSkuId());
|
|
|
adRankItem.setRandom(random.nextInt(1000));
|
|
|
if (noApiAdVerIds.contains(dto.getAdVerId())) {
|
|
|
adRankItem.getExt().put("isApi", "0");
|
|
@@ -170,7 +172,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
Map<String, String> b1Feature = cidFeature.getOrDefault("alg_cid_feature_basic_info", new HashMap<>());
|
|
|
|
|
|
Map<String, Map<String, String>> adVerFeature = allAdVerFeature.getOrDefault(dto.getAdVerId(), new HashMap<>());
|
|
|
-
|
|
|
+ Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(dto.getSkuId()), new HashMap<>());
|
|
|
Map<String, String> d1Feature = cidFeature.getOrDefault("alg_cid_feature_vid_cf", new HashMap<>());
|
|
|
|
|
|
this.handleB1Feature(b1Feature, cidFeatureMap, cidStr);
|
|
@@ -179,6 +181,7 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
this.handleC1UIFeature(midTimeDiffMap, actionStaticMap, cidFeatureMap, cidStr);
|
|
|
this.handleD1Feature(d1Feature, cidFeatureMap);
|
|
|
this.handleD2Feature(vidRankMaps, cidFeatureMap, cidStr);
|
|
|
+ this.handleH1AndH2Feature(skuFeature, adVerFeature, cidFeatureMap);
|
|
|
|
|
|
cidFeatureMap.put("cid", dto.getCreativeId() != null ? String.valueOf(dto.getCreativeId()) : "");
|
|
|
cidFeatureMap.put("adid", dto.getAdId() != null ? String.valueOf(dto.getAdId()) : "");
|
|
@@ -321,6 +324,13 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ Map<String, Map<String, String>> skuFeature = allSkuFeature.getOrDefault(String.valueOf(top1Item.getSkuId()), new HashMap<>());
|
|
|
+ for (Map.Entry<String, Map<String, String>> entry : skuFeature.entrySet()) {
|
|
|
+ if (MapUtils.isNotEmpty(entry.getValue())) {
|
|
|
+ top1Item.getMetaFeatureMap().put(entry.getKey(), entry.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
top1Item.getMetaFeatureMap().put("reqFeature", reqFeature);
|
|
|
top1Item.getMetaFeatureMap().put("sceneFeature", sceneFeatureMap);
|
|
|
}
|
|
@@ -557,6 +567,33 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void handleH1AndH2Feature(Map<String, Map<String, String>> skuFeature,
|
|
|
+ Map<String, Map<String, String>> adVerFeature,
|
|
|
+ Map<String, String> cidFeatureMap) {
|
|
|
+ Map<String, String> h1Feature = adVerFeature.getOrDefault("alg_mid_feature_adver_action", new HashMap<>());
|
|
|
+ Map<String, String> h2Feature = skuFeature.getOrDefault("alg_mid_feature_sku_action", new HashMap<>());
|
|
|
+ List<String> timeList = Arrays.asList("3d", "7d", "30d");
|
|
|
+ List<Tuple2<Map<String, String>, String>> featureList = Arrays.asList(
|
|
|
+ new Tuple2<>(h1Feature, "adverid"),
|
|
|
+ new Tuple2<>(h2Feature, "skuid")
|
|
|
+ );
|
|
|
+ for (Tuple2<Map<String, String>, String> tuple2 : featureList) {
|
|
|
+ Map<String, String> feature = tuple2.f1;
|
|
|
+ String prefix = tuple2.f2;
|
|
|
+ for (String time : timeList) {
|
|
|
+ String timeValue = feature.getOrDefault(time, "");
|
|
|
+ if (StringUtils.isNotEmpty(timeValue)) {
|
|
|
+ String[] split = timeValue.split(",");
|
|
|
+ cidFeatureMap.put("user" + "_" + prefix + "_" + "view" + "_" + time, split[0]);
|
|
|
+ cidFeatureMap.put("user" + "_" + prefix + "_" + "click" + "_" + time, split[1]);
|
|
|
+ cidFeatureMap.put("user" + "_" + prefix + "_" + "conver" + "_" + time, split[2]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
private void handleD3AndB1Feature(Map<String, String> d3Feature, String cTitle, Map<String, String> featureMap,
|
|
|
ScoreParam scoreParam) {
|
|
|
if (MapUtils.isEmpty(d3Feature) || !d3Feature.containsKey("title") || StringUtils.isEmpty(cTitle)) {
|
|
@@ -733,6 +770,24 @@ public class RankStrategyBy688 extends RankStrategyBasic {
|
|
|
add("user_vid_share_cate1_14d");
|
|
|
add("user_vid_share_cate2_14d");
|
|
|
add("user_has_conver_1y");
|
|
|
+ add("user_adverid_view_3d");
|
|
|
+ add("user_adverid_click_3d");
|
|
|
+ add("user_adverid_conver_3d");
|
|
|
+ add("user_adverid_view_7d");
|
|
|
+ add("user_adverid_click_7d");
|
|
|
+ add("user_adverid_conver_7d");
|
|
|
+ add("user_adverid_view_30d");
|
|
|
+ add("user_adverid_click_30d");
|
|
|
+ add("user_adverid_conver_30d");
|
|
|
+ add("user_skuid_view_3d");
|
|
|
+ add("user_skuid_click_3d");
|
|
|
+ add("user_skuid_conver_3d");
|
|
|
+ add("user_skuid_view_7d");
|
|
|
+ add("user_skuid_click_7d");
|
|
|
+ add("user_skuid_conver_7d");
|
|
|
+ add("user_skuid_view_30d");
|
|
|
+ add("user_skuid_click_30d");
|
|
|
+ add("user_skuid_conver_30d");
|
|
|
}};
|
|
|
}
|
|
|
|