Explorar el Código

feat:添加定向打分融合

zhaohaipeng hace 10 meses
padre
commit
6c7447c235

+ 2 - 1
.gitignore

@@ -34,4 +34,5 @@ build/
 apollo-cache-dir
 sentinel
 weblog
-logs
+logs
+LOG_PATH_IS_UNDEFINED

+ 1 - 0
ad-engine-server/pom.xml

@@ -31,6 +31,7 @@
                     <include>**/*.xml</include>
                     <include>**/*.conf</include>
                     <include>**/*.properties</include>
+                    <include>**/*.txt</include>
                 </includes>
                 <filtering>true</filtering>
             </resource>

+ 18 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/feature/FeatureService.java

@@ -1,5 +1,7 @@
 package com.tzld.piaoquan.ad.engine.service.feature;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.TypeReference;
 import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.commons.util.JSONUtils;
@@ -71,6 +73,7 @@ public class FeatureService {
         protos.add(genWithMid("alg_mid_feature_share_tags", param.getMid()));
 
         Map<String, String> featureMap = remoteService.getFeature(protos);
+        featureMap = this.featureStrCover(featureMap);
         Feature feature = new Feature();
 
         for (Map.Entry<String, String> entry : featureMap.entrySet()) {
@@ -202,4 +205,19 @@ public class FeatureService {
                 .build();
     }
 
+    private Map<String, String> featureStrCover(Map<String, String> metaFeatureMap) {
+        Map<String, String> newFeatureMap = new HashMap<>();
+        for (Map.Entry<String, String> entry : metaFeatureMap.entrySet()) {
+            String key = entry.getKey();
+            try {
+                Map<String, String> valueMap = JSONUtils.fromJson(entry.getValue(), new TypeToken<Map<String, String>>() {
+                }, Collections.emptyMap());
+                String value = valueMap.getOrDefault("feature", "{}");
+                newFeatureMap.put(key, value);
+            } catch (Exception e) {
+                log.error("featureStrCover error: ", e);
+            }
+        }
+        return newFeatureMap;
+    }
 }

+ 1 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService680.java

@@ -445,7 +445,7 @@ public class RankService680 {
             return;
         }
         synchronized (this) {
-            InputStream resourceStream = RankService680.class.getClassLoader().getResourceAsStream("20240609_bucket_274.txt");
+            InputStream resourceStream = RankService680.class.getClassLoader().getResourceAsStream("20240622_ad_bucket_249.txt");
             if (resourceStream != null) {
                 try (BufferedReader reader = new BufferedReader(new InputStreamReader(resourceStream))) {
                     Map<String, double[]> bucketsMap = new HashMap<>();

+ 9 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -91,6 +91,15 @@ public class RankServiceImpl implements RankService {
     private AdRankItem rankBy680(RankRecommendRequestParam request) {
         ScoreParam scoreParam = RequestConvert.requestConvert(request);
         List<AdRankItem> adRankItems = fmRankService.adItemRank(request, scoreParam);
+        List<JSONObject> collect = adRankItems.stream().map(i -> {
+            JSONObject json = new JSONObject();
+            json.put("cid", i.getAdId());
+            json.put("score", i.getScore());
+            json.put("metaFeatureMap", i.getMetaFeatureMap());
+            json.put("allFeatureMap", i.getFeatureMap());
+            return json;
+        }).collect(Collectors.toList());
+        log.info("LR模型打分结果: {}", JSON.toJSONString(collect));
         logHubService.scoreLogUpload(scoreParam, request.getAdIdList(), adRankItems, request, "LRModelScore", "680");
         return adRankItems.get(0);
     }