|
@@ -471,14 +471,27 @@ public class RankStrategy4RegionMergeModelV564 extends RankStrategy4RegionMergeM
|
|
|
|
|
|
private void addVideoSimFeature(Map<String, String> headInfo, Map<String, String> rankInfo, Map<String, Double> featureMap) {
|
|
|
if (!headInfo.isEmpty() && !rankInfo.isEmpty()) {
|
|
|
+ List<Future<Pair<String, Double>>> futures = new ArrayList<>();
|
|
|
for (String attr : videoSimAttrs) {
|
|
|
String headAttr = headInfo.getOrDefault(attr, "");
|
|
|
String rankAttr = rankInfo.getOrDefault(attr, "");
|
|
|
if (!"".equals(headAttr) && !"".equals(rankAttr)) {
|
|
|
- double simScore = SimilarityUtils.word2VecSimilarity(headAttr, rankAttr);
|
|
|
- featureMap.put("video_sim_" + attr, simScore);
|
|
|
+ String key = "video_sim_" + attr;
|
|
|
+ Future<Pair<String, Double>> future = ThreadPoolFactory.defaultPool().submit(() -> {
|
|
|
+ double simScore = SimilarityUtils.word2VecSimilarity(headAttr, rankAttr);
|
|
|
+ return Pair.create(key, simScore);
|
|
|
+ });
|
|
|
+ futures.add(future);
|
|
|
}
|
|
|
}
|
|
|
+ try {
|
|
|
+ for (Future<Pair<String, Double>> future : futures) {
|
|
|
+ Pair<String, Double> pair = future.get(1000, TimeUnit.MILLISECONDS);
|
|
|
+ featureMap.put(pair.getFirst(), pair.getSecond());
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("video attr similarity error", e);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|