Quellcode durchsuchen

Merge branch 'wyp/0107-articleAdExcludeSort' of Server/long-article-recommend into master

wangyunpeng vor 6 Monaten
Ursprung
Commit
e796f0fd6e

+ 4 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/param/RecommendRequest.java

@@ -4,6 +4,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author dyp
  */
@@ -19,6 +21,8 @@ public class RecommendRequest {
     private Integer publishNum;
     private String planId;
     private Integer pushType;
+    // 排除文章位置
+    private List<Integer> excludeContentIndex;
     // true 不记录日志
     private boolean excludeLog = false;
     // true 强制走参数策略

+ 18 - 4
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/RecommendService.java

@@ -39,10 +39,7 @@ import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
 
 import java.time.LocalDate;
-import java.util.ArrayList;
-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;
@@ -90,6 +87,7 @@ public class RecommendService {
         RankResult rankResult = rankService.rank(convertToRankParam(param, recallResult));
         long t3 = System.currentTimeMillis();
         CostMonitor.logCost("Recommend", "Rank", t3 - t2);
+        excludeArticleIndex(rankResult, request.getExcludeContentIndex());
         saveSortLog(param, rankResult);
 
         RecommendResponse response = buildRecommendResponse(recallResult, rankResult, param.getPublishNum());
@@ -100,6 +98,22 @@ public class RecommendService {
         return response;
     }
 
+    private void excludeArticleIndex(RankResult rankResult, List<Integer> excludeContentIndex) {
+        if (CollectionUtils.isEmpty(excludeContentIndex)) {
+            return;
+        }
+        List<Content> contentList = rankResult.getContents();
+        Iterator<Content> iterator = contentList.iterator();
+        int index = 1;
+        while (iterator.hasNext()) {
+            iterator.next();
+            if (excludeContentIndex.contains(index)) {
+                iterator.remove();
+            }
+            index++;
+        }
+    }
+
     private void setStrategy(RecommendRequest request, RecommendParam param) {
         int historyCount = articleRepository.countByGhIdAndTypeAndItemIndex(request.getGhId(),
                 ArticleTypeEnum.QUNFA.getVal(), 1);