Commit 6c69560b authored by lixiaofang's avatar lixiaofang

change pictorial sort

parent 77e1e39b
...@@ -9,7 +9,7 @@ from libs.es import ESPerform ...@@ -9,7 +9,7 @@ from libs.es import ESPerform
class GroupUtils(object): class GroupUtils(object):
@classmethod @classmethod
def get_group_query_result(cls,query,offset,size): def get_group_query_result(cls, query, offset, size):
try: try:
q = dict() q = dict()
...@@ -38,49 +38,84 @@ class GroupUtils(object): ...@@ -38,49 +38,84 @@ class GroupUtils(object):
} }
} }
q["_source"] = { q["_source"] = {
"includes":["id"] "includes": ["id"]
} }
return ESPerform.get_search_results(ESPerform.get_cli(), "group", q, offset, size) return ESPerform.get_search_results(ESPerform.get_cli(), "group", q, offset, size)
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return {"total_count":0, "hits":[]} return {"total_count": 0, "hits": []}
@classmethod @classmethod
def get_hot_pictorial_recommend_result_list(cls,offset,size,es_cli_obj=None): def get_hot_pictorial_recommend_result_list(cls, offset, size, es_cli_obj=None):
try: try:
if not es_cli_obj: if not es_cli_obj:
es_cli_obj = ESPerform.get_cli() es_cli_obj = ESPerform.get_cli()
q = dict() q = dict()
q["query"] = { q["query"] = {
"bool":{ "bool": {
"must":[ "must": [
{"term": {"is_online": True}}, {"term": {"is_online": True}},
{"term":{"is_deleted": False}} {"term": {"is_deleted": False}}
] ]
} }
} }
q["sort"] = [ q["sort"] = [
{"high_quality_topic_num":{"order":"desc"}} {"high_quality_topic_num": {"order": "desc"}}
] ]
q["_source"] = { q["_source"] = {
"includes":["id"] "includes": ["id"]
} }
result_dict = ESPerform.get_search_results(es_cli_obj,"pictorial",q,offset,size) result_dict = ESPerform.get_search_results(es_cli_obj, "pictorial", q, offset, size)
pictorial_ids_list = [] pictorial_ids_list = []
if len(result_dict["hits"]) > 0: if len(result_dict["hits"]) > 0:
pictorial_ids_list = [item["_source"]["id"] for item in result_dict["hits"]] pictorial_ids_list = [item["_source"]["id"] for item in result_dict["hits"]]
return pictorial_ids_list pictorial_del_ids_list = []
if len(pictorial_ids_list) > 0:
for id in pictorial_ids_list:
q ={
"query": {
"bool": {
"must": [{
"term": {
"pictorial_id": id
}
}, {
"term": {
"content_level": [3, 4, 5]
}
}, {
"term": {
"is_online": True
}
}]
}
}
}
topic_ids_list = []
result_dict = ESPerform.get_search_results(es_cli_obj, "topic", q, offset, size)
if len(result_dict["hits"]) > 0:
topic_ids_list = [item["_source"]["id"] for item in result_dict["hits"]]
if len(topic_ids_list) > 5:
pictorial_del_ids_list.append(id)
return pictorial_del_ids_list
else:
return []
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return [] return []
@classmethod @classmethod
def get_user_attention_pictorial_list(cls,user_id,offset=0,size=10,es_cli_obj=None): def get_user_attention_pictorial_list(cls, user_id, offset=0, size=10, es_cli_obj=None):
""" """
:remark: 获取用户关注小组列表 :remark: 获取用户关注小组列表
:return: :return:
...@@ -91,29 +126,66 @@ class GroupUtils(object): ...@@ -91,29 +126,66 @@ class GroupUtils(object):
q = dict() q = dict()
q["query"] = { q["query"] = {
"bool":{ "bool": {
"must":[ "must": [
{"term":{"is_online": True}}, {"term": {"is_online": True}},
{"term":{"user_id":user_id}}, {"term": {"user_id": user_id}},
{"term":{"is_deleted":False}} {"term": {"is_deleted": False}}
] ]
} }
} }
q["_source"] = { q["_source"] = {
"includes":["attention_pictorial_id_list"] "includes": ["attention_pictorial_id_list"]
} }
result_dict = ESPerform.get_search_results(es_cli_obj,"user",q,offset,size) result_dict = ESPerform.get_search_results(es_cli_obj, "user", q, offset, size)
if len(result_dict["hits"])>0: pictorial_ids_list = []
return result_dict["hits"][0]["_source"]["attention_pictorial_id_list"] if len(result_dict["hits"]) > 0:
pictorial_ids_list = result_dict["hits"][0]["_source"]["attention_pictorial_id_list"]
pictorial_del_ids_list = []
if len(pictorial_ids_list) > 0:
for id in pictorial_ids_list:
q = {
"query": {
"bool": {
"must": [{
"term": {
"pictorial_id": id
}
}, {
"term": {
"content_level": [3, 4, 5]
}
}, {
"term": {
"is_online": True
}
}]
}
}
}
topic_ids_list = []
result_dict = ESPerform.get_search_results(es_cli_obj, "topic", q, offset, size)
if len(result_dict["hits"]) > 0:
topic_ids_list = [item["_source"]["id"] for item in result_dict["hits"]]
if len(topic_ids_list) > 5:
pictorial_del_ids_list.append(id)
return pictorial_del_ids_list
else: else:
return [] return []
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return [] return []
@classmethod @classmethod
def get_pictorial_ids_by_aggs(cls,pictorial_ids_list,es_cli_obj=None): def get_pictorial_ids_by_aggs(cls, pictorial_ids_list, es_cli_obj=None):
""" """
:remark:聚合查询获取小组列表 :remark:聚合查询获取小组列表
:param group_id_list: :param group_id_list:
...@@ -124,31 +196,31 @@ class GroupUtils(object): ...@@ -124,31 +196,31 @@ class GroupUtils(object):
es_cli_obj = ESPerform.get_cli() es_cli_obj = ESPerform.get_cli()
q = dict() q = dict()
q["size"]=0 q["size"] = 0
q["query"] = { q["query"] = {
"terms":{ "terms": {
"pictorial_id":pictorial_ids_list "pictorial_id": pictorial_ids_list
} }
} }
q["aggs"] = { q["aggs"] = {
"pictorial_ids":{ "pictorial_ids": {
"terms":{ "terms": {
"field":"pictorial_id" "field": "pictorial_id"
}, },
"aggs":{ "aggs": {
"max_date":{ "max_date": {
"max":{ "max": {
"field":"update_time_val" "field": "update_time_val"
} }
} }
} }
} }
} }
result_dict = ESPerform.get_search_results(es_cli_obj,"topic",q,aggregations_query=True) result_dict = ESPerform.get_search_results(es_cli_obj, "topic", q, aggregations_query=True)
buckets_list = result_dict["aggregations"]["pictorial_ids"]["buckets"] buckets_list = result_dict["aggregations"]["pictorial_ids"]["buckets"]
sorted_buckets_list = sorted(buckets_list,key=lambda item:item["max_date"]["value"],reverse=True) sorted_buckets_list = sorted(buckets_list, key=lambda item: item["max_date"]["value"], reverse=True)
sorted_pictorial_id_list = [item["key"] for item in sorted_buckets_list] sorted_pictorial_id_list = [item["key"] for item in sorted_buckets_list]
return sorted_pictorial_id_list return sorted_pictorial_id_list
......
...@@ -61,6 +61,7 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0, ...@@ -61,6 +61,7 @@ def pictorial_sort(user_id=-1, sort_type=GroupSortTypes.HOT_RECOMMEND, offset=0,
es_cli_obj=es_cli_obj) es_cli_obj=es_cli_obj)
if len(attention_pictorial_list) == 0: if len(attention_pictorial_list) == 0:
return {"pictorial_recommend_ids": []} return {"pictorial_recommend_ids": []}
else: else:
attention_pictorial_id_list = [item["pictorial_id"] for item in attention_pictorial_list] 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, sorted_pictorial_ids_list = GroupUtils.get_pictorial_ids_by_aggs(attention_pictorial_id_list,
......
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