Commit 9f326d55 authored by lixiaofang's avatar lixiaofang

add

parent ab981b15
......@@ -40,8 +40,7 @@ def query_pictorial(query="", offset=0, size=10):
return {"group_ids": []}
@bind("physical/search/pictorial_sort")
def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0, size=10, device_id=""):
def pictorial_sort1(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0, size=10, device_id=""):
"""
:remark 小组排序,缺少:前1天发评论人数*x
:param user_id:
......@@ -136,8 +135,6 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"pictorial_recommend_ids": []}
#
def pictorial_topic(topic_id=-1, offset=0, size=10):
"""
:remark 入选画报
......@@ -358,10 +355,10 @@ def pictorial_topic_sort(pictorial_id=-1, offset=0, size=10):
return {"pict_pictorial_ids_list": []}
@bind("physical/search/pictorial_topic")
def pictorial_topic_v1(topic_id=-1, offset=0, size=10):
@bind("physical/search/pictorial_sort")
def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0, size=10, device_id=""):
"""
:remark 入选画报
:remark 小组排序,缺少:前1天发评论人数*x
:param user_id:
:param sort_type:
:param offset:
......@@ -369,128 +366,98 @@ def pictorial_topic_v1(topic_id=-1, offset=0, size=10):
:return:
"""
try:
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 = list()
if device_id:
redis_key = "physical:home_recommend_pictorial" + ":device_id:" + str(device_id)
redis_question_val_list = redis_client.hgetall(redis_key)
logging.info("get redis_question_val_list:%s" % redis_question_val_list)
logging.info("get redis_question_val_list:%s" % type(redis_question_val_list))
for item in redis_question_val_list:
items = item.decode(encoding='utf-8')
logging.info("get items:%s" % items)
# 先删除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')
value = json.loads(redis_question_val_list[item])
logging.info("get value:%s" % value)
if len(value):
for pictorial_id in value:
have_read_pictorial_id_list.append(pictorial_id)
logging.info("get have_read_tractate_id_list:%s" % have_read_pictorial_id_list)
# 获取es链接对象
es_cli_obj = ESPerform.get_cli()
q = {}
# 获取帖子从属的画报
q["query"] = {
"bool": {
"must": [
{
"term": {
"id": topic_id
}
},
{
"term": {
"is_online": True
}
}
],
"must_not": [
{
"term": {
"is_history": True
}
}
]
}
}
q["_source"] = {
"includes": ["id", "pictorial_id", "edit_tag_list"]
}
result_dict = ESPerform.get_search_results(es_cli_obj, "topic", q, offset=0, size=1)
edit_tag_list = []
pictorial_id_list = []
if len(result_dict["hits"]) > 0:
for item in result_dict["hits"]:
edit_tag_list = item["_source"]["edit_tag_list"]
if sort_type == GroupSortTypes.HOT_RECOMMEND:
# 用户关注标签
attention_tag_list = list()
if user_id > 0:
redis_tag_data = redis_client.hget("physical:linucb:register_user_tag_info", user_id)
attention_tag_list = json.loads(redis_tag_data) if redis_tag_data else []
functions_list = [
{
"filter": {
"bool": {
"must": {
"term": {
"topic_id_list": topic_id
}
}
}
},
"weight": 200
},
{
"filter": {
"bool": {
"must": {
"term": {
"is_recommend": True
}
}
}
},
"weight": 100
}
]
query_function_score = {
"query": {
"bool": {
"must": [{
"terms": {
"edit_tag_list": edit_tag_list
}
},
{
"term": {
"is_online": True
}
pictorial_ids_list = GroupUtils.get_hot_pictorial_recommend_result_list(offset, size, es_cli_obj,
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(list(have_read_pictorial_id_list)))
},
{
"term": {
"is_deleted": False
}
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)
if len(attention_pictorial_list) == 0:
return {"pictorial_recommend_ids": []}
},
"score_mode": "sum",
"boost_mode": "replace",
"functions": functions_list
}
else:
attention_pictorial_id_list = [item["pictorial_id"] for item in attention_pictorial_list]
q["query"] = {
"function_score": query_function_score
}
q["_source"] = {
"includes": ["id", "edit_tag_list", "topic_id_list"]
}
q["sort"] = [
{
"_script": {
"type": "number",
"script": {
"lang": "expression",
"source": "_score+doc['reply_score']"
},
"order": "desc"
}
}
]
result_dict = ESPerform.get_search_results(es_cli_obj, "pictorial", q, offset, size)
if len(result_dict["hits"]) > 0:
for item in result_dict["hits"]:
pictorial_id = item["_source"]["id"]
pictorial_id_list.append(pictorial_id)
sorted_pictorial_ids_list = GroupUtils.get_pictorial_ids_by_aggs(attention_pictorial_id_list,
es_cli_obj)
return {"pictorial_ids_list": pictorial_id_list}
pictorial_recommend_ids_list = sorted_pictorial_ids_list
# if len(group_recommend_ids_list) < size and len(group_recommend_ids_list)<len(attention_group_list):
sorted_attention_pictorial_list = sorted(attention_pictorial_list,
key=lambda item: item["update_time_val"], reverse=True)
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(list(have_read_pictorial_id_list)))
return {"pictorial_recommend_ids": pictorial_recommend_ids_list[offset:(offset + size)]}
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"pictorial_ids_list": []}
return {"pictorial_recommend_ids": []}
@bind("physical/search/search_physical")
......
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