|
@@ -145,6 +145,16 @@ public class RecallUtils {
|
|
|
all.sort(Comparator.comparingDouble((Video v) -> coarseMap.getOrDefault(v.getVideoId(), v.getRovScore())).reversed());
|
|
all.sort(Comparator.comparingDouble((Video v) -> coarseMap.getOrDefault(v.getVideoId(), v.getRovScore())).reversed());
|
|
|
List<Video> picked = all.size() <= topN ? all : all.subList(0, topN);
|
|
List<Video> picked = all.size() <= topN ? all : all.subList(0, topN);
|
|
|
|
|
|
|
|
|
|
+ // 把粗排分写回 picked Video.rovScore, 让后续阶段 (精排公式 / 重排 / funnel)
|
|
|
|
|
+ // 看到统一的粗排信号, 不再受召回阶段位置分/真实分差异影响.
|
|
|
|
|
+ // 粗排 map miss 的 vid 保留召回阶段 rovScore 作为兜底.
|
|
|
|
|
+ for (Video v : picked) {
|
|
|
|
|
+ Double coarseScore = coarseMap.get(v.getVideoId());
|
|
|
|
|
+ if (coarseScore != null) {
|
|
|
|
|
+ v.setRovScore(coarseScore);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
Set<Long> pickedIds = picked.stream().map(Video::getVideoId).collect(Collectors.toSet());
|
|
Set<Long> pickedIds = picked.stream().map(Video::getVideoId).collect(Collectors.toSet());
|
|
|
rovRecallRank.addAll(picked);
|
|
rovRecallRank.addAll(picked);
|
|
|
setVideo.addAll(pickedIds);
|
|
setVideo.addAll(pickedIds);
|