Bladeren bron

Merge branch 'wyp/1210-publishContentFilter' of Server/long-article-recommend into master

wangyunpeng 7 maanden geleden
bovenliggende
commit
23934cc0bc

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/mapper/longArticle/LongArticleBaseMapper.java

@@ -63,4 +63,6 @@ public interface LongArticleBaseMapper {
     int countNeedMatchVideos(Long id);
 
     List<PublishSingleVideoSource> getPublishSingleVideoSource(ArticleVideoPoolSourceParam param);
+
+    List<String> getFilterColdLongArticleTitle();
 }

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

@@ -0,0 +1,10 @@
+package com.tzld.longarticle.recommend.server.model.param;
+
+import lombok.Data;
+
+@Data
+public class PublishContentFilterContentItem {
+    private String sourceId;
+    private String poolLevel;
+    private String title;
+}

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

@@ -0,0 +1,11 @@
+package com.tzld.longarticle.recommend.server.model.param;
+
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class PublishContentFilterParam {
+    private String ghId;
+    private List<PublishContentFilterContentItem> contentList;
+}

+ 9 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/PublishContentFilterResultVO.java

@@ -0,0 +1,9 @@
+package com.tzld.longarticle.recommend.server.model.vo;
+
+import lombok.Data;
+
+@Data
+public class PublishContentFilterResultVO {
+    private String sourceId;
+    private String filterReason;
+}

+ 47 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/PublishContentFilterService.java

@@ -0,0 +1,47 @@
+package com.tzld.longarticle.recommend.server.service.recommend;
+
+import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum;
+import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
+import com.tzld.longarticle.recommend.server.model.param.PublishContentFilterContentItem;
+import com.tzld.longarticle.recommend.server.model.param.PublishContentFilterParam;
+import com.tzld.longarticle.recommend.server.model.vo.PublishContentFilterResultVO;
+import com.tzld.longarticle.recommend.server.util.TitleSimilarCheckUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+@Service
+@Slf4j
+public class PublishContentFilterService {
+
+    @Autowired
+    private LongArticleBaseMapper longArticleBaseMapper;
+
+    public List<PublishContentFilterResultVO> publishContentFilter(PublishContentFilterParam param) {
+        List<PublishContentFilterResultVO> result = new ArrayList<>();
+        if (CollectionUtils.isEmpty(param.getContentList())) {
+            return result;
+        }
+        List<String> filterTitleList = longArticleBaseMapper.getFilterColdLongArticleTitle();
+        List<Set<Character>> firstSecondTitleCache = TitleSimilarCheckUtil.makeCache(filterTitleList);
+        for (PublishContentFilterContentItem contentItem : param.getContentList()) {
+            boolean isDuplicate = false;
+            if (contentItem.getPoolLevel().equals(ContentPoolEnum.autoArticlePoolLevel4.getContentPool())) {
+                isDuplicate = TitleSimilarCheckUtil.isDuplicateContentByCache(contentItem.getTitle(),
+                        firstSecondTitleCache, TitleSimilarCheckUtil.SIMILARITY_THRESHOLD);
+            }
+            if (isDuplicate) {
+                PublishContentFilterResultVO vo = new PublishContentFilterResultVO();
+                vo.setSourceId(contentItem.getSourceId());
+                vo.setFilterReason("退场机制过滤");
+                result.add(vo);
+            }
+        }
+        return result;
+    }
+}

+ 28 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/recommend/PublishContentFilterController.java

@@ -0,0 +1,28 @@
+package com.tzld.longarticle.recommend.server.web.recommend;
+
+import com.tzld.longarticle.recommend.server.common.response.CommonResponse;
+import com.tzld.longarticle.recommend.server.model.param.PublishContentFilterParam;
+import com.tzld.longarticle.recommend.server.model.vo.PublishContentFilterResultVO;
+import com.tzld.longarticle.recommend.server.service.recommend.PublishContentFilterService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+@RestController
+@RequestMapping("/filter")
+@Slf4j
+public class PublishContentFilterController {
+
+    @Autowired
+    private PublishContentFilterService service;
+
+    @PostMapping("/publishContent")
+    public CommonResponse<List<PublishContentFilterResultVO>> publishContentFilter(@RequestBody PublishContentFilterParam param) {
+        return CommonResponse.success(service.publishContentFilter(param));
+    }
+}

+ 4 - 0
long-article-recommend-service/src/main/resources/mapper/longArticle/LongArticleBaseMapper.xml

@@ -239,4 +239,8 @@
         </if>
     </select>
 
+    <select id="getFilterColdLongArticleTitle" resultType="java.lang.String">
+        select title from cold_start_title_pool where status in (-1, 1)
+    </select>
+
 </mapper>