Commit 79ecc06d authored by 段英荣's avatar 段英荣

modify physical-search-topic

parent 779336c0
...@@ -10,7 +10,7 @@ from alpha_types.venus import TOPIC_SEARCH_SORT ...@@ -10,7 +10,7 @@ from alpha_types.venus import TOPIC_SEARCH_SORT
from libs.es import ESPerform from libs.es import ESPerform
from .common import TopicDocumentField from .common import TopicDocumentField
from search.utils.common import * from search.utils.common import *
from trans2es.models.pictorial import PictorialTopics
class TopicUtils(object): class TopicUtils(object):
...@@ -860,38 +860,41 @@ class TopicUtils(object): ...@@ -860,38 +860,41 @@ class TopicUtils(object):
@classmethod @classmethod
def list_topic_ids(cls, filters, nfilters, sorts_by, offset=0, size=10, index_name="topic", filter_online=True): def list_topic_ids(cls, filters, nfilters, sorts_by, offset=0, size=10, index_name="topic", filter_online=True):
try:
must = cls.process_filters(filters, filter_online=filter_online) must = cls.process_filters(filters, filter_online=filter_online)
q = { q = {
"query": { "query": {
"bool": { "bool": {
"must": must, "must": must,
"must_not": cls.process_nfilters(nfilters), "must_not": cls.process_nfilters(nfilters),
}
} }
} }
}
if sorts_by: if sorts_by:
sorts = cls.process_sort(sorts_by) sorts = cls.process_sort(sorts_by)
if sorts: if sorts:
q["sort"] = sorts q["sort"] = sorts
try:
result_dict = ESPerform.get_search_results( result_dict = ESPerform.get_search_results(
ESPerform.get_cli(), sub_index_name=index_name, ESPerform.get_cli(), sub_index_name=index_name,
query_body=q, offset=offset, size=size query_body=q, offset=offset, size=size
) )
return { if len(result_dict["hits"])>0:
"hits": result_dict["hits"], topic_id_list = [item["_source"]["id"] for item in result_dict["hits"]]
"total_count": result_dict["total_count"]
} return (topic_id_list,result_dict["total_count"])
elif offset==0 and "pictorial_id" in filters: # 防止帖子同步延迟,画报详情页为空
pictorial_id = int(filters["pictorial_id"])
topic_id_list = list(PictorialTopics.objects.filter(pictorial_id=pictorial_id,is_online=True,is_deleted=False).values_list("topic_id", flat=True)[offset:size])
return (topic_id_list,len(topic_id_list))
else:
return ([], 0)
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return { return ([],0)
"hits": [],
"total_count": 0
}
@classmethod @classmethod
def business_topic_ids(cls, filters, nfilters, sorts_by, offset=0, size=10, index_name="topic", filter_online=True): def business_topic_ids(cls, filters, nfilters, sorts_by, offset=0, size=10, index_name="topic", filter_online=True):
......
...@@ -398,13 +398,12 @@ def topic_search(filters, nfilters=None, sorts_by=None, offset=0, size=10): ...@@ -398,13 +398,12 @@ def topic_search(filters, nfilters=None, sorts_by=None, offset=0, size=10):
"""帖子搜索。""" """帖子搜索。"""
try: try:
result_list = TopicUtils.list_topic_ids(filters=filters, nfilters=nfilters, (topic_id_list,total_count) = TopicUtils.list_topic_ids(filters=filters, nfilters=nfilters,
sorts_by=sorts_by, offset=offset, size=size) sorts_by=sorts_by, offset=offset, size=size)
logging.info("get result_list:%s"%result_list)
topic_ids = [item["_source"]["id"] for item in result_list["hits"]]
return { return {
"topic_ids": topic_ids, "topic_ids": topic_id_list,
"total_count": result_list["total_count"] "total_count": total_count
} }
except: except:
logging.error("catch exception, err_msg:%s" % traceback.format_exc()) logging.error("catch exception, err_msg:%s" % traceback.format_exc())
......
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