linfan 1 年間 前
コミット
cba55b533c
2 ファイル変更25 行追加15 行削除
  1. 14 12
      recommend.py
  2. 11 3
      video_rank.py

+ 14 - 12
recommend.py

@@ -200,8 +200,7 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
     else:
         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),
-             gevent.spawn(pool_recall.get_sim_hot_item_reall)]
+             gevent.spawn(pool_recall.flow_pool_recall, size)]
 
     # 最惊奇相关推荐实验
     # elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
@@ -282,10 +281,10 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
                 'rov_pool_recall': recall_result_list[0],
                 'flow_pool_recall': recall_result_list[2]
             }
-    if ab_code=="ab_new_test":
-        rank_result = video_new_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
-    else:
-        rank_result = video_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
+    #if ab_code=="ab_new_test":
+    #    rank_result = video_new_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
+    #else:
+    rank_result = video_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
 
     # 老视频实验
     # if ab_code in [config_.AB_CODE['old_video']]:
@@ -424,12 +423,13 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
     recall_dict = {}
     fast_flow_set = set('')
     flow_flow_set = set('')
-    all_flow_set = set('')
+    #all_flow_set = set('')
     region_h_recall = []
     region_day_recall = []
     select_day_recall = []
     no_selected_recall  = []
     sim_hot_recall = []
+    flowFlag_dict = {}
     for per_item in all_recall_result:
         #print(per_item)
         vId = per_item.get("videoId",'0')
@@ -441,10 +441,9 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
             flow_pool_id = int(flow_pool.split('#')[0])
             if flow_pool_id == config_.QUICK_FLOW_POOL_ID:
                 fast_flow_set.add(vId)
-                all_flow_set.add(vId)
             else:
                 flow_flow_set.add(vId)
-                all_flow_set.add(vId)
+            flowFlag_dict[vId] = flow_pool
 
         #duplicate divide into
         if vId not in recall_dict:
@@ -473,7 +472,7 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
     if expose_filterd_videos is None:
         return result
     #b). sep_filter
-    normal_video_list, flow_video_list = filter_.new_flow_video(expose_filterd_videos, all_flow_set, region_code, shield_config)
+    normal_video_list, flow_video_list = filter_.new_flow_video(expose_filterd_videos, flowFlag_dict.keys(), region_code, shield_config)
     print("normal_video_list:", normal_video_list, "flow_video_list:", flow_video_list)
     if len(normal_video_list)==0 and len(flow_video_list)==0:
         return result
@@ -491,12 +490,15 @@ def new_video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type
 
     rank_result= []
     if ab_code==60048 or ab_code==60049:
-        rank_ids = video_new_rank(videoIds=all_recall_list,fast_flow_set=fast_flow_set, flow_set=flow_flow_set,size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
+        rank_ids, add_flow_set = video_new_rank(videoIds=all_recall_list,fast_flow_set=fast_flow_set, flow_set=flow_flow_set,size=size, top_K=top_K, flow_pool_P=float(flow_pool_P))
         for rank_item in rank_ids:
             rank_id = rank_item[0]
             rank_score = rank_item[1]
             pushFrom = recall_dict.get(rank_id, '')
-            rank_result.append({'videoId': rank_id, 'flowPool': '',
+            flowPoolFlag = ''
+            if rank_id in add_flow_set:
+                flowPoolFlag = flowFlag_dict.get(rank_id,'') 
+            rank_result.append({'videoId': rank_id, 'flowPool': flowPoolFlag,
                      'rovScore': rank_score, 'pushFrom': pushFrom,
                      'abCode': ab_code})
         #

+ 11 - 3
video_rank.py

@@ -210,7 +210,9 @@ def video_new_rank(videoIds, fast_flow_set, flow_set, size, top_K, flow_pool_P):
     print("rank_result:", rank_result)
     # 按概率 p 及score排序获取 size - k 个视频, 第4个位置按概率取流量池
     i = 0
-    while i < size - top_K:
+    left_quato = size - top_K
+    add_flow_set = set('')
+    while i < left_quato:
         # 随机生成[0, 1)浮点数
         rand = random.random()
         # log_.info('rand: {}'.format(rand))
@@ -221,6 +223,10 @@ def video_new_rank(videoIds, fast_flow_set, flow_set, size, top_K, flow_pool_P):
                 else:
                     rank_result.append(flow_item)
                     rank_set.add(flow_item[0])
+                    add_flow_set.add(flow_item[0])
+                i += 1
+                if i>= left_quato:
+                    break
         else:
             for recall_item in rov_recall_rank:
                 if recall_item[0] in rank_set:
@@ -228,9 +234,11 @@ def video_new_rank(videoIds, fast_flow_set, flow_set, size, top_K, flow_pool_P):
                 else:
                     rank_result.append(recall_item)
                     rank_set.add(recall_item[0])
-        i += 1
+                i += 1
+                if i>= left_quato:
+                    break
     print("rank_result:", rank_result)
-    return rank_result[:size]
+    return rank_result[:size], add_flow_set
 
 
 def refactor_video_rank(rov_recall_rank, fast_flow_set, flow_set, size, top_K, flow_pool_P):