linfan пре 1 година
родитељ
комит
ba719e94fd
3 измењених фајлова са 53 додато и 86 уклоњено
  1. 22 33
      recommend.py
  2. 12 19
      video_rank.py
  3. 19 34
      video_recall.py

+ 22 - 33
recommend.py

@@ -441,43 +441,36 @@ def video_old_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
                              client_info=client_info, rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
                              params=params, rule_key_30day=rule_key_30day, shield_config=shield_config, video_id= video_id)
 
-    exp_config = None
-    if ab_code == 60052:
-        exp_config = pool_recall.get_flow_exp_7_config()
-    elif ab_code == 60053:
-        exp_config = pool_recall.get_flow_exp_8_config()
-    elif ab_code == 60057:
-        exp_config = pool_recall.get_flow_exp_6_config()
-    #print("exp_config:", exp_config)
-
+    exp_config = pool_recall.get_sort_ab_codel_config()
+    # 60054 全量: simrecall+融合排序
     if app_type in [config_.APP_TYPE['LAO_HAO_KAN_VIDEO'], config_.APP_TYPE['ZUI_JING_QI']]:
-        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config)]
+        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time)]
         if ab_code ==60054 or ab_code==60066:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
         if ab_code == 60056 or ab_code == 60071:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid , exp_config))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
         if ab_code ==60067  or ab_code == 60069:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall))
         if ab_code == 60068 or ab_code == 60070:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, 'rv2:'))
     else:
-        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time, ab_code, exp_config),
+        t = [gevent.spawn(pool_recall.rov_pool_recall_with_region, size, expire_time),
              gevent.spawn(pool_recall.flow_pool_recall, size, config_.QUICK_FLOW_POOL_ID),
              gevent.spawn(pool_recall.flow_pool_recall, size)]
         if  ab_code == 60054 or ab_code==60066:
             t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
         if ab_code == 60056 or ab_code == 60071:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid , exp_config))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_U2I_reall, mid))
         if ab_code == 60067 or ab_code == 60069:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall))
         if ab_code == 60068 or ab_code == 60070:
-            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter, exp_config))
-            t.append(gevent.spawn(pool_recall.get_return_video_reall, exp_config, 'rv2:'))
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
+            t.append(gevent.spawn(pool_recall.get_return_video_reall, 'rv2:'))
 
     gevent.joinall(t)
     recall_result_list = [i.get() for i in t]
@@ -1691,12 +1684,11 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
                              rule_key=rule_key, data_key=data_key,
                              no_op_flag=no_op_flag, old_video_index=old_video_index,
                              params=params, rule_key_30day=rule_key_30day, shield_config=shield_config)
-    # 60052,60053,60057(test7, test8, test6) 融合排序
-    # simrecal: 60054 +融合
+    # simrecal: 60054 +融合, 全量
     # return video, return video2
     # old video: 60056, test2
-    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 \
-             or ab_code == 60056 or ab_code==60057  \
+    elif  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:
         result, fea_info = video_old_recommend(request_id=request_id,
@@ -1741,9 +1733,6 @@ def video_homepage_recommend(request_id, mid, uid, size, app_type, algo_type,
     update_redis_st = time.time()
     if ab_code == 60047 or  ab_code == 60048 or  ab_code == 60049:
         update_flow_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
-    # elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054 or ab_code == 60055 \
-    #         or ab_code == 60056 or ab_code==60057:
-    #     update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     else:
         update_redis_data(result=rank_result, app_type=app_type, mid=mid, top_K=top_K)
     # log_.info({
@@ -1816,8 +1805,8 @@ def video_relevant_recommend(request_id, video_id, mid, uid, size, app_type, ab_
                                  rule_key=rule_key, data_key=data_key, no_op_flag=no_op_flag,
                                  old_video_index=old_video_index, video_id=video_id,
                                  params=params, rule_key_30day=rule_key_30day, shield_config=shield_config)
-    elif ab_code == 60052 or ab_code == 60053 or ab_code == 60054  or \
-            ab_code == 60056 or ab_code==60057  or ab_code ==60067 \
+    elif   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:
         result, fea_info = video_old_recommend(request_id=request_id,
                                  mid=mid, uid=uid, app_type=app_type,

+ 12 - 19
video_rank.py

@@ -607,26 +607,15 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, mid, exp_config=Non
 
     #全量的是vlog,票圈精选, 334,60057,
     # 60054: simrecall,
-    # 60052: 票圈精选,融合排序,60053:空置
-    # 60055: video_reall, 60065: video_recall2
-    # 60056: get_U2I_reall
     pre_str = "k_p2:"
-    if ab_code==60057:
-        pre_str = "k_p2:"
-    elif ab_code == 60052:
-        pre_str = "k_p5:"
-    elif ab_code == 60053:
-        pre_str = "k_p8:"
-    elif ab_code == 60054:
-        pre_str = "k_p3:"
-    elif ab_code == 60055:
-        pre_str = "k_p4:"
-    elif ab_code == 60056:
-        pre_str = "k_p7:"
     #print("pre_str:", pre_str)
     rov_recall_rank = rec_recall_item_list
     #call rank service
     #flag_call_service = 0
+    sort_index = 0
+    if exp_config and "sort_flag" in exp_config:
+        sort_index = exp_config["sort_flag"]
+    print("sort_index:", sort_index)
     redisObj = RedisHelper()
     vidKeys = []
     for recall_item in rec_recall_item_list:
@@ -640,13 +629,18 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, mid, exp_config=Non
                 and len(score_result) == len(rec_recall_item_list) and len(video_scores)== len(score_result):
             for i in range(len(score_result)):
                 try:
-                    if video_scores[i] is None:
+                    if video_scores[i] is None and len(score_result[i])>0:
                         return_score = 0.000000001
                         total_score = return_score * score_result[i][0]
                         rec_recall_item_list[i]['sort_score'] = total_score
                     else:
                         video_score_str = json.loads(video_scores[i])
-                        return_score = video_score_str[0]
+                        if len(video_score_str)>= sort_index and  len(video_score_str)>0:
+                            return_score = video_score_str[sort_index]
+                            print("sort_index:", sort_index, " return_score:", return_score)
+                            print("video_score_str:", video_score_str)
+                        else:
+                            return_score = 0.000000001
                         #print("return_score:", return_score, "score:", score_result[i][0],"\t", rec_recall_item_list[i])
                         total_score = return_score * score_result[i][0]
                         rec_recall_item_list[i]['sort_score'] = total_score
@@ -688,8 +682,7 @@ def video_new_rank2(data, size, top_K, flow_pool_P, ab_code, mid, exp_config=Non
         # 按概率 p 及score排序获取 size - k 个视频
     flow_num = 0
     flowConfig = 0
-    if exp_config and exp_config['flowConfig']:
-        flowConfig = exp_config['flowConfig']
+    # 本段代码控制流量池,通过实验传参,现不动
     if flowConfig == 1 and len(rov_recall_rank) > 0:
         for recall_item in rank_result:
             flow_recall_name = recall_item.get("flowPool", '')

+ 19 - 34
video_recall.py

@@ -1210,7 +1210,7 @@ class PoolRecall(object):
             idx = 0
         return key_name, last_region_dup_key, idx
 
-    def rov_pool_recall_with_region_process(self, size=4, expire_time=24*3600, ab_code=None, exp_config=None):
+    def rov_pool_recall_with_region_process(self, size=4, expire_time=24*3600):
         """
         地域分组召回视频
         :param size: 获取视频个数
@@ -1275,16 +1275,16 @@ class PoolRecall(object):
         now_video_ids = []
         recall_result = []
         recall_num = size
-        if ab_code and exp_config:
-            if ab_code==60058 or ab_code==60059 or ab_code == 60060 \
-                    or ab_code == 60061 or ab_code==60052 \
-                    or ab_code==60053 or ab_code==60057 :
-                try:
-                    recall_num = int(exp_config['recall_num'])
-                except:
-                    recall_num = size
-        if recall_num<size:
-            recall_num = size
+        # if ab_code and exp_config:
+        #     if ab_code==60058 or ab_code==60059 or ab_code == 60060 \
+        #             or ab_code == 60061 or ab_code==60052 \
+        #             or ab_code==60053 or ab_code==60057 :
+        #         try:
+        #             recall_num = int(exp_config['recall_num'])
+        #         except:
+        #             recall_num = size
+        # if recall_num<size:
+        #     recall_num = size
         for region_result in region_recall_result_list:
             for video in region_result:
                 video_id = video.get('videoId')
@@ -1323,10 +1323,10 @@ class PoolRecall(object):
         #print("recall_result:", recall_result[:recall_num])
         return recall_result[:recall_num]
 
-    def rov_pool_recall_with_region(self, size=4, expire_time=24*3600, ab_code=None, exp_config=None):
+    def rov_pool_recall_with_region(self, size=4, expire_time=24*3600):
         """召回池召回视频"""
         # 获取召回池中视频
-        videos = self.rov_pool_recall_with_region_process(size=size, expire_time=expire_time, ab_code=ab_code, exp_config=exp_config)
+        videos = self.rov_pool_recall_with_region_process(size=size, expire_time=expire_time)
         # 对在流量池中存在的视频添加标记字段
         result = []
         for item in videos:
@@ -2137,7 +2137,7 @@ class PoolRecall(object):
                 )
         return recall_result[:200]
 
-    def get_sim_hot_item_reall_filter(self, exp_config=None):
+    def get_sim_hot_item_reall_filter(self):
         if self.video_id is None:
             return  []
         recall_key = "sim_hot_" + str(self.video_id)
@@ -2163,11 +2163,6 @@ class PoolRecall(object):
         if len(video_ids)<=0:
             return  recall_result
         recall_num = 20
-        try:
-            if exp_config and exp_config['recall_get_num']:
-                recall_num = int(exp_config['recall_get_num'])
-        except:
-            recall_num = 20
         #print("recall_num:", recall_num)
         video_ids = video_ids[:recall_num]
         #print(video_ids)
@@ -2698,9 +2693,9 @@ class PoolRecall(object):
         else:
             return None
 
-    def get_flow_exp_6_config(self):
-        recall_key = "exp6_exp_config"
-        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+    def get_sort_ab_codel_config(self):
+        ab_key = "sort_ab_config"
+        data = self.redis_helper.get_data_from_redis(key_name=ab_key)
         if data is not None:
             try:
                 # print(data)
@@ -2713,7 +2708,7 @@ class PoolRecall(object):
             return None
 
 
-    def get_U2I_reall(self, mid, exp_config=None):
+    def get_U2I_reall(self, mid):
         #recall_key = "hot_video:"
         if not mid:
             return  []
@@ -2739,11 +2734,6 @@ class PoolRecall(object):
         if len(video_ids)<=0:
             return  recall_result
         recall_num = 20
-        try:
-            if exp_config and exp_config['recall_get_num']:
-                recall_num = int(exp_config['recall_get_num'])
-        except:
-            recall_num = 20
         #print("recall_num:", recall_num)
         video_ids = video_ids[:recall_num]
         #print(video_ids)
@@ -2820,7 +2810,7 @@ class PoolRecall(object):
         else:
             return None
 
-    def get_return_video_reall(self, exp_config=None, pre_key=None):
+    def get_return_video_reall(self, pre_key=None):
         if self.video_id is None:
             return  []
         recall_key = "rv:"+ str(self.video_id)
@@ -2847,11 +2837,6 @@ class PoolRecall(object):
         if len(video_ids)<=0:
             return  recall_result
         recall_num = 20
-        try:
-            if exp_config and exp_config['recall_get_num']:
-                recall_num = int(exp_config['recall_get_num'])
-        except:
-            recall_num = 20
         #print("recall_num:", recall_num)
         video_ids = video_ids[:recall_num]
         #print(video_ids)