Commit 76eacd02 authored by 段英荣's avatar 段英荣

modify home_recommend

parent c4a40c14
...@@ -264,7 +264,7 @@ class ESPerform(object): ...@@ -264,7 +264,7 @@ class ESPerform(object):
return True return True
@classmethod @classmethod
def get_tag_topic_list(cls,tag_id,have_read_topic_id_list): def get_tag_topic_list(cls,tag_id,have_read_topic_id_list,size=100):
try: try:
functions_list = list() functions_list = list()
for id in tag_id: for id in tag_id:
...@@ -322,7 +322,7 @@ class ESPerform(object): ...@@ -322,7 +322,7 @@ class ESPerform(object):
} }
} }
result_dict = ESPerform.get_search_results(ESPerform.get_cli(), sub_index_name="topic", query_body=q, result_dict = ESPerform.get_search_results(ESPerform.get_cli(), sub_index_name="topic", query_body=q,
offset=0, size=100,routing="4,5,6") offset=0, size=size,routing="4,5,6")
topic_id_list = [item["_source"]["id"] for item in result_dict["hits"]] topic_id_list = [item["_source"]["id"] for item in result_dict["hits"]]
logging.info("topic_id_list:%s"%str(topic_id_list)) logging.info("topic_id_list:%s"%str(topic_id_list))
......
...@@ -54,9 +54,6 @@ class CollectData(object): ...@@ -54,9 +54,6 @@ class CollectData(object):
def update_recommend_tag_list(self, device_id,user_feature=None,user_id=None,click_topic_tag_list=None): def update_recommend_tag_list(self, device_id,user_feature=None,user_id=None,click_topic_tag_list=None):
try: try:
recommend_tag_set = set()
recommend_tag_list = list()
recommend_tag_dict = dict()
redis_linucb_tag_data_dict = self._get_user_linucb_info(device_id) redis_linucb_tag_data_dict = self._get_user_linucb_info(device_id)
if len(redis_linucb_tag_data_dict) == 0: if len(redis_linucb_tag_data_dict) == 0:
recommend_tag_list = LinUCB.get_default_tag_list(user_id) recommend_tag_list = LinUCB.get_default_tag_list(user_id)
...@@ -82,22 +79,17 @@ class CollectData(object): ...@@ -82,22 +79,17 @@ class CollectData(object):
if click_topic_tag_list: if click_topic_tag_list:
if len(click_topic_tag_list)>0: if len(click_topic_tag_list)>0:
recommend_topic_id_list_click = ESPerform.get_tag_topic_list(click_topic_tag_list, recommend_topic_id_list_click = ESPerform.get_tag_topic_list(click_topic_tag_list,
have_read_topic_id_list) have_read_topic_id_list,size=2)
if len(recommend_topic_id_list_click) > 0: if len(recommend_topic_id_list_click) > 0:
num = min(len(recommend_topic_id_list_click), 2) recommend_topic_id_list.extend(recommend_topic_id_list_click)
logging.info("recommend_topic_id_list:%s" % (str(num))) have_read_topic_id_list.extend(recommend_topic_id_list)
for i in range(0,num): click_recommend_redis_key = self.click_recommend_redis_key_prefix + str(device_id)
recommend_topic_id_list.append(recommend_topic_id_list_click[i]) click_redis_data_dict = {
have_read_topic_id_list.extend(recommend_topic_id_list) "data": json.dumps(recommend_topic_id_list),
click_recommend_redis_key = self.click_recommend_redis_key_prefix + str(device_id) "cursor": 0
click_redis_data_dict = { }
"data": json.dumps(recommend_topic_id_list), redis_client.hmset(click_recommend_redis_key, click_redis_data_dict)
"cursor": 0
}
redis_client.hmset(click_recommend_redis_key, click_redis_data_dict)
total_topic_list = list()
tag_topic_id_list = list()
tag_id_list = recommend_tag_list[0:100] tag_id_list = recommend_tag_list[0:100]
topic_recommend_redis_key = self.linucb_recommend_topic_id_prefix + str(device_id) topic_recommend_redis_key = self.linucb_recommend_topic_id_prefix + str(device_id)
......
...@@ -94,19 +94,20 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query ...@@ -94,19 +94,20 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
redis_user_similar_score_redis_val) if redis_user_similar_score_redis_val else [] redis_user_similar_score_redis_val) if redis_user_similar_score_redis_val else []
redis_tag_data = redis_client.hget("physical:linucb:register_user_tag_info", user_id) if query is None:
attention_tag_list = json.loads(redis_tag_data) if redis_tag_data else [] redis_tag_data = redis_client.hget("physical:linucb:register_user_tag_info", user_id)
if len(recommend_topic_list)>0: attention_tag_list = json.loads(redis_tag_data) if redis_tag_data else []
size = size-len(recommend_topic_list) if len(recommend_topic_list)>0:
have_read_topic_id_list.extend(recommend_topic_list) size = size-len(recommend_topic_list)
have_read_topic_id_list.extend(recommend_topic_list)
have_read_topic_id_list_add_promote = list() have_read_topic_id_list_add_promote = list()
have_read_topic_id_list_add_promote.extend(have_read_topic_id_list) have_read_topic_id_list_add_promote.extend(have_read_topic_id_list)
promote_recommend_topic_id_list = TopicHomeRecommend.objects.using(settings.SLAVE_DB_NAME).filter( promote_recommend_topic_id_list = TopicHomeRecommend.objects.using(settings.SLAVE_DB_NAME).filter(
is_online=1).values_list("topic_id",flat=True) is_online=1).values_list("topic_id",flat=True)
for topic_id in promote_recommend_topic_id_list: for topic_id in promote_recommend_topic_id_list:
have_read_topic_id_list_add_promote.append(topic_id) have_read_topic_id_list_add_promote.append(topic_id)
topic_id_list = list() topic_id_list = list()
rank_topic_id_list = TopicUtils.get_recommend_topic_ids(user_id=user_id, tag_id=tag_id, offset=offset, size=size, rank_topic_id_list = TopicUtils.get_recommend_topic_ids(user_id=user_id, tag_id=tag_id, offset=offset, size=size,
...@@ -115,7 +116,7 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query ...@@ -115,7 +116,7 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
recommend_tag_list=recommend_topic_list, recommend_tag_list=recommend_topic_list,
user_similar_score_list=user_similar_score_redis_list,index_type="topic",routing="4,5,6",attention_tag_list=attention_tag_list) user_similar_score_list=user_similar_score_redis_list,index_type="topic",routing="4,5,6",attention_tag_list=attention_tag_list)
if (len(recommend_topic_list) == 6): if len(recommend_topic_list) == 6 and query is None:
if (size < 11): if (size < 11):
topic_id_list.extend(rank_topic_id_list[0:3]) topic_id_list.extend(rank_topic_id_list[0:3])
topic_id_list.extend(recommend_topic_list[0:3]) topic_id_list.extend(recommend_topic_list[0:3])
...@@ -129,8 +130,6 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query ...@@ -129,8 +130,6 @@ def get_home_recommend_topic_ids(user_id, device_id, tag_id, offset, size, query
else: else:
topic_id_list.extend(rank_topic_id_list) topic_id_list.extend(rank_topic_id_list)
logging.info("attention_tag_list:%s"%(str(topic_id_list)))
have_read_topic_id_list.extend(topic_id_list) have_read_topic_id_list.extend(topic_id_list)
if len(have_read_topic_id_list) > 30000: if len(have_read_topic_id_list) > 30000:
cut_len = len(have_read_topic_id_list)-30000 cut_len = len(have_read_topic_id_list)-30000
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
"analyzer": "gm_default_index", "analyzer": "gm_default_index",
"search_analyzer": "gm_default_index" "search_analyzer": "gm_default_index"
}, },
"is_excellent":{"type": "long"} "is_excellent":{"type": "long"},
"is_operation_home_recommend": {"type": "boolean"} //是否首页运营推荐
} }
} }
...@@ -289,4 +289,5 @@ class TopicHomeRecommend(models.Model): ...@@ -289,4 +289,5 @@ class TopicHomeRecommend(models.Model):
db_table = "topic_home_recommend" db_table = "topic_home_recommend"
id = models.IntegerField(verbose_name=u"id",primary_key=True) id = models.IntegerField(verbose_name=u"id",primary_key=True)
topic_id = models.IntegerField(verbose_name=u"帖子ID") topic_id = models.IntegerField(verbose_name=u"帖子ID")
is_online = models.BooleanField(verbose_name=u'是否上线') is_online = models.BooleanField(verbose_name=u'是否上线')
\ No newline at end of file is_deleted = models.BooleanField(verbose_name=u'是否删除')
...@@ -9,7 +9,7 @@ import time ...@@ -9,7 +9,7 @@ import time
import re import re
import datetime import datetime
from trans2es.models.user import User from trans2es.models.user import User
from trans2es.models.topic import ExcellentTopic from trans2es.models.topic import ExcellentTopic,TopicHomeRecommend
class TopicTransfer(object): class TopicTransfer(object):
...@@ -121,6 +121,11 @@ class TopicTransfer(object): ...@@ -121,6 +121,11 @@ class TopicTransfer(object):
else: else:
res["is_excellent"] = 0 res["is_excellent"] = 0
res["is_operation_home_recommend"] = False
operation_home_recommend = TopicHomeRecommend.objects.filter(topic_id=instance.id).first()
if operation_home_recommend and operation_home_recommend.is_online and not operation_home_recommend.is_deleted:
res["is_operation_home_recommend"] = True
logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % (time0,time1,time2,time3,time4)) logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % (time0,time1,time2,time3,time4))
return res return res
except: except:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment