|
@@ -11,7 +11,8 @@ import config
|
|
|
from log import Log
|
|
|
from config import set_config
|
|
|
from video_recall import PoolRecall
|
|
|
-from video_rank import video_new_rank2, video_sank_pos_rank,video_new_rank,video_rank,refactor_video_rank, bottom_strategy, video_rank_by_w_h_rate, video_rank_with_old_video, bottom_strategy2
|
|
|
+from video_rank import video_new_rank2, video_sank_pos_rank, video_new_rank, video_rank, refactor_video_rank, \
|
|
|
+ bottom_strategy, video_rank_by_w_h_rate, video_rank_with_old_video, bottom_strategy2, video_new_rank3
|
|
|
from db_helper import RedisHelper
|
|
|
import gevent
|
|
|
from utils import FilterVideos, get_user_has30day_return
|
|
@@ -421,7 +422,8 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
|
|
|
def video_old_recommend(request_id, 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='', data_key='',
|
|
|
no_op_flag=False, old_video_index=-1, video_id=None, params=None, rule_key_30day=None,
|
|
|
- shield_config=None, env_dict=None, level_weight=None, flow_pool_abtest_group=None):
|
|
|
+ shield_config=None, env_dict=None, level_weight=None, flow_pool_abtest_group=None,
|
|
|
+ rank_key_prefix=None):
|
|
|
"""
|
|
|
首页线上推荐逻辑
|
|
|
:param request_id: request_id
|
|
@@ -480,7 +482,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
gevent.spawn(pool_recall.flow_pool_recall,
|
|
|
size, flow_pool_abtest_group=flow_pool_abtest_group)]
|
|
|
if ab_code == 60054 or ab_code == 60066 or ab_code == 60072 or ab_code == 60073 or ab_code == 60074 \
|
|
|
- or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079:
|
|
|
+ or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079 \
|
|
|
+ or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
|
|
|
t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
|
elif ab_code == 60056 or ab_code == 60071:
|
|
|
t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
|
|
@@ -502,7 +505,8 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
return result
|
|
|
#1. merge simrecall or deepfm
|
|
|
if ab_code == 60054 or ab_code == 60066 or ab_code == 60072 or ab_code == 60073 or ab_code == 60074 \
|
|
|
- or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079:
|
|
|
+ or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 or ab_code == 60078 or ab_code == 60079 \
|
|
|
+ or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
|
|
|
rov_pool_recall = []
|
|
|
if len(recall_result_list) >= 2:
|
|
|
region_recall = recall_result_list[0]
|
|
@@ -673,7 +677,10 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
|
|
|
env_dict['city_code'] = city_code
|
|
|
env_json = env_dict
|
|
|
#4.
|
|
|
- rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict)
|
|
|
+ # rank_result, flow_num = video_new_rank2(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_code=ab_code, mid=mid, exp_config=exp_config, env_dict=env_dict)
|
|
|
+ rank_result, flow_num = video_new_rank3(
|
|
|
+ data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), rank_key_prefix=rank_key_prefix
|
|
|
+ )
|
|
|
#print(rank_result)
|
|
|
if rank_result:
|
|
|
result['rank_num'] = len(rank_result)
|
|
@@ -1336,6 +1343,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
|
|
|
data_key = param.get('data_key')
|
|
|
rule_key_30day = param.get('30day_rule_key')
|
|
|
shield_config = config_.SHIELD_CONFIG
|
|
|
+ rank_key_prefix = 'rank:score1:'
|
|
|
|
|
|
# 默认使用 095 实验的配置
|
|
|
# ab_code = config_.AB_EXP_CODE['095'].get('ab_code')
|
|
@@ -1450,6 +1458,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
|
|
|
data_key = param.get('data_key')
|
|
|
rule_key_30day = param.get('30day_rule_key')
|
|
|
shield_config = param.get('shield_config', config_.SHIELD_CONFIG)
|
|
|
+ rank_key_prefix = param.get('rank_key_prefix', 'rank:score1:')
|
|
|
break
|
|
|
|
|
|
"""
|
|
@@ -1749,7 +1758,7 @@ def get_recommend_params(recommend_type, ab_exp_info, ab_info_data, mid, app_typ
|
|
|
# log_.info(f"flow_pool_id_choice: {flow_pool_id_choice}, flow_pool_abtest_group: {flow_pool_abtest_group}")
|
|
|
|
|
|
return top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, no_op_flag, old_video_index, rule_key_30day, \
|
|
|
- shield_config, flow_pool_abtest_group
|
|
|
+ shield_config, flow_pool_abtest_group, rank_key_prefix
|
|
|
|
|
|
|
|
|
def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
@@ -1818,7 +1827,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, \
|
|
|
- no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group = \
|
|
|
+ no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group, rank_key_prefix = \
|
|
|
get_recommend_params(recommend_type=0, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data, mid=mid,
|
|
|
app_type=app_type, flow_pool_abtest_config=flow_pool_abtest_config)
|
|
|
# log_.info({
|
|
@@ -1851,7 +1860,7 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
if ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066 \
|
|
|
or ab_code == 60069 or ab_code == 60070 or ab_code == 60071 or ab_code == 60072 or ab_code == 60073 \
|
|
|
or ab_code == 60074 or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 \
|
|
|
- or ab_code == 60078 or ab_code == 60079:
|
|
|
+ or ab_code == 60078 or ab_code == 60079 or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
|
|
|
result, fea_info = video_old_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size,
|
|
|
top_K=top_K, flow_pool_P=flow_pool_P, algo_type='',
|
|
|
client_info=client_info, ab_code=ab_code, expire_time=expire_time,
|
|
@@ -1859,7 +1868,8 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
|
|
|
old_video_index=old_video_index, video_id=None, params=params,
|
|
|
rule_key_30day=rule_key_30day, shield_config=shield_config,
|
|
|
env_dict=env_dict, level_weight=level_weight,
|
|
|
- flow_pool_abtest_group=flow_pool_abtest_group)
|
|
|
+ flow_pool_abtest_group=flow_pool_abtest_group,
|
|
|
+ rank_key_prefix=rank_key_prefix)
|
|
|
recommend_result['fea_info'] = fea_info
|
|
|
else:
|
|
|
result = video_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size, top_K=top_K,
|
|
@@ -1944,7 +1954,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
|
|
|
# 普通mid推荐处理
|
|
|
top_K, flow_pool_P, ab_code, rule_key, data_key, expire_time, \
|
|
|
- no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group = \
|
|
|
+ no_op_flag, old_video_index, rule_key_30day, shield_config, flow_pool_abtest_group, rank_key_prefix = \
|
|
|
get_recommend_params(recommend_type=1, ab_exp_info=ab_exp_info, ab_info_data=ab_info_data, page_type=page_type,
|
|
|
mid=mid, app_type=app_type, flow_pool_abtest_config=flow_pool_abtest_config)
|
|
|
# log_.info({
|
|
@@ -1972,7 +1982,7 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
if ab_code == 60054 or ab_code == 60056 or ab_code == 60067 or ab_code == 60068 or ab_code == 60066 \
|
|
|
or ab_code == 60069 or ab_code == 60070 or ab_code == 60071 or ab_code == 60072 or ab_code == 60073 \
|
|
|
or ab_code == 60074 or ab_code == 60075 or ab_code == 60076 or ab_code == 60077 \
|
|
|
- or ab_code == 60078 or ab_code == 60079:
|
|
|
+ or ab_code == 60078 or ab_code == 60079 or ab_code == 60080 or ab_code == 60081 or ab_code == 60082:
|
|
|
result, fea_info = video_old_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size,
|
|
|
top_K=top_K, flow_pool_P=flow_pool_P, algo_type='',
|
|
|
client_info=client_info, ab_code=ab_code, expire_time=expire_time,
|
|
@@ -1980,7 +1990,8 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
|
|
|
old_video_index=old_video_index, video_id=video_id, params=params,
|
|
|
rule_key_30day=rule_key_30day, shield_config=shield_config,
|
|
|
env_dict=env_dict, level_weight=level_weight,
|
|
|
- flow_pool_abtest_group=flow_pool_abtest_group)
|
|
|
+ flow_pool_abtest_group=flow_pool_abtest_group,
|
|
|
+ rank_key_prefix=rank_key_prefix)
|
|
|
recommend_result['fea_info'] = fea_info
|
|
|
else:
|
|
|
result = video_recommend(request_id=request_id, mid=mid, uid=uid, app_type=app_type, size=size, top_K=top_K,
|