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