Commit 7da602e2 authored by 段英荣's avatar 段英荣

Merge branch 'similar_sort' into 'master'

Similar sort

See merge request !136
parents 2ff62ef8 33a8993e
......@@ -65,7 +65,7 @@ def sync_face_similar_data_to_redis():
@shared_task
def sync_user_similar_score():
try:
results_items = UserSimilarScore.objects.filter(is_deleted=False).distinct().values("user_id").values_list(flat=True)
results_items = UserSimilarScore.objects.filter(is_deleted=False).distinct().values("user_id").values_list("user_id",flat=True)
redis_key_prefix = "physical:user_similar_score:user_id:"
logging.info("duan add,begin sync user_similar_score!")
......
......@@ -79,6 +79,8 @@ class CollectData(object):
def consume_data_from_kafka(self,topic_name=None):
try:
user_feature = [1,1]
kafka_consumer_obj = KafkaManager.get_kafka_consumer_ins(topic_name)
for ori_msg in kafka_consumer_obj:
logging.info(ori_msg)
......@@ -90,7 +92,7 @@ class CollectData(object):
topic_id = raw_val_dict["params"]["business_id"]
device_id = raw_val_dict["device"]["device_id"]
logging.info("consume topic_id:%s,device_id:%s" % (str(topic_id),str()))
logging.info("consume topic_id:%s,device_id:%s" % (str(topic_id),str(device_id)))
tag_list = list()
sql_query_results = TopicTag.objects.filter(is_online=True,topic_id=topic_id)
......@@ -100,7 +102,6 @@ class CollectData(object):
is_click = 1
is_vote = 0
user_feature = [is_click, is_vote]
reward = 1 if is_click or is_vote else 0
for tag_id in tag_list:
......@@ -108,6 +109,28 @@ class CollectData(object):
# 更新该用户的推荐tag数据,放在 更新完成user tag行为信息之后
self.update_recommend_tag_list(device_id, user_feature)
elif "type" in raw_val_dict and "page_precise_exposure"==raw_val_dict["type"]:
exposure_cards_list = raw_val_dict["params"]["exposure_cards"]
device_id = raw_val_dict["device"]["device_id"]
for item in exposure_cards_list:
exposure_topic_id = item["card_id"]
logging.info("consume exposure topic_id:%s,device_id:%s" % (str(exposure_topic_id),str(device_id)))
tag_list = list()
sql_query_results = TopicTag.objects.filter(is_online=True,topic_id=topic_id)
for sql_item in sql_query_results:
tag_list.append(sql_item.tag_id)
is_click = 0
is_vote = 0
reward = 1 if is_click or is_vote else 0
for tag_id in tag_list:
self.update_user_linucb_tag_info(reward,device_id,tag_id,user_feature)
# 更新该用户的推荐tag数据,放在 更新完成user tag行为信息之后
self.update_recommend_tag_list(device_id, user_feature)
return True
except:
......
......@@ -27,6 +27,7 @@ from trans2es.models.group import Group
from trans2es.models.topic import Topic,ActionSumAboutTopic
from search.utils.common import *
from linucb.views.collect_data import CollectData
from injection.data_sync.tasks import sync_user_similar_score
class Job(object):
__es = None
......@@ -207,5 +208,8 @@ class Command(BaseCommand):
if len(options["sync_type"]) and options["sync_type"]=="linucb":
collect_obj = CollectData()
collect_obj.consume_data_from_kafka()
if len(options["sync_type"]) and options["sync_type"]=="similar":
sync_user_similar_score()
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......@@ -32,7 +32,7 @@ class UserSimilarScore(models.Model):
verbose_name=u"首页推荐用"
db_table="user_similar_score"
id = models.IntegerField(verbose_name=u"主键ID",db_index=True)
id = models.IntegerField(verbose_name=u"主键ID",primary_key=True)
is_deleted = models.BooleanField(verbose_name=u"是否删除")
user_id = models.IntegerField(verbose_name=u"用户ID")
contrast_user_id = models.BigIntegerField(verbose_name="参数对比的用户id", db_index=True)
......
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