Browse Source

修复563权重为空,567不为空的情况

jch 5 months ago
parent
commit
e7f7f0d9d5

+ 17 - 11
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score/VovH24WeightV2Scorer.java

@@ -163,9 +163,6 @@ public class VovH24WeightV2Scorer extends AbstractScorer {
                             final Map<String, String> sceneFeatureMap) {
 
         double vovScore = 0.0;
-        double vovScore567 = 0.0;
-        double numerator567 = 0D;
-        double denominator567 = 0D;
         Map<String, String> featureMap = item.getFeatureMap();
         String weightKey = sceneFeatureMap.getOrDefault("weightKey", "");
         Map<String, Double> weightMap = model.getWeight(weightKey);
@@ -181,20 +178,29 @@ public class VovH24WeightV2Scorer extends AbstractScorer {
                     double val = Double.parseDouble(featureMap.getOrDefault(key, "0d"));
                     double weight = weightMap.getOrDefault(key, 0d);
                     vovScore += Math.log(val + 1) * weight;
-
-                    // 567
-                    if (numerator567Set.contains(key)) {
-                        numerator567 += val;
-                    } else if (denominator567Set.contains(key)) {
-                        denominator567 += val;
-                    }
                 }
                 vovScore = Math.max(0, vovScore);
-                vovScore567 = denominator567 != 0.0 ? numerator567 / denominator567 : 0.0;
             } catch (Exception e) {
                 LOGGER.error("vovh24 scorer error for doc={} exception={}", item.getVideoId(), ExceptionUtils.getFullStackTrace(e));
             }
         }
+
+        double vovScore567 = 0.0;
+        double numerator567 = 0D;
+        double denominator567 = 0D;
+        if (MapUtils.isNotEmpty(featureMap)) {
+            try {
+                for (String key : numerator567Set) {
+                    numerator567 += Double.parseDouble(featureMap.getOrDefault(key, "0d"));
+                }
+                for (String key : denominator567Set) {
+                    denominator567 += Double.parseDouble(featureMap.getOrDefault(key, "0d"));
+                }
+                vovScore567 = denominator567 != 0.0 ? numerator567 / denominator567 : 0.0;
+            } catch (Exception e) {
+                LOGGER.error("vovh24 567 scorer error for doc={} exception={}", item.getVideoId(), ExceptionUtils.getFullStackTrace(e));
+            }
+        }
         item.getScoresMap().put("vovScore", vovScore);
         item.getScoresMap().put("vovScore567", vovScore567);
         item.setVovScore(vovScore);