|
@@ -1,8 +1,9 @@
|
|
|
package com.tzld.longarticle.recommend.server.service.rank.strategy;
|
|
|
|
|
|
|
|
|
-import com.tzld.longarticle.recommend.server.model.Content;
|
|
|
+import com.tzld.longarticle.recommend.server.model.dto.Content;
|
|
|
import com.tzld.longarticle.recommend.server.service.AccountContentPoolConfigService;
|
|
|
+import com.tzld.longarticle.recommend.server.service.StrategyIndexScoreWeightService;
|
|
|
import com.tzld.longarticle.recommend.server.service.rank.RankItem;
|
|
|
import com.tzld.longarticle.recommend.server.service.rank.RankParam;
|
|
|
import com.tzld.longarticle.recommend.server.service.rank.RankResult;
|
|
@@ -32,6 +33,8 @@ public class RankV12Strategy implements RankStrategy {
|
|
|
private ScoreService scoreService;
|
|
|
@Autowired
|
|
|
private AccountContentPoolConfigService accountContentPoolConfigService;
|
|
|
+ @Autowired
|
|
|
+ private StrategyIndexScoreWeightService weightService;
|
|
|
|
|
|
public RankResult rank(RankParam param) {
|
|
|
List<Content> result = new ArrayList<>();
|
|
@@ -49,19 +52,31 @@ public class RankV12Strategy implements RankStrategy {
|
|
|
item.setScoreMap(scoreMap.get(c.getId()));
|
|
|
double score;
|
|
|
if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
- score = item.getScore(HisFissionDeWeightAvgReadSumRateStrategy.class.getSimpleName());
|
|
|
- score += item.getScore(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());
|
|
|
} else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
- score = item.getScore(SimilarityStrategy.class.getSimpleName())
|
|
|
+ score = (item.getScore(SimilarityStrategy.class.getSimpleName())
|
|
|
+ * weightService.getWeight(param.getStrategy(), 2,
|
|
|
+ SimilarityStrategy.class.getSimpleName()))
|
|
|
+ item.getScore(CategoryStrategy.class.getSimpleName())
|
|
|
+ item.getScore(FlowCtlDecreaseStrategy.class.getSimpleName());
|
|
|
if (item.getScore(PublishTimesStrategy.class.getSimpleName()) >= 0) {
|
|
|
- score += item.getScore(ViewCountRateStrategy.class.getSimpleName());
|
|
|
+ score += item.getScore(ViewCountRateStrategy.class.getSimpleName())
|
|
|
+ * weightService.getWeight(param.getStrategy(), 2,
|
|
|
+ ViewCountRateStrategy.class.getSimpleName());
|
|
|
}
|
|
|
} else {
|
|
|
- score = item.getScore(SimilarityStrategy.class.getSimpleName())
|
|
|
+ score = (item.getScore(SimilarityStrategy.class.getSimpleName())
|
|
|
+ * weightService.getWeight(param.getStrategy(), 3,
|
|
|
+ SimilarityStrategy.class.getSimpleName()))
|
|
|
+ item.getScore(CategoryStrategy.class.getSimpleName())
|
|
|
- + item.getScore(AccountPreDistributeStrategy.class.getSimpleName())
|
|
|
+ + (item.getScore(AccountPreDistributeStrategy.class.getSimpleName())
|
|
|
+ * weightService.getWeight(param.getStrategy(), 3,
|
|
|
+ AccountPreDistributeStrategy.class.getSimpleName()))
|
|
|
+ item.getScore(PublishTimesStrategy.class.getSimpleName())
|
|
|
+ item.getScore(FlowCtlDecreaseStrategy.class.getSimpleName());
|
|
|
}
|