sunxy пре 1 година
родитељ
комит
99be5ca387

+ 37 - 1
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/implement/recall/HistoryLongPeriodFilter.java

@@ -5,23 +5,59 @@ import com.tzld.piaoquan.recommend.server.framework.common.User;
 import com.tzld.piaoquan.recommend.server.framework.recaller.AbstractFilter;
 import com.tzld.piaoquan.recommend.server.framework.recaller.FilterConfigInfo;
 import com.tzld.piaoquan.recommend.server.gen.recommend.RecommendRequest;
+import com.tzld.piaoquan.recommend.server.model.RecommendParam;
 import com.tzld.piaoquan.recommend.server.model.Video;
+import com.tzld.piaoquan.recommend.server.service.RecommendService;
+import com.tzld.piaoquan.recommend.server.service.ServiceBeanFactory;
+import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
+import com.tzld.piaoquan.recommend.server.service.filter.FilterResult;
+import com.tzld.piaoquan.recommend.server.service.filter.RegionFilterService;
+import com.tzld.piaoquan.recommend.server.service.recall.FilterParamFactory;
+import com.tzld.piaoquan.recommend.server.service.recall.RecallParam;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * @author sunxy
  */
 public class HistoryLongPeriodFilter extends AbstractFilter<Video> {
 
+    private static final Logger LOGGER = LoggerFactory.getLogger(HistoryLongPeriodFilter.class);
+
+    private final RegionFilterService filterService;
+    private final RecommendService recommendService;
 
     public HistoryLongPeriodFilter(FilterConfigInfo filterConfigInfo, RecommendRequest requestContext, User user) {
         super(filterConfigInfo, requestContext, user);
+        filterService = ServiceBeanFactory.getBean(RegionFilterService.class);
+        recommendService = ServiceBeanFactory.getBean(RecommendService.class);
     }
 
     @Override
     public void doFilter(Candidate candidate, List<Video> list) {
-
+        if (list == null || list.isEmpty()) {
+            return;
+        }
+        RecommendParam recommendParam = recommendService.genRecommendParam(requestContext, 1);
+        RecallParam recallParam = recommendService.convertToRecallParam(recommendParam);
+        FilterParam filterParam = FilterParamFactory.create(recallParam,
+                list.stream().map(Video::getVideoId).collect(Collectors.toList()));
+        filterParam.setForceTruncation(10000);
+        filterParam.setConcurrent(true);
+        filterParam.setNotUsePreView(false);
+        FilterResult filterResult = filterService.filter(filterParam);
+        LOGGER.info("HistoryLongPeriodFilter doFilter traceId:{}, filterResult:{}", requestContext.getRequestId(),
+                filterResult);
+        LOGGER.info("HistoryLongPeriodFilter doFilter traceId:{}, list:{}", requestContext.getRequestId(),
+                list.stream().map(Video::getVideoId).map(Object::toString).collect(Collectors.joining(",")));
+        if (filterResult != null && filterResult.getVideoIds() != null) {
+            list.removeIf(video -> !filterResult.getVideoIds().contains(video.getVideoId()));
+        }
+        LOGGER.info("HistoryLongPeriodFilter doFilter end traceId:{}, list:{}", requestContext.getRequestId(),
+                list.stream().map(Video::getVideoId).map(Object::toString).collect(Collectors.joining(",")));
     }
 
 }

+ 2 - 5
recommend-server-service/src/main/resources/filter_config.conf

@@ -1,10 +1,7 @@
 recall-config = {
   filter-config = {
-    viewed-filter-config = {
-      filter-name = "com.tzld.piaoquan.recommend.server.implement.recall.ViewedHistoryFilter"
-    }
-    pre-viewed-filter-config = {
-      filter-name = "com.tzld.piaoquan.recommend.server.implement.recall.PreViewedFilter"
+    history-viewed-filter-config = {
+      filter-name = "com.tzld.piaoquan.recommend.server.implement.recall.HistoryViewedFilter"
     }
   }
 }