Browse Source

MOD:610 排序分计算改为 ROS + ROV

sunxy 1 year ago
parent
commit
cafd96bd2d

+ 46 - 33
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/implement/TopRecommendPipeline.java

@@ -243,10 +243,10 @@ public class TopRecommendPipeline {
                 rtFeaPart1h = rtFeaPartKeyResult.get(1);
             }
         }
-        // 2 统计分
+        // 2 统计分 3H
         String cur = rtFeaPart1h;
         List<String> datehours = new LinkedList<>(); // 时间是倒叙的
-        for (int i = 0; i < 24; ++i) {
+        for (int i = 0; i < 3; ++i) {
             datehours.add(cur);
             cur = ExtractorUtils.subtractHours(cur, 1);
         }
@@ -288,6 +288,17 @@ public class TopRecommendPipeline {
             Double preturnsScore = calScoreWeightNoTimeDecay(preturns);
             item.scoresMap.put("preturnsScore", preturnsScore);
 
+            // 平台回流ROV
+            List<Double> view2PreReturns = getRateData(preturns, views, 0.0, 0.0);
+            Double view2PreReturnsScore = calScoreWeightNoTimeDecay(view2PreReturns);
+            item.scoresMap.put("view2PreReturnsScore", view2PreReturnsScore);
+
+            // 平台回流ROS
+            List<Double> share2PreReturns = getRateData(preturns, shares, 1.0, 10.0);
+            Double share2PreReturnsScore = calScoreWeightNoTimeDecay(share2PreReturns);
+            item.scoresMap.put("share2PreReturnsScore", share2PreReturnsScore);
+
+
             // rov的趋势
             double trendScore = calTrendScore(view2return);
             item.scoresMap.put("trendScore", trendScore);
@@ -298,38 +309,40 @@ public class TopRecommendPipeline {
 
         }
         // 3 融合公式
-        double a = mergeWeight.getOrDefault("a", 0.1);
-        double b = mergeWeight.getOrDefault("b", 0.0);
-        double c = mergeWeight.getOrDefault("c", 0.000001);
-        double d = mergeWeight.getOrDefault("d", 1.0);
-        double e = mergeWeight.getOrDefault("e", 1.0);
-        double f = mergeWeight.getOrDefault("f", 0.8);
-        double g = mergeWeight.getOrDefault("g", 2.0);
-        double h = mergeWeight.getOrDefault("h", 240.0);
-        double ifAdd = mergeWeight.getOrDefault("ifAdd", 1.0);
+//        double a = mergeWeight.getOrDefault("a", 0.1);
+//        double b = mergeWeight.getOrDefault("b", 0.0);
+//        double c = mergeWeight.getOrDefault("c", 0.000001);
+//        double d = mergeWeight.getOrDefault("d", 1.0);
+//        double e = mergeWeight.getOrDefault("e", 1.0);
+//        double f = mergeWeight.getOrDefault("f", 0.8);
+//        double g = mergeWeight.getOrDefault("g", 2.0);
+//        double h = mergeWeight.getOrDefault("h", 240.0);
+//        double ifAdd = mergeWeight.getOrDefault("ifAdd", 1.0);
         for (RankItem item : rankItemList) {
-            double trendScore = item.scoresMap.getOrDefault("trendScore", 0.0) > 1E-8 ?
-                    item.scoresMap.getOrDefault("trendScore", 0.0) : 0.0;
-            double newVideoScore = item.scoresMap.getOrDefault("newVideoScore", 0.0) > 1E-8 ?
-                    item.scoresMap.getOrDefault("newVideoScore", 0.0) : 0.0;
-            double strScore = item.getScoreStr();
-            double rosScore = item.scoresMap.getOrDefault("share2returnScore", 0.0);
-            double share2allreturnScore = item.scoresMap.getOrDefault("share2allreturnScore", 0.0);
-            double view2allreturnScore = item.scoresMap.getOrDefault("view2allreturnScore", 0.0);
-            double preturnsScore = Math.log(1 + item.scoresMap.getOrDefault("preturnsScore", 0.0));
-            double score;
-            if (ifAdd < 0.5) {
-                score = Math.pow(strScore, a) * Math.pow(rosScore, b) + c * preturnsScore +
-                        (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
-            } else {
-                score = a * strScore + b * rosScore + c * preturnsScore +
-                        (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
-
-            }
-            double allreturnsScore = item.scoresMap.getOrDefault("allreturnsScore", 0.0);
-            if (allreturnsScore > h) {
-                score += (f * share2allreturnScore + g * view2allreturnScore);
-            }
+//            double trendScore = item.scoresMap.getOrDefault("trendScore", 0.0) > 1E-8 ?
+//                    item.scoresMap.getOrDefault("trendScore", 0.0) : 0.0;
+//            double newVideoScore = item.scoresMap.getOrDefault("newVideoScore", 0.0) > 1E-8 ?
+//                    item.scoresMap.getOrDefault("newVideoScore", 0.0) : 0.0;
+//            double strScore = item.getScoreStr();
+//            double rosScore = item.scoresMap.getOrDefault("share2returnScore", 0.0);
+//            double share2allreturnScore = item.scoresMap.getOrDefault("share2allreturnScore", 0.0);
+//            double view2allreturnScore = item.scoresMap.getOrDefault("view2allreturnScore", 0.0);
+//            double preturnsScore = Math.log(1 + item.scoresMap.getOrDefault("preturnsScore", 0.0));
+            Double view2PreReturnsScore = item.scoresMap.getOrDefault("view2PreReturnsScore", 0.0);
+            Double share2PreReturnsScore = item.scoresMap.getOrDefault("share2PreReturnsScore", 0.0);
+            double score = view2PreReturnsScore + share2PreReturnsScore;
+//            if (ifAdd < 0.5) {
+//                score = Math.pow(strScore, a) * Math.pow(rosScore, b) + c * preturnsScore +
+//                        (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
+//            } else {
+//                score = a * strScore + b * rosScore + c * preturnsScore +
+//                        (newVideoScore > 1E-8 ? d * trendScore * (e + newVideoScore) : 0.0);
+//
+//            }
+//            double allreturnsScore = item.scoresMap.getOrDefault("allreturnsScore", 0.0);
+//            if (allreturnsScore > h) {
+//                score += (f * share2allreturnScore + g * view2allreturnScore);
+//            }
             // 设置计算好的分数
             item.setScore(score);
         }