|
@@ -14,10 +14,11 @@ config_ = set_config()
|
|
|
|
|
|
class PoolRecall(object):
|
|
|
"""召回"""
|
|
|
- def __init__(self, app_type, mid='', uid='', ab_code=''):
|
|
|
+ def __init__(self, app_type, client_info, mid='', uid='', ab_code=''):
|
|
|
"""
|
|
|
初始化
|
|
|
:param app_type: 产品标识 type-int
|
|
|
+ :param client_info: 用户位置信息 {"country": "国家", "province": "省份", "city": "城市"}
|
|
|
:param mid: mid type-string
|
|
|
:param uid: uid type-string
|
|
|
:param ab_code: ab_code type-int
|
|
@@ -26,6 +27,7 @@ class PoolRecall(object):
|
|
|
self.mid = mid
|
|
|
self.uid = uid
|
|
|
self.ab_code = ab_code
|
|
|
+ self.client_info = client_info
|
|
|
self.redis_helper = RedisHelper()
|
|
|
|
|
|
def rov_pool_recall(self, size=10):
|
|
@@ -33,8 +35,12 @@ class PoolRecall(object):
|
|
|
log_.info('====== rov pool recall')
|
|
|
|
|
|
# 获取生效中的置顶视频
|
|
|
- top_video_ids, top_video_result = self.get_top_videos()
|
|
|
- log_.info('top video result = {}'.format(top_video_ids))
|
|
|
+ if self.client_info is None:
|
|
|
+ # 无用户位置信息时,不获取置顶视频
|
|
|
+ top_video_ids, top_video_result = [], []
|
|
|
+ else:
|
|
|
+ top_video_ids, top_video_result = self.get_top_videos()
|
|
|
+ log_.info('top video result = {}'.format(top_video_ids))
|
|
|
|
|
|
# 获取修改过rov的视频
|
|
|
update_rov_video_ids, update_rov_result = self.get_update_rov_videos()
|
|
@@ -382,8 +388,11 @@ class PoolRecall(object):
|
|
|
video_info = {}
|
|
|
for item in eval(data):
|
|
|
video_id = int(item['videoId'])
|
|
|
- video_ids.append(video_id)
|
|
|
- video_info[video_id] = {'score': item['score'], 'area': item['area']}
|
|
|
+ # 判断 视频推荐区域与用户地址信息 是否匹配,市级别
|
|
|
+ video_area_list = item['area'].split(',')
|
|
|
+ if self.client_info.get('city') in video_area_list or '全部' in video_area_list:
|
|
|
+ video_ids.append(video_id)
|
|
|
+ video_info[video_id] = {'score': item['score'], 'area': video_area_list}
|
|
|
|
|
|
# 过滤
|
|
|
filter_ = FilterVideos(app_type=self.app_type, video_ids=video_ids, mid=self.mid, uid=self.uid)
|