|
@@ -136,7 +136,7 @@ def positon_duplicate(pos1_vids, pos2_vids, videos):
|
|
|
|
|
|
|
|
|
def video_recommend(mid, uid, size, top_K, flow_pool_P, app_type, algo_type, client_info, expire_time=24*3600,
|
|
|
- ab_code=config_.AB_CODE['initial'], rule_key='', no_op_flag=False, old_video_index=-1):
|
|
|
+ ab_code=config_.AB_CODE['initial'], rule_key='', no_op_flag=False, old_video_index=-1, video_id=None):
|
|
|
"""
|
|
|
首页线上推荐逻辑
|
|
|
:param mid: mid type-string
|
|
@@ -149,6 +149,7 @@ def video_recommend(mid, uid, size, top_K, flow_pool_P, app_type, algo_type, cli
|
|
|
:param client_info: 用户位置信息 {"country": "国家", "province": "省份", "city": "城市"}
|
|
|
:param expire_time: 末位视频记录redis过期时间
|
|
|
:param ab_code: AB实验code
|
|
|
+ :param video_id: 相关推荐头部视频id
|
|
|
:return:
|
|
|
"""
|
|
|
# ####### 多进程召回
|
|
@@ -185,6 +186,10 @@ def video_recommend(mid, uid, size, top_K, flow_pool_P, app_type, algo_type, cli
|
|
|
elif ab_code in [code for _, code in config_.AB_CODE['region_rank_by_h'].items()]:
|
|
|
t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time),
|
|
|
gevent.spawn(pool_recall.flow_pool_recall, size)]
|
|
|
+ # 最惊奇相关推荐实验
|
|
|
+ elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
|
|
|
+ t = [gevent.spawn(pool_recall.relevant_recall_19, video_id, size, expire_time),
|
|
|
+ gevent.spawn(pool_recall.flow_pool_recall_18_19, size)]
|
|
|
# 最惊奇/老好看实验
|
|
|
elif app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
|
|
|
t = [gevent.spawn(pool_recall.rov_pool_recall, size, expire_time),
|
|
@@ -212,7 +217,11 @@ def video_recommend(mid, uid, size, top_K, flow_pool_P, app_type, algo_type, cli
|
|
|
start_rank = time.time()
|
|
|
# log_.info('====== rank')
|
|
|
if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
|
|
|
- if ab_code in [config_.AB_CODE['rov_rank_appType_18_19'], config_.AB_CODE['rov_rank_appType_19']]:
|
|
|
+ if ab_code in [
|
|
|
+ config_.AB_CODE['rov_rank_appType_18_19'],
|
|
|
+ config_.AB_CODE['rov_rank_appType_19'],
|
|
|
+ config_.AB_CODE['top_video_relevant_appType_19']
|
|
|
+ ]:
|
|
|
data = {
|
|
|
'rov_pool_recall': recall_result_list[0],
|
|
|
'flow_pool_recall': recall_result_list[1]
|
|
@@ -366,8 +375,13 @@ def update_local_distribute_count(videos):
|
|
|
log_.error(traceback.format_exc())
|
|
|
|
|
|
|
|
|
-def get_recommend_params(ab_exp_info):
|
|
|
- """根据实验分组给定对应的推荐参数"""
|
|
|
+def get_recommend_params(ab_exp_info, page_type=0):
|
|
|
+ """
|
|
|
+ 根据实验分组给定对应的推荐参数
|
|
|
+ :param ab_exp_info: AB实验组参数
|
|
|
+ :param page_type: 页面区分参数,默认:0(首页)
|
|
|
+ :return:
|
|
|
+ """
|
|
|
top_K = config_.K
|
|
|
flow_pool_P = config_.P
|
|
|
# 不获取人工干预数据标记
|
|
@@ -501,6 +515,13 @@ def get_recommend_params(ab_exp_info):
|
|
|
flow_pool_P = config_.P_18_19
|
|
|
no_op_flag = True
|
|
|
|
|
|
+ elif config_.AB_EXP_CODE['top_video_relevant_appType_19'] in ab_exp_code_list and page_type == 2:
|
|
|
+ ab_code = config_.AB_CODE['top_video_relevant_appType_19']
|
|
|
+ expire_time = 3600
|
|
|
+ top_K = 1
|
|
|
+ flow_pool_P = config_.P_18_19
|
|
|
+ no_op_flag = True
|
|
|
+
|
|
|
# 老视频实验
|
|
|
if config_.AB_EXP_CODE['old_video'] in ab_exp_code_list:
|
|
|
ab_code = config_.AB_CODE['old_video']
|
|
@@ -581,7 +602,7 @@ def video_homepage_recommend(mid, uid, size, app_type, algo_type, client_info, a
|
|
|
return rank_result
|
|
|
|
|
|
|
|
|
-def video_relevant_recommend(video_id, mid, uid, size, app_type, ab_exp_info, client_info):
|
|
|
+def video_relevant_recommend(video_id, mid, uid, size, app_type, ab_exp_info, client_info, page_type):
|
|
|
"""
|
|
|
相关推荐逻辑
|
|
|
:param video_id: 相关推荐的头部视频id
|
|
@@ -590,6 +611,8 @@ def video_relevant_recommend(video_id, mid, uid, size, app_type, ab_exp_info, cl
|
|
|
:param size: 请求视频数量 type-int
|
|
|
:param app_type: 产品标识 type-int
|
|
|
:param ab_exp_info: ab实验分组参数 [{"expItemId":1, "configValue":{"size":4, "K":3, ...}}, ...]
|
|
|
+ :param client_info: 地域参数
|
|
|
+ :param page_type: 页面区分参数 1:详情页;2:分享页
|
|
|
:return: videos type-list
|
|
|
"""
|
|
|
top_K, flow_pool_P, ab_code, rule_key, expire_time, no_op_flag, old_video_index = \
|
|
@@ -601,7 +624,7 @@ def video_relevant_recommend(video_id, mid, uid, size, app_type, ab_exp_info, cl
|
|
|
algo_type='', client_info=client_info,
|
|
|
ab_code=ab_code, expire_time=expire_time,
|
|
|
rule_key=rule_key, no_op_flag=no_op_flag,
|
|
|
- old_video_index=old_video_index)
|
|
|
+ old_video_index=old_video_index, video_id=video_id)
|
|
|
# ab-test
|
|
|
# result = ab_test_op(rank_result=rank_result,
|
|
|
# ab_code_list=[config_.AB_CODE['position_insert'], config_.AB_CODE['relevant_video_op']],
|