Переглянути джерело

ADD: FestivalRecallStrategyV1

sunxy 1 рік тому
батько
коміт
9fa63bbc9e

+ 37 - 50
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/strategy/FestivalRecallStrategyV1.java

@@ -30,56 +30,43 @@ public class FestivalRecallStrategyV1 implements RecallStrategy {
     @Override
     public List<Video> recall(RecallParam param) {
 
-        // todo sunxiaoyi 这里要写实现功能 节假日 时效性
-
-        // 1 获取省份key 放入参数map中
-//        String provinceCn = param.getProvince();
-//        if (provinceCn == null){
-//            provinceCn = "中国";
-//        }else{
-//            provinceCn = provinceCn.replaceAll("省$", "");
-//        }
-//        Map<String, String> param4Model = new HashMap<>(1);
-//        param4Model.put("region_province", provinceCn);
-//        // 2 通过model拿到召回list
-//        ScorerPipeline4Recall pipeline = ScorerUtils.getScorerPipeline4Recall("festival.conf");
-//        List<List<Pair<Long, Double>>> results = pipeline.recall(param4Model);
-//        List<Pair<Long, Double>> result = results.get(0);
-//        for (int i=1; i<results.size(); ++i){
-//            result.addAll(results.get(i));
-//        }
-//        Map<Long, Double> videoMap = new LinkedHashMap<>();
-//        for (Pair<Long, Double> v: result){
-//            videoMap.put(v.getLeft(), v.getRight());
-//        }
-//
-//
-//        long t1 = new Long(System.currentTimeMillis());
-//        FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
-//        filterParam.setForceTruncation(10000);
-//        filterParam.setConcurrent(true);
-//        filterParam.setNotUsePreView(false);
-//        FilterResult filterResult = filterService.filter(filterParam);
-//        long t2 = new Long(System.currentTimeMillis());
-//        JSONObject obj = new JSONObject();
-//        obj.put("name", "RegionRealtimeRecallStrategyV1");
-//        obj.put("filter_time", t2-t1);
-//        obj.put("provinceCn", provinceCn);
-//        obj.put("sizeOld", videoMap.size());
-//        List<Video> videosResult = new ArrayList<>();
-//        if (filterResult != null && CollectionUtils.isNotEmpty(filterResult.getVideoIds())) {
-//            obj.put("sizeNew", filterResult.getVideoIds().size());
-//            filterResult.getVideoIds().stream().forEach(vid -> {
-//                Video video = new Video();
-//                video.setVideoId(vid);
-//                video.setAbCode(param.getAbCode());
-//                video.setRovScore(videoMap.get(vid));
-//                video.setPushFrom(pushFrom());
-//                videosResult.add(video);
-//            });
-//        }
-//        log.info(obj.toString());
-//        Collections.sort(videosResult, Comparator.comparingDouble(o -> -o.getRovScore()));
+        Map<String, String> param4Model = new HashMap<>(1);
+        // 2 通过model拿到召回list
+        ScorerPipeline4Recall pipeline = ScorerUtils.getScorerPipeline4Recall("feeds_score_config_festival.conf");
+        List<List<Pair<Long, Double>>> results = pipeline.recall(param4Model);
+        List<Pair<Long, Double>> result = results.get(0);
+        for (int i=1; i<results.size(); ++i){
+            result.addAll(results.get(i));
+        }
+        Map<Long, Double> videoMap = new LinkedHashMap<>();
+        for (Pair<Long, Double> v: result){
+            videoMap.put(v.getLeft(), v.getRight());
+        }
+        long t1 = new Long(System.currentTimeMillis());
+        FilterParam filterParam = FilterParamFactory.create(param, Lists.newArrayList(videoMap.keySet()));
+        filterParam.setForceTruncation(10000);
+        filterParam.setConcurrent(true);
+        filterParam.setNotUsePreView(false);
+        FilterResult filterResult = filterService.filter(filterParam);
+        long t2 = new Long(System.currentTimeMillis());
+        JSONObject obj = new JSONObject();
+        obj.put("name", "RegionRealtimeRecallStrategyV1");
+        obj.put("filter_time", t2-t1);
+        obj.put("sizeOld", videoMap.size());
+        List<Video> videosResult = new ArrayList<>();
+        if (filterResult != null && CollectionUtils.isNotEmpty(filterResult.getVideoIds())) {
+            obj.put("sizeNew", filterResult.getVideoIds().size());
+            filterResult.getVideoIds().stream().forEach(vid -> {
+                Video video = new Video();
+                video.setVideoId(vid);
+                video.setAbCode(param.getAbCode());
+                video.setRovScore(videoMap.get(vid));
+                video.setPushFrom(pushFrom());
+                videosResult.add(video);
+            });
+        }
+        log.info(obj.toString());
+        Collections.sort(videosResult, Comparator.comparingDouble(o -> -o.getRovScore()));
         return videosResult;
     }
     public static final String PUSH_FORM = "recall_strategy_festival";

+ 3 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score4recall/strategy/RegionRecallScorerFestival.java → recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/score4recall/strategy/FestivalRecallScore.java

@@ -10,9 +10,9 @@ import java.util.List;
 import java.util.Map;
 
 
-public class RegionRecallScorerFestival extends AbstractScorer4Recall {
+public class FestivalRecallScore extends AbstractScorer4Recall {
 
-    public RegionRecallScorerFestival(ScorerConfigInfo configInfo) {
+    public FestivalRecallScore(ScorerConfigInfo configInfo) {
         super(configInfo);
     }
     @Override
@@ -22,7 +22,7 @@ public class RegionRecallScorerFestival extends AbstractScorer4Recall {
 
     @Override
     public List<Pair<Long, Double>> recall(Map<String, String> params){
-        // todo sunxiaoyi 这里要写实现功能 节假日 时效性
+        // 节假日、时效性,判断
         Model4RecallKeyValue model = (Model4RecallKeyValue) this.getModel();
         String key = params.getOrDefault("region_province", "中国");
         List<Pair<Long, Double>> lists = model.kv.getOrDefault(key, new ArrayList<>());

+ 1 - 1
recommend-server-service/src/main/resources/feeds_score_config_festival.conf

@@ -1,6 +1,6 @@
 scorer-config = {
   festival-score-config = {
-    scorer-name = "com.tzld.piaoquan.recommend.server.service.score4recall.strategy.RegionRecallScorerV1"
+    scorer-name = "com.tzld.piaoquan.recommend.server.service.score4recall.strategy.FestivalRecallScore"
     scorer-priority = 99
     model-path = "alg_recall_file/05_festival.txt"
   }