Commit 02c3b680 authored by lixiaofang's avatar lixiaofang

add

parent 9d58d1cf
......@@ -132,3 +132,26 @@ def get_tag_count():
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
def del_pictorial_read_ten_redis():
try:
now = datetime.datetime.now().date()
yes_time = now - datetime.timedelta(days=10)
logging.info("get yes_time:%s" % yes_time)
device_id = "123456"
redis_key = "physical:home_recommend_pictorial" + ":device_id:" + str(device_id)
logging.info("get redis:%s" % redis_key)
redis_question_val_list = redis_client.hgetall(redis_key)
logging.info("get redis_question_val_list:%s" % redis_question_val_list)
for item in redis_question_val_list:
items = item.encode(encoding='utf-8')
if items < str(yes_time):
redis_client.hdel(redis_key, item)
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......@@ -47,7 +47,8 @@ class GroupUtils(object):
return {"total_count": 0, "hits": []}
@classmethod
def get_hot_pictorial_recommend_result_list(cls, offset, size, es_cli_obj=None, attention_tag_list=[]):
def get_hot_pictorial_recommend_result_list(cls, offset, size, es_cli_obj=None, attention_tag_list=[],
have_read_pictorial_id_list=[]):
try:
if not es_cli_obj:
es_cli_obj = ESPerform.get_cli()
......@@ -92,7 +93,8 @@ class GroupUtils(object):
{"term": {"effective": True}}
],
"must_not": [
{"term": {"is_default": 1}}
{"term": {"is_default": 1}},
# {"terms": {"id": have_read_pictorial_id_list}}
]
}
},
......@@ -122,6 +124,9 @@ class GroupUtils(object):
q["_source"] = {
"includes": ["id"]
}
if have_read_pictorial_id_list:
q["query"]["function_score"]["query"]["bool"]["must_not"].append(
{"terms": {"id": have_read_pictorial_id_list}})
result_dict = ESPerform.get_search_results(es_cli_obj, "pictorial", q, offset, size)
......
......@@ -54,9 +54,33 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
if not isinstance(user_id, int):
user_id = -1
if not isinstance(device_id, str):
device_id = ""
now = datetime.datetime.now().date()
yes_time = now - datetime.timedelta(days=10)
"""
过滤近10天读过的数据
"""
redis_key = ""
have_read_pictorial_id_list = set()
if device_id:
redis_key = "physical:home_recommend_pictorial" + ":device_id:" + str(device_id)
redis_question_val_list = redis_client.hgetall(redis_key)
for item in redis_question_val_list:
items = item.decode(encoding='utf-8')
# 先删除10天前的
if items < str(yes_time):
redis_client.hdel(redis_key, item)
# 获取近10天的读过的榜单
else:
value = redis_question_val_list.get(item, None).decode(encoding='utf-8')
for pictorial_id in value:
have_read_pictorial_id_list.add(pictorial_id)
logging.info("get have_read_tractate_id_list:%s" % have_read_pictorial_id_list)
# 获取es链接对象
es_cli_obj = ESPerform.get_cli()
if sort_type == GroupSortTypes.HOT_RECOMMEND:
# 用户关注标签
attention_tag_list = list()
......@@ -65,9 +89,23 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
attention_tag_list = json.loads(redis_tag_data) if redis_tag_data else []
pictorial_ids_list = GroupUtils.get_hot_pictorial_recommend_result_list(offset, size, es_cli_obj,
attention_tag_list)
attention_tag_list,
have_read_pictorial_id_list)
logging.info("get pictorial_ids_list:%s" % pictorial_ids_list)
"""
增加已读过滤
"""
if len(pictorial_ids_list) > 0:
if redis_key:
for id in pictorial_ids_list:
have_read_pictorial_id_list.append(id)
redis_client.hset(redis_key, now, json.dumps(have_read_pictorial_id_list))
return {"pictorial_recommend_ids": pictorial_ids_list}
elif sort_type == GroupSortTypes.ATTENTION_RECOMMEND:
attention_pictorial_list = GroupUtils.get_user_attention_pictorial_list(user_id, offset=0, size=1,
es_cli_obj=es_cli_obj)
......@@ -76,6 +114,7 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
else:
attention_pictorial_id_list = [item["pictorial_id"] for item in attention_pictorial_list]
sorted_pictorial_ids_list = GroupUtils.get_pictorial_ids_by_aggs(attention_pictorial_id_list,
es_cli_obj)
......@@ -86,6 +125,15 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
for item in sorted_attention_pictorial_list:
if item["pictorial_id"] not in pictorial_recommend_ids_list:
pictorial_recommend_ids_list.append(item["pictorial_id"])
"""
增加已读过滤
"""
if len(pictorial_recommend_ids_list[offset:(offset + size)]) > 0:
if redis_key:
for id in pictorial_recommend_ids_list[offset:(offset + size)]:
have_read_pictorial_id_list.append(id)
redis_client.hset(redis_key, now, json.dumps(have_read_pictorial_id_list))
return {"pictorial_recommend_ids": pictorial_recommend_ids_list[offset:(offset + size)]}
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