linfan пре 1 година
родитељ
комит
0df67d56f3
4 измењених фајлова са 74 додато и 6 уклоњено
  1. 5 0
      config.py
  2. 20 3
      recommend.py
  3. 7 3
      video_rank.py
  4. 42 0
      video_recall.py

+ 5 - 0
config.py

@@ -157,6 +157,7 @@ class BaseConfig(object):
             'abtest_335': 60058,
             'abtest_336': 60059,
             'abtest_337': 60060,
+            'abtest_338': 60061,
         },  # 地域分组小时级规则实验
 
         'rank_by_24h': {
@@ -384,6 +385,10 @@ class BaseConfig(object):
         '337': {
             'data_key': 'data10', 'rule_key': 'rule7',
             'ab_code': AB_CODE['region_rank_by_h'].get('abtest_337')
+        },
+        '338': {
+            'data_key': 'data10', 'rule_key': 'rule7',
+            'ab_code': AB_CODE['region_rank_by_h'].get('abtest_338')
         }
     }
 

+ 20 - 3
recommend.py

@@ -201,6 +201,8 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
             t.append(gevent.spawn(pool_recall.get_hot_item_reall))
         elif  ab_code==60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
+        elif  ab_code==60061:
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
     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),
@@ -209,6 +211,8 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
             t.append(gevent.spawn(pool_recall.get_hot_item_reall))
         elif ab_code == 60059:
             t.append(gevent.spawn(pool_recall.get_word2vec_item_reall))
+        elif ab_code == 60061:
+            t.append(gevent.spawn(pool_recall.get_sim_hot_item_reall_filter))
 
     # 最惊奇相关推荐实验
     # elif ab_code == config_.AB_CODE['top_video_relevant_appType_19']:
@@ -299,12 +303,25 @@ def video_recommend(request_id, mid, uid, size, top_K, flow_pool_P, app_type, al
         if len(recall_result_list)>=4:
             data['w2v_recall'] = recall_result_list[3]
         else:
-            data['hot_recall'] = []
+            data['w2v_recall'] = []
+    elif ab_code == 60061:
+        if len(recall_result_list)>=4:
+            data['sim_recall'] = recall_result_list[3]
+        else:
+            data['sim_recall'] = []
     #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:
-    if ab_code == 60058 or ab_code == 60059 or ab_code == 60060 :
-        test_config =pool_recall.get_test_config()
+    if ab_code == 60058 or ab_code == 60059 or ab_code == 60060 or ab_code == 60061 :
+        test_config = None
+        if ab_code == 60058:
+            test_config =pool_recall.get_hotrecall_config()
+        elif ab_code == 60059:
+            test_config = pool_recall.get_w2v_config()
+        elif ab_code == 60060:
+            test_config = pool_recall.get_test_config()
+        elif ab_code == 60061:
+            test_config = pool_recall.get_simrecall_config()
         #print("test config:",test_config)
         rank_result = video_sanke_rank(data=data, size=size, top_K=top_K, flow_pool_P=float(flow_pool_P), ab_Code=ab_code, exp_config=test_config)
     else:

+ 7 - 3
video_rank.py

@@ -712,7 +712,7 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
     recall_dict['rov_recall_24h_dup'] = rule_24h_dup_recall_rank
     hot_recall = []
     w2v_recall =[]
-
+    sim_recall = []
     if ab_Code==60058:
         if len(data['hot_recall'])>0:
             hot_recall = sorted(data['hot_recall'], key=lambda k: k.get('rovScore', 0), reverse=True)
@@ -722,9 +722,13 @@ def video_sanke_rank(data, size, top_K, flow_pool_P, ab_Code='', exp_config=None
             recall_dict['w2v_recall'] = data['w2v_recall']
         else:
             recall_dict['w2v_recall'] = w2v_recall
+    elif ab_Code==60061:
+        if len(data['sim_recall'])>0:
+            recall_dict['sim_recall'] = data['sim_recall']
+        else:
+            recall_dict['sim_recall'] = sim_recall
 
-    recall_list = [('rov_recall_region_h',1, 1),('hot_recall',0.5,1), ('w2v_recall',0.5,1),
-                   ('rov_recall_region_h',0.5, 1),('rov_recall_region_24h',1,1),
+    recall_list = [('rov_recall_region_h',1, 1),('rov_recall_region_h',0.5, 1),('rov_recall_region_24h',1,1), ('hot_recall',0.5,1), ('w2v_recall',0.5,1)
                    ('rov_recall_24h',1,1), ('rov_recall_24h_dup',0.5,1)]
     if exp_config is not  None:
         recall_list = exp_config

+ 42 - 0
video_recall.py

@@ -2530,5 +2530,47 @@ class PoolRecall(object):
                 return json_result
             except Exception as e:
                 return None
+        else:
+            return None
+
+    def get_w2v_config(self):
+        recall_key = "w2v_config"
+        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+        if data is not None:
+            try:
+                #print(data)
+                json_result = json.loads(data)
+                #print(json_result)
+                return json_result
+            except Exception as e:
+                return None
+        else:
+            return None
+
+    def get_hotrecall_config(self):
+        recall_key = "ht_config"
+        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+        if data is not None:
+            try:
+                # print(data)
+                json_result = json.loads(data)
+                # print(json_result)
+                return json_result
+            except Exception as e:
+                return None
+        else:
+            return None
+
+    def get_simrecall_config(self):
+        recall_key = "simrecall_config"
+        data = self.redis_helper.get_data_from_redis(key_name=recall_key)
+        if data is not None:
+            try:
+                # print(data)
+                json_result = json.loads(data)
+                # print(json_result)
+                return json_result
+            except Exception as e:
+                return None
         else:
             return None