|
@@ -534,6 +534,8 @@ class PoolRecall(object):
|
|
|
video_mapping[video_id] = [flow_pool]
|
|
|
else:
|
|
|
video_mapping[video_id].append(flow_pool)
|
|
|
+ # todo zhangbo 获取tags
|
|
|
+ video_tag_dict = self.get_video_tags(video_ids)
|
|
|
# 过滤
|
|
|
filter_ = FilterVideos(request_id=self.request_id,
|
|
|
app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids,
|
|
@@ -579,7 +581,8 @@ class PoolRecall(object):
|
|
|
flow_pool_recall_result.append(
|
|
|
{'videoId': video_id, 'flowPool': flow_pool,
|
|
|
'rovScore': video_score[video_id], 'pushFrom': config_.PUSH_FROM['flow_recall'],
|
|
|
- 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group}
|
|
|
+ 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group,
|
|
|
+ "tags": video_tag_dict[video_id]}
|
|
|
)
|
|
|
|
|
|
flow_pool_recall_videos.append(video_id)
|
|
@@ -795,6 +798,8 @@ class PoolRecall(object):
|
|
|
video_mapping[video_id] = [flow_pool]
|
|
|
else:
|
|
|
video_mapping[video_id].append(flow_pool)
|
|
|
+ # todo zhangbo 获取tags
|
|
|
+ video_tag_dict = self.get_video_tags(video_ids)
|
|
|
# 过滤
|
|
|
filter_ = FilterVideos(request_id=self.request_id,
|
|
|
app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids,
|
|
@@ -840,7 +845,8 @@ class PoolRecall(object):
|
|
|
flow_pool_recall_result.append(
|
|
|
{'videoId': video_id, 'flowPool': flow_pool, 'level': level,
|
|
|
'rovScore': random.uniform(0, 100), 'pushFrom': config_.PUSH_FROM['flow_recall'],
|
|
|
- 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group}
|
|
|
+ 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group,
|
|
|
+ "tags": video_tag_dict[video_id]}
|
|
|
)
|
|
|
|
|
|
flow_pool_recall_videos.append(video_id)
|
|
@@ -1090,6 +1096,8 @@ class PoolRecall(object):
|
|
|
check_result_items.append([video_id, flow_pool, score])
|
|
|
check_result_items = sorted(check_result_items, key=lambda x: x[2], reverse=True)
|
|
|
to_filter_videos = [item[0] for item in check_result_items[:get_size]]
|
|
|
+ # todo zhangbo 获取tags
|
|
|
+ video_tag_dict = self.get_video_tags(to_filter_videos)
|
|
|
# 过滤
|
|
|
filter_ = FilterVideos(request_id=self.request_id,
|
|
|
app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=to_filter_videos,
|
|
@@ -1113,7 +1121,8 @@ class PoolRecall(object):
|
|
|
{'videoId': video_id, 'flowPool': check_result_mapping[video_id][0], 'level': level,
|
|
|
'rovScore': check_result_mapping[video_id][1],
|
|
|
'pushFrom': config_.PUSH_FROM['flow_recall'],
|
|
|
- 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group}
|
|
|
+ 'abCode': self.ab_code, 'flow_pool_abtest_group': flow_pool_abtest_group,
|
|
|
+ "tags": video_tag_dict[video_id]}
|
|
|
)
|
|
|
|
|
|
return flow_pool_recall_result[:size], flow_pool_recall_process
|
|
@@ -2861,6 +2870,10 @@ class PoolRecall(object):
|
|
|
video_id = int(value[0])
|
|
|
video_ids.append(video_id)
|
|
|
video_score[video_id] = value[1]
|
|
|
+
|
|
|
+ # todo zhangbo 增加tags特征
|
|
|
+ video_tag_dict = self.get_video_tags(video_ids)
|
|
|
+
|
|
|
# 过滤
|
|
|
filter_ = FilterVideos(request_id=self.request_id,
|
|
|
app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=video_ids,
|
|
@@ -2877,7 +2890,8 @@ class PoolRecall(object):
|
|
|
if filtered_result:
|
|
|
# 添加视频源参数 pushFrom, abCode
|
|
|
temp_result = [{'videoId': int(item), 'rovScore': video_score[int(item)],
|
|
|
- 'pushFrom': push_from, 'abCode': self.ab_code}
|
|
|
+ 'pushFrom': push_from, 'abCode': self.ab_code,
|
|
|
+ 'tags': video_tag_dict[item]}
|
|
|
for item in filtered_result if video_score.get(int(item)) is not None]
|
|
|
pool_recall_result.extend(temp_result)
|
|
|
# else:
|
|
@@ -3152,6 +3166,18 @@ class PoolRecall(object):
|
|
|
#print("recall_key:", recall_key)
|
|
|
data = self.redis_helper.get_data_from_redis(key_name=recall_key)
|
|
|
|
|
|
+ # todo zhangbo 获取tags
|
|
|
+ video_ids_4tags = []
|
|
|
+ if data is not None:
|
|
|
+ json_result = json.loads(data)
|
|
|
+ for per_item in json_result:
|
|
|
+ try:
|
|
|
+ vid = int(per_item[0])
|
|
|
+ video_ids_4tags.append(vid)
|
|
|
+ except Exception as e:
|
|
|
+ continue
|
|
|
+ video_tag_dict = self.get_video_tags(video_ids_4tags)
|
|
|
+
|
|
|
#print(data)
|
|
|
recall_result = []
|
|
|
recall_dict = {}
|
|
@@ -3165,7 +3191,7 @@ class PoolRecall(object):
|
|
|
video_ids.append(vid)
|
|
|
recall_dict[vid] = {'videoId': vid, 'flowPool': '',
|
|
|
'rovScore': per_item[1], 'pushFrom': config_.PUSH_FROM['sim_hot_vid_recall'],
|
|
|
- 'abCode': self.ab_code}
|
|
|
+ 'abCode': self.ab_code, "tags": video_tag_dict[vid]}
|
|
|
except Exception as e:
|
|
|
continue
|
|
|
if len(video_ids)<=0:
|
|
@@ -3837,6 +3863,18 @@ class PoolRecall(object):
|
|
|
#print("recall_key:", recall_key)
|
|
|
data = self.redis_helper.get_data_from_redis(key_name=recall_key)
|
|
|
|
|
|
+ # todo zhangbo 获取tags
|
|
|
+ video_ids_4tag = []
|
|
|
+ if data is not None and data!="" :
|
|
|
+ try:
|
|
|
+ json_result = json.loads(data)
|
|
|
+ for per_item in json_result:
|
|
|
+ vid = int(per_item[0])
|
|
|
+ video_ids_4tag.append(vid)
|
|
|
+ except Exception as e:
|
|
|
+ video_ids_4tag = []
|
|
|
+ video_tag_dict = self.get_video_tags(video_ids_4tag)
|
|
|
+
|
|
|
#print(data)
|
|
|
recall_result = []
|
|
|
recall_dict = {}
|
|
@@ -3849,7 +3887,7 @@ class PoolRecall(object):
|
|
|
video_ids.append(vid)
|
|
|
recall_dict[vid] = {'videoId': vid, 'flowPool': '',
|
|
|
'rovScore': float(per_item[1]), 'pushFrom': config_.PUSH_FROM['return_video_recall'],
|
|
|
- 'abCode': self.ab_code}
|
|
|
+ 'abCode': self.ab_code, "tags": video_tag_dict[vid]}
|
|
|
except Exception as e:
|
|
|
return recall_result
|
|
|
if len(video_ids)<=0:
|
|
@@ -3966,10 +4004,10 @@ class PoolRecall(object):
|
|
|
else:
|
|
|
data2_list = []
|
|
|
data_for_filter = [i for i in data_for_filter if len(i) > 0]
|
|
|
-
|
|
|
+ # data_for_filter.append([17736990, 17734880, 17734759, 17726977])
|
|
|
+ # data1_list.extend([17736990, 17734880, 17734759, 17726977])
|
|
|
# 3.9 获取item的tag特征
|
|
|
video_tag_dict = self.get_video_tags(list(set(data1_list) | set(data2_list)))
|
|
|
-
|
|
|
# 4 视频过滤
|
|
|
filter_ = FilterVideos(request_id=self.request_id,
|
|
|
app_type=self.app_type, mid=self.mid, uid=self.uid, video_ids=None,
|
|
@@ -3979,7 +4017,8 @@ class PoolRecall(object):
|
|
|
videos_with_risk=self.videos_with_risk
|
|
|
)
|
|
|
region_code = self.get_region_code()
|
|
|
- t = [gevent.spawn(filter_.filter_videos_for_group, region_code, videos, video_tag_dict, self.tags_filter_rule) for videos in data_for_filter]
|
|
|
+ t = [gevent.spawn(filter_.filter_videos_for_group, region_code, videos, video_tag_dict,
|
|
|
+ self.tags_filter_rule, self.tags_filter_flag) for videos in data_for_filter]
|
|
|
gevent.joinall(t)
|
|
|
result_list = [i.get() for i in t if i.get() is not None and len(i.get()) > 0]
|
|
|
# 5 返回结果
|
|
@@ -3992,6 +4031,7 @@ class PoolRecall(object):
|
|
|
'rovScore': 0.0, 'pushFrom': config_.PUSH_FROM['recall_strategy_trend_v1'],
|
|
|
'abCode': self.ab_code
|
|
|
})
|
|
|
+ print("results:" + str(results))
|
|
|
return results
|
|
|
except Exception as e:
|
|
|
log_.error("error in recall_strategy_trend_v1:{}".format(e))
|