Browse Source

头条分数计算:power(相关性, 系数) * (阅读倍数 + 裂变率)

wangyunpeng 9 tháng trước cách đây
mục cha
commit
f54d9a3bee

+ 4 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/strategy/RankV13Strategy.java

@@ -53,17 +53,18 @@ public class RankV13Strategy implements RankStrategy {
             item.setScoreMap(scoreMap.get(c.getId()));
             double score;
             if (contentPools[0].equals(item.getContent().getContentPoolType())) {
+                double similarityScore = item.getScore(SimilarityStrategy.class.getSimpleName())
+                        * weightService.getWeight(param.getStrategy(), 1,
+                        SimilarityStrategy.class.getSimpleName());
                 score = item.getScore(HisFissionAvgReadRateRateStrategy.class.getSimpleName())
                         * weightService.getWeight(param.getStrategy(), 1,
                         HisFissionAvgReadRateRateStrategy.class.getSimpleName());
-                score += item.getScore(SimilarityStrategy.class.getSimpleName())
-                        * weightService.getWeight(param.getStrategy(), 1,
-                        SimilarityStrategy.class.getSimpleName());
                 if (item.getScore(PublishTimesStrategy.class.getSimpleName()) >= 0) {
                     score += item.getScore(ViewCountRateStrategy.class.getSimpleName())
                             * weightService.getWeight(param.getStrategy(), 1,
                             ViewCountRateStrategy.class.getSimpleName());
                 }
+                score = score * similarityScore;
             } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
                 score = (item.getScore(SimilarityStrategy.class.getSimpleName())
                         * weightService.getWeight(param.getStrategy(), 2,

+ 4 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/strategy/RankV14Strategy.java

@@ -53,17 +53,18 @@ public class RankV14Strategy implements RankStrategy {
             item.setScoreMap(scoreMap.get(c.getId()));
             double score;
             if (contentPools[0].equals(item.getContent().getContentPoolType())) {
+                double similarityScore = item.getScore(SimilarityStrategy.class.getSimpleName())
+                        * weightService.getWeight(param.getStrategy(), 1,
+                        SimilarityStrategy.class.getSimpleName());
                 score = item.getScore(HisFissionDeWeightAvgReadSumRateStrategy.class.getSimpleName())
                         * weightService.getWeight(param.getStrategy(), 1,
                         HisFissionDeWeightAvgReadSumRateStrategy.class.getSimpleName());
-                score += item.getScore(SimilarityStrategy.class.getSimpleName())
-                        * weightService.getWeight(param.getStrategy(), 1,
-                        SimilarityStrategy.class.getSimpleName());
                 if (item.getScore(PublishTimesStrategy.class.getSimpleName()) >= 0) {
                     score += item.getScore(ViewCountRateStrategy.class.getSimpleName())
                             * weightService.getWeight(param.getStrategy(), 1,
                             ViewCountRateStrategy.class.getSimpleName());
                 }
+                score = score * similarityScore;
             } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
                 score = (item.getScore(SimilarityStrategy.class.getSimpleName())
                         * weightService.getWeight(param.getStrategy(), 2,