|  | @@ -61,13 +61,20 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
 | 
											
												
													
														|  |                          avgViewCountPos = 400D;
 |  |                          avgViewCountPos = 400D;
 | 
											
												
													
														|  |                      }
 |  |                      }
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  | 
 |  | +                // 阅读量之和
 | 
											
												
													
														|  |                  double showViewCountSum = 0D;
 |  |                  double showViewCountSum = 0D;
 | 
											
												
													
														|  | -                double avgViewCountSum = 0D;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                // 阅读均值置信区间上限之和
 | 
											
												
													
														|  | 
 |  | +                double readAvgCiUpperSum = 0D;
 | 
											
												
													
														|  | 
 |  | +                // 头条阅读量之和
 | 
											
												
													
														|  |                  double showViewCountSumFirst = 0D;
 |  |                  double showViewCountSumFirst = 0D;
 | 
											
												
													
														|  | -                double avgViewCountSumFirst = 0D;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                // 头条阅读均值置信区间上限之和
 | 
											
												
													
														|  | 
 |  | +                double readAvgCiUpperSumFirst = 0D;
 | 
											
												
													
														|  | 
 |  | +                // 次条阅读量之和
 | 
											
												
													
														|  |                  double showViewCountSumSecond = 0D;
 |  |                  double showViewCountSumSecond = 0D;
 | 
											
												
													
														|  | -                double avgViewCountSumSecond = 0D;
 |  | 
 | 
											
												
													
														|  | -                double maxAvgViewCount = 0D;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                // 次条阅读均值置信区间上限之和
 | 
											
												
													
														|  | 
 |  | +                double readAvgCiUpperSumSecond = 0D;
 | 
											
												
													
														|  | 
 |  | +                // 最大阅读均值置信区间上限
 | 
											
												
													
														|  | 
 |  | +                double maxReadAvgCiUpper = 0D;
 | 
											
												
													
														|  |                  if (CollectionUtils.isEmpty(content.getHisPublishArticleList())) {
 |  |                  if (CollectionUtils.isEmpty(content.getHisPublishArticleList())) {
 | 
											
												
													
														|  |                      continue;
 |  |                      continue;
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
										
											
												
													
														|  | @@ -79,10 +86,10 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
 | 
											
												
													
														|  |                      if (hisItem.isInnerAccount() && Objects.nonNull(hisItem.getViewCount())
 |  |                      if (hisItem.isInnerAccount() && Objects.nonNull(hisItem.getViewCount())
 | 
											
												
													
														|  |                              && hisItem.getViewCount() > 0 && Objects.nonNull(hisItem.getReadAvgCiUpper())
 |  |                              && hisItem.getViewCount() > 0 && Objects.nonNull(hisItem.getReadAvgCiUpper())
 | 
											
												
													
														|  |                              && hisItem.getReadAvgCiUpper() > 0) {
 |  |                              && hisItem.getReadAvgCiUpper() > 0) {
 | 
											
												
													
														|  | -                        maxAvgViewCount = Math.max(maxAvgViewCount, hisItem.getReadAvgCiUpper());
 |  | 
 | 
											
												
													
														|  | 
 |  | +                        maxReadAvgCiUpper = Math.max(maxReadAvgCiUpper, hisItem.getReadAvgCiUpper());
 | 
											
												
													
														|  |                          if (hisItem.getItemIndex() == 1) {
 |  |                          if (hisItem.getItemIndex() == 1) {
 | 
											
												
													
														|  |                              showViewCountSumFirst += hisItem.getViewCount();
 |  |                              showViewCountSumFirst += hisItem.getViewCount();
 | 
											
												
													
														|  | -                            avgViewCountSumFirst += hisItem.getReadAvgCiUpper();
 |  | 
 | 
											
												
													
														|  | 
 |  | +                            readAvgCiUpperSumFirst += hisItem.getReadAvgCiUpper();
 | 
											
												
													
														|  |                          } else if (hisItem.getItemIndex() == 2) {
 |  |                          } else if (hisItem.getItemIndex() == 2) {
 | 
											
												
													
														|  |                              if (Objects.nonNull(hisItem.getFirstViewCount()) &&  hisItem.getFirstViewCount() > 0 &&
 |  |                              if (Objects.nonNull(hisItem.getFirstViewCount()) &&  hisItem.getFirstViewCount() > 0 &&
 | 
											
												
													
														|  |                                      Objects.nonNull(hisItem.getFirstViewCountRate()) && hisItem.getFirstViewCountRate() > 0) {
 |  |                                      Objects.nonNull(hisItem.getFirstViewCountRate()) && hisItem.getFirstViewCountRate() > 0) {
 | 
											
										
											
												
													
														|  | @@ -90,9 +97,9 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
 | 
											
												
													
														|  |                                  if (hisItem.getFirstViewCountRate() > 1) {
 |  |                                  if (hisItem.getFirstViewCountRate() > 1) {
 | 
											
												
													
														|  |                                      // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
 |  |                                      // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
 | 
											
												
													
														|  |                                      // TODO: 对于小于1的情况,是否要减去?
 |  |                                      // TODO: 对于小于1的情况,是否要减去?
 | 
											
												
													
														|  | -                                    avgViewCountSumSecond += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                    readAvgCiUpperSumSecond += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
 | 
											
												
													
														|  |                                  } else {
 |  |                                  } else {
 | 
											
												
													
														|  | -                                    avgViewCountSumSecond += hisItem.getReadAvgCiUpper();
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                    readAvgCiUpperSumSecond += hisItem.getReadAvgCiUpper();
 | 
											
												
													
														|  |                                  }
 |  |                                  }
 | 
											
												
													
														|  |                              }
 |  |                              }
 | 
											
												
													
														|  |                          } else {
 |  |                          } else {
 | 
											
										
											
												
													
														|  | @@ -102,9 +109,9 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
 | 
											
												
													
														|  |                                  if (hisItem.getFirstViewCountRate() > 1) {
 |  |                                  if (hisItem.getFirstViewCountRate() > 1) {
 | 
											
												
													
														|  |                                      // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
 |  |                                      // 对于头条均值倍数大于1的情况,次条均值线性增加,用于debias;
 | 
											
												
													
														|  |                                      // TODO: 对于小于1的情况,是否要减去?
 |  |                                      // TODO: 对于小于1的情况,是否要减去?
 | 
											
												
													
														|  | -                                    avgViewCountSum += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                    readAvgCiUpperSum += hisItem.getReadAvgCiUpper() * hisItem.getFirstViewCountRate();
 | 
											
												
													
														|  |                                  } else {
 |  |                                  } else {
 | 
											
												
													
														|  | -                                    avgViewCountSum += hisItem.getReadAvgCiUpper();
 |  | 
 | 
											
												
													
														|  | 
 |  | +                                    readAvgCiUpperSum += hisItem.getReadAvgCiUpper();
 | 
											
												
													
														|  |                                  }
 |  |                                  }
 | 
											
												
													
														|  |                              }
 |  |                              }
 | 
											
												
													
														|  |                          }
 |  |                          }
 | 
											
										
											
												
													
														|  | @@ -115,21 +122,21 @@ public class ViewCountRateV2Strategy implements ScoreStrategy {
 | 
											
												
													
														|  |                  // 如果有头条反馈数据,优先选取头条反馈数据;
 |  |                  // 如果有头条反馈数据,优先选取头条反馈数据;
 | 
											
												
													
														|  |                  if (showViewCountSumFirst > 0) {
 |  |                  if (showViewCountSumFirst > 0) {
 | 
											
												
													
														|  |                      showViewCountSum = showViewCountSumFirst;
 |  |                      showViewCountSum = showViewCountSumFirst;
 | 
											
												
													
														|  | -                    avgViewCountSum = avgViewCountSumFirst;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    readAvgCiUpperSum = readAvgCiUpperSumFirst;
 | 
											
												
													
														|  |                  } else if (showViewCountSumSecond > 0) {
 |  |                  } else if (showViewCountSumSecond > 0) {
 | 
											
												
													
														|  |                      showViewCountSum = showViewCountSumSecond;
 |  |                      showViewCountSum = showViewCountSumSecond;
 | 
											
												
													
														|  | -                    avgViewCountSum = avgViewCountSumSecond;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                    readAvgCiUpperSum = readAvgCiUpperSumFirst;
 | 
											
												
													
														|  |                      // 如果是大号头条,则降权
 |  |                      // 如果是大号头条,则降权
 | 
											
												
													
														|  |                      if (avgViewCountFirst >= 3000 && i == 0) {
 |  |                      if (avgViewCountFirst >= 3000 && i == 0) {
 | 
											
												
													
														|  |                          bigRateW = 0.001D;
 |  |                          bigRateW = 0.001D;
 | 
											
												
													
														|  |                      }
 |  |                      }
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |                  // 均值倍数
 |  |                  // 均值倍数
 | 
											
												
													
														|  | -                if (avgViewCountSum > 0) {
 |  | 
 | 
											
												
													
														|  | -                    viewCountRate = showViewCountSum / avgViewCountSum;
 |  | 
 | 
											
												
													
														|  | 
 |  | +                if (readAvgCiUpperSum > 0) {
 | 
											
												
													
														|  | 
 |  | +                    viewCountRate = showViewCountSum / readAvgCiUpperSum;
 | 
											
												
													
														|  |                  }
 |  |                  }
 | 
											
												
													
														|  |                  // 置信度
 |  |                  // 置信度
 | 
											
												
													
														|  | -                double viewCountRateW = MathUtils.sigmoid(avgViewCountSum, 0.0002, avgViewCountPos);
 |  | 
 | 
											
												
													
														|  | 
 |  | +                double viewCountRateW = MathUtils.sigmoid(readAvgCiUpperSum, 0.0002, avgViewCountPos);
 | 
											
												
													
														|  |                  double viewCountRateScore = 0;
 |  |                  double viewCountRateScore = 0;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |                  if (viewCountRate > 0) {
 |  |                  if (viewCountRate > 0) {
 |