|
@@ -9,23 +9,22 @@ import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
|
|
|
import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
|
|
|
import com.tzld.longarticle.recommend.server.common.enums.aigc.PublishPlanInputSourceTypesEnum;
|
|
|
import com.tzld.longarticle.recommend.server.common.enums.recommend.RankStrategyEnum;
|
|
|
+import com.tzld.longarticle.recommend.server.common.enums.recommend.ScoreStrategyEnum;
|
|
|
import com.tzld.longarticle.recommend.server.model.dto.Content;
|
|
|
import com.tzld.longarticle.recommend.server.service.ServiceBeanFactory;
|
|
|
-import com.tzld.longarticle.recommend.server.service.recommend.rank.strategy.FwhColdStartRankStrategy;
|
|
|
+import com.tzld.longarticle.recommend.server.service.recommend.config.AccountContentPoolConfigService;
|
|
|
+import com.tzld.longarticle.recommend.server.service.recommend.config.StrategyIndexScoreWeightService;
|
|
|
import com.tzld.longarticle.recommend.server.service.recommend.score.AccountIndexReplacePoolConfig;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.collections4.CollectionUtils;
|
|
|
import org.apache.commons.lang3.RandomUtils;
|
|
|
import org.springframework.beans.factory.InitializingBean;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.util.List;
|
|
|
-import java.util.Map;
|
|
|
-import java.util.Objects;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
-import static com.tzld.longarticle.recommend.server.common.constant.SceneConstants.FWH_COLD_START;
|
|
|
-
|
|
|
/**
|
|
|
* @author dyp
|
|
|
*/
|
|
@@ -33,6 +32,11 @@ import static com.tzld.longarticle.recommend.server.common.constant.SceneConstan
|
|
|
@Slf4j
|
|
|
public class RankService implements InitializingBean {
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private AccountContentPoolConfigService accountContentPoolConfigService;
|
|
|
+ @Autowired
|
|
|
+ private StrategyIndexScoreWeightService weightService;
|
|
|
+
|
|
|
private static Map<String, Map<String, Integer>> staticStrategyPoolSourceTypeMap;
|
|
|
|
|
|
@ApolloJsonValue("${strategyPoolSourceTypeConfig:{}}")
|
|
@@ -70,15 +74,8 @@ public class RankService implements InitializingBean {
|
|
|
}
|
|
|
|
|
|
private RankStrategy getRankStrategy(RankParam param) {
|
|
|
-
|
|
|
- switch (param.getScene()) {
|
|
|
- case FWH_COLD_START:
|
|
|
- return ServiceBeanFactory.getBean(FwhColdStartRankStrategy.class);
|
|
|
- default:
|
|
|
- RankStrategyEnum rankStrategyEnum = RankStrategyEnum.from(param.getStrategy());
|
|
|
- return (RankStrategy) ServiceBeanFactory.getBeanByName(rankStrategyEnum.getTaskExecutorName());
|
|
|
- }
|
|
|
-
|
|
|
+ RankStrategyEnum rankStrategyEnum = RankStrategyEnum.from(param.getStrategy());
|
|
|
+ return (RankStrategy) ServiceBeanFactory.getBeanByName(rankStrategyEnum.getTaskExecutorName());
|
|
|
}
|
|
|
|
|
|
public static void printSortLog(String strategy, String accountName, String position, List<Content> contentList) {
|
|
@@ -168,4 +165,458 @@ public class RankService implements InitializingBean {
|
|
|
result.addAll(pool.subList(0, Math.min(pool.size(), param.getSize() - result.size())));
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ public List<RankItem> setRankItemScore(RankParam param) {
|
|
|
+ List<Content> contents = param.getContents();
|
|
|
+ String strategy = param.getStrategy();
|
|
|
+ String ghId = param.getGhId();
|
|
|
+ String[] contentPools = accountContentPoolConfigService.getContentPools(param.getAccountName());
|
|
|
+ List<RankItem> result = new ArrayList<>();
|
|
|
+ for (Content content : contents) {
|
|
|
+ RankItem item = new RankItem();
|
|
|
+ item.setContent(content);
|
|
|
+ item.setScoreMap(content.getScoreMap());
|
|
|
+ Double score = 0.0;
|
|
|
+ int index = weightService.getIndex(item.getContent().getContentPoolType(), contentPools);
|
|
|
+ switch (strategy) {
|
|
|
+ case "ArticleRankV1":
|
|
|
+ case "ArticleRankV2":
|
|
|
+ case "ArticleRankV6":
|
|
|
+ case "ArticleRankRandom":
|
|
|
+ break;
|
|
|
+ case "ArticleRankV3":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())
|
|
|
+ || contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV4":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())
|
|
|
+ || contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE_CORRELATION.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV5":
|
|
|
+ case "ArticleRankV15":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())
|
|
|
+ || contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV7":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_CORRELATION_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV8":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value());
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV9":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV10":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_SUM_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV11":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + (item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ content.setHisPublishArticleList(null);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV12":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_DE_WEIGHT_AVG_READ_SUM_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.HIS_FISSION_DE_WEIGHT_AVG_READ_SUM_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + (item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ content.setHisPublishArticleList(null);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV13":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ double similarityScore = Math.pow(item.getScore(ScoreStrategyEnum.SIMILARITY.value()),
|
|
|
+ weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()));
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.HIS_FISSION_AVG_READ_RATE_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ score = score * similarityScore;
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + (item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ content.setHisPublishArticleList(null);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankV14":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())) {
|
|
|
+ double similarityScore = Math.pow(item.getScore(ScoreStrategyEnum.SIMILARITY.value()),
|
|
|
+ weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()));
|
|
|
+ score = item.getScore(ScoreStrategyEnum.HIS_FISSION_DE_WEIGHT_AVG_READ_SUM_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.HIS_FISSION_DE_WEIGHT_AVG_READ_SUM_RATE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ score = score * similarityScore;
|
|
|
+ } else if (contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = (item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.SIMILARITY.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + (item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value()))
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ content.setHisPublishArticleList(null);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankHisJump":
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())
|
|
|
+ || contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankInfinite":
|
|
|
+ case "ArticleRankLate":
|
|
|
+ if (contentPools[2].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ * weightService.getWeight(strategy, ghId, index,
|
|
|
+ ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ case "ArticleRankFWH":
|
|
|
+ content.setHisPublishArticleList(null);
|
|
|
+ if (contentPools[0].equals(item.getContent().getContentPoolType())
|
|
|
+ || contentPools[1].equals(item.getContent().getContentPoolType())) {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ if (item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value()) >= 0) {
|
|
|
+ score += item.getScore(ScoreStrategyEnum.VIEW_COUNT_RATE.value());
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ score = item.getScore(ScoreStrategyEnum.SIMILARITY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CATEGORY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.ACCOUNT_PRE_DISTRIBUTE.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.PUBLISH_TIMES.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.CRAWLER_DAYS_DECREASE_STRATEGY.value())
|
|
|
+ + item.getScore(ScoreStrategyEnum.FLOW_CTL_DECREASE.value());
|
|
|
+ }
|
|
|
+ content.setScore(score);
|
|
|
+ item.setScore(score);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ result.add(item);
|
|
|
+ }
|
|
|
+ result.sort((o1, o2) -> -Double.compare(o1.getScore(), o2.getScore()));
|
|
|
+ param.setRankItems(result);
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setSafeScoreDecrease(RankParam param) {
|
|
|
+
|
|
|
+ }
|
|
|
}
|