Prechádzať zdrojové kódy

ViewCountRateStrategy 过滤历史天数配置

wangyunpeng 11 hodín pred
rodič
commit
8c69f1bbde

+ 11 - 12
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/score/strategy/ViewCountRateStrategy.java

@@ -18,6 +18,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 @Component
@@ -31,8 +32,8 @@ public class ViewCountRateStrategy implements ScoreStrategy {
     @Autowired
     AccountAvgInfoRepository accountAvgInfoRepository;
 
-    @Value("${view.count.rate.his.first.publish.time.config:5}")
-    private int hisFirstPublishTimeConfig;
+    @Value("${view.count.rate.account.his.filter.days:{}}")
+    private Map<String, Integer> accountHisFilterDaysConfig;
 
     @Override
     public List<Score> score(ScoreParam param) {
@@ -77,12 +78,17 @@ public class ViewCountRateStrategy implements ScoreStrategy {
                 if (CollectionUtils.isEmpty(content.getHisPublishArticleList())) {
                     continue;
                 }
-                int hisFirstPublishTime = 0;
                 for (ContentHisPublishArticle hisItem : content.getHisPublishArticleList()) {
                     // 过滤掉发布时间晚于19点数据
                     if (ScoreStrategy.hisContentLateFilter(hisItem.getPublishTimestamp())) {
                         continue;
                     }
+                    // 过滤掉历史数据中,阅读量为0的文章
+                    Integer hisFilterDays = accountHisFilterDaysConfig.get(param.getGhId());
+                    if (Objects.nonNull(hisFilterDays)
+                            && hisItem.getPublishTimestamp() < System.currentTimeMillis() / 1000 - hisFilterDays * 24 * 60 * 60) {
+                        continue;
+                    }
                     if (hisItem.isInnerAccount() && Objects.nonNull(hisItem.getViewCount())
                             && hisItem.getViewCount() > 0 && Objects.nonNull(hisItem.getReadAvgCiUpper())
                             && hisItem.getReadAvgCiUpper() > 0) {
@@ -90,7 +96,6 @@ public class ViewCountRateStrategy implements ScoreStrategy {
                         if (hisItem.getItemIndex() == 1) {
                             showViewCountSumFirst += hisItem.getViewCount();
                             readAvgCiUpperSumFirst += hisItem.getReadAvgCiUpper();
-                            hisFirstPublishTime++;
                         } else if (hisItem.getItemIndex() == 2) {
                             if (Objects.nonNull(hisItem.getFirstViewCount()) && hisItem.getFirstViewCount() > 0 &&
                                     Objects.nonNull(hisItem.getFirstViewCountRate()) && hisItem.getFirstViewCountRate() > 0) {
@@ -122,14 +127,8 @@ public class ViewCountRateStrategy implements ScoreStrategy {
                 double bigRateW = 1D;
                 // 如果有头条反馈数据,优先选取头条反馈数据;
                 if (showViewCountSumFirst > 0) {
-                    // 如果历史头条发布次数小于x次,将次条数据也加入计算
-                    if (hisFirstPublishTime < hisFirstPublishTimeConfig) {
-                        showViewCountSum = showViewCountSumFirst + showViewCountSumSecond;
-                        readAvgCiUpperSum = readAvgCiUpperSumFirst + readAvgCiUpperSumSecond;
-                    } else {
-                        showViewCountSum = showViewCountSumFirst;
-                        readAvgCiUpperSum = readAvgCiUpperSumFirst;
-                    }
+                    showViewCountSum = showViewCountSumFirst;
+                    readAvgCiUpperSum = readAvgCiUpperSumFirst;
                 } else if (showViewCountSumSecond > 0) {
                     showViewCountSum = showViewCountSumSecond;
                     readAvgCiUpperSum = readAvgCiUpperSumSecond;