|  | @@ -66,8 +66,25 @@ public class RankService {
 | 
	
		
			
				|  |  |          rovRecallRank.addAll(extractAndSort(param, Region24HRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  |          rovRecallRank.addAll(extractAndSort(param, RegionRelative24HRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  |          rovRecallRank.addAll(extractAndSort(param, RegionRelative24HDupRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | +        // TODO 为什么sim recall 和 return recall 不去重
 | 
	
		
			
				|  |  | +        rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | +        rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // 去重
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(rovRecallRank)) {
 | 
	
		
			
				|  |  | +            Set<Long> videoIds = new HashSet<>();
 | 
	
		
			
				|  |  | +            Iterator<Video> ite = rovRecallRank.iterator();
 | 
	
		
			
				|  |  | +            while (ite.hasNext()) {
 | 
	
		
			
				|  |  | +                Video v = ite.next();
 | 
	
		
			
				|  |  | +                if (videoIds.contains(v.getVideoId())) {
 | 
	
		
			
				|  |  | +                    ite.remove();
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                videoIds.add(v.getVideoId());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // 排序实验
 | 
	
		
			
				|  |  |          if (param.getAbCode().equals("60054")
 | 
	
		
			
				|  |  |                  || param.getAbCode().equals("60068")
 | 
	
		
			
				|  |  |                  || param.getAbCode().equals("60081")
 | 
	
	
		
			
				|  | @@ -82,18 +99,7 @@ public class RankService {
 | 
	
		
			
				|  |  |                  || param.getAbCode().equals("60094")
 | 
	
		
			
				|  |  |                  || param.getAbCode().equals("60095")
 | 
	
		
			
				|  |  |                  || param.getAbCode().equals("60096")) {
 | 
	
		
			
				|  |  | -            // 地域召回要做截取,再做融合排序
 | 
	
		
			
				|  |  | -            removeDuplicate(rovRecallRank);
 | 
	
		
			
				|  |  | -            rovRecallRank = rovRecallRank.size() <= param.getSize()
 | 
	
		
			
				|  |  | -                    ? rovRecallRank
 | 
	
		
			
				|  |  | -                    : rovRecallRank.subList(0, param.getSize());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // merge sim recall 和 return recall
 | 
	
		
			
				|  |  | -            rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | -            rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | -            removeDuplicate(rovRecallRank);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -            // 融合排序
 | 
	
		
			
				|  |  |              List<String> videoIdKeys = rovRecallRank.stream()
 | 
	
		
			
				|  |  |                      .map(t -> param.getRankKeyPrefix() + t.getVideoId())
 | 
	
		
			
				|  |  |                      .collect(Collectors.toList());
 | 
	
	
		
			
				|  | @@ -107,29 +113,10 @@ public class RankService {
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |                  Collections.sort(rovRecallRank, Comparator.comparingDouble(o -> -o.getSortScore()));
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | -        } else {
 | 
	
		
			
				|  |  | -            rovRecallRank.addAll(extractAndSort(param, SimHotVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | -            rovRecallRank.addAll(extractAndSort(param, ReturnVideoRecallStrategy.PUSH_FORM));
 | 
	
		
			
				|  |  | -            removeDuplicate(rovRecallRank);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          return rovRecallRank;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private void removeDuplicate(List<Video> rovRecallRank) {
 | 
	
		
			
				|  |  | -        if (CollectionUtils.isNotEmpty(rovRecallRank)) {
 | 
	
		
			
				|  |  | -            Set<Long> videoIds = new HashSet<>();
 | 
	
		
			
				|  |  | -            Iterator<Video> ite = rovRecallRank.iterator();
 | 
	
		
			
				|  |  | -            while (ite.hasNext()) {
 | 
	
		
			
				|  |  | -                Video v = ite.next();
 | 
	
		
			
				|  |  | -                if (videoIds.contains(v.getVideoId())) {
 | 
	
		
			
				|  |  | -                    ite.remove();
 | 
	
		
			
				|  |  | -                    continue;
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                videoIds.add(v.getVideoId());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      private List<Video> mergeAndRankFlowPoolRecall(RankParam param) {
 | 
	
		
			
				|  |  |          if (param.getAppType() == AppTypeEnum.LAO_HAO_KAN_VIDEO.getCode()
 | 
	
		
			
				|  |  |                  || param.getAppType() == AppTypeEnum.ZUI_JING_QI.getCode()) {
 |