Commit 08254bef authored by lixiaofang's avatar lixiaofang

榜单中的帖子排序

parent f7077cdb
...@@ -928,6 +928,35 @@ class TopicUtils(object): ...@@ -928,6 +928,35 @@ class TopicUtils(object):
"order": "desc" "order": "desc"
}, },
}) })
elif sort_by == TOPIC_SEARCH_SORT.REAL_VOTE_AEC:
sort_rule.append({
"related_billboard.real_vote_cnt": {
"order": "asc",
"nested_path": "related_billboard"
},
})
elif sort_by == TOPIC_SEARCH_SORT.REAL_VOTE_DESC:
sort_rule.append({
"related_billboard.real_vote_cnt": {
"order": "desc",
"nested_path": "related_billboard"
},
})
elif sort_by == TOPIC_SEARCH_SORT.VIRT_VOTE_AEC:
sort_rule.append({
"related_billboard.virt_vote_cnt": {
"order": "asc",
"nested_path": "related_billboard"
},
})
elif sort_by == TOPIC_SEARCH_SORT.VIRT_VOTE_DESC:
sort_rule.append({
"related_billboard.virt_vote_cnt": {
"order": "desc",
"nested_path": "related_billboard"
},
})
return sort_rule return sort_rule
...@@ -1072,6 +1101,26 @@ class TopicUtils(object): ...@@ -1072,6 +1101,26 @@ class TopicUtils(object):
} }
} }
}) })
# elif k == "pictorial_id":
# f.append({
# "nested": {
# "path": "related_billboard",
# "query": {
# "bool": {
# "must": [
# {
# "term": {
# "related_billboard.pictorial_id": v
# }
# }
# ]
# }
# }
# }
# })
else: else:
if isinstance(v, list): if isinstance(v, list):
......
...@@ -105,23 +105,23 @@ def pictorial_topic(topic_id=-1, offset=0, size=10): ...@@ -105,23 +105,23 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
q = {} q = {}
# 获取帖子从属的画报 # 获取帖子从属的画报
q["query"] = { q["query"] = {
"bool":{ "bool": {
"must":[ "must": [
{ {
"term": { "term": {
"id": topic_id "id": topic_id
} }
}, },
{ {
"term":{ "term": {
"is_online":True "is_online": True
} }
} }
], ],
"must_not":[ "must_not": [
{ {
"term":{ "term": {
"is_history":True "is_history": True
} }
} }
] ]
...@@ -237,6 +237,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10): ...@@ -237,6 +237,7 @@ def pictorial_topic(topic_id=-1, offset=0, size=10):
def pictorial_topic_sort(pictorial_id=-1, offset=0, size=10): def pictorial_topic_sort(pictorial_id=-1, offset=0, size=10):
""" """
:remark 画报排序 人气 部分 :remark 画报排序 人气 部分
人气按照票数从大到小排序,相同票数按照图片票数更新时间由旧到新排序
:param user_id: :param user_id:
:param sort_type: :param sort_type:
:param offset: :param offset:
...@@ -251,18 +252,39 @@ def pictorial_topic_sort(pictorial_id=-1, offset=0, size=10): ...@@ -251,18 +252,39 @@ def pictorial_topic_sort(pictorial_id=-1, offset=0, size=10):
"query": { "query": {
"bool": { "bool": {
"must": [ "must": [
{"term": {"pictorial_id": pictorial_id}},
{"term": {"is_online": True}}, {"term": {"is_online": True}},
{"term": {"is_deleted": False}}, {"term": {"is_deleted": False}},
{
"nested": {
"path": "related_billboard",
"query": {
"bool": {
"must": [
{
"term": {
"related_billboard.pictorial_id": pictorial_id
}
}
]
}
}
}
}
] ]
} }
}, },
"sort": [ "sort": [
{"total_vote_num": {"order": "desc"}}, {"related_billboard.total_vote_cnt": {
"order": "desc",
# "mode": "min",
"nested_path": "related_billboard"
}},
{"create_time": {"order": "desc"}} {"create_time": {"order": "desc"}}
] ]
} }
logging.info("get qqqqqq:%s" % q)
pict_pictorial_ids_list = [] pict_pictorial_ids_list = []
# 获取es链接对象 # 获取es链接对象
es_cli_obj = ESPerform.get_cli() es_cli_obj = ESPerform.get_cli()
......
...@@ -8,18 +8,18 @@ ...@@ -8,18 +8,18 @@
"vote_num":{"type":"long"}, "vote_num":{"type":"long"},
"total_vote_num":{"type":"long"}, "total_vote_num":{"type":"long"},
"reply_num":{"type":"long"}, "reply_num":{"type":"long"},
"name":{"type":"text","analyzer":"gm_default_index","search_analyzer":"gm_default_index"}, "name":{"type":"text","analyzer":"keyword","search_analyzer":"keyword"},
"description":{"type":"text","analyzer":"gm_default_index","search_analyzer":"gm_default_index"}, "description":{"type":"text","analyzer":"keyword","search_analyzer":"keyword"},
"content":{"type":"text","analyzer":"gm_default_index","search_analyzer":"gm_default_index"}, "content":{"type":"text","analyzer":"keyword","search_analyzer":"keyword"},
"content_level":{"type":"text"}, "content_level":{"type":"text"},
"user_id":{"type":"long"}, "user_id":{"type":"long"},
"user_nick_name":{"type":"text","analyzer":"gm_default_index","search_analyzer":"gm_default_index"},//帖子用户名 "user_nick_name":{"type":"text","analyzer":"keyword","search_analyzer":"keyword"},//帖子用户名
"user_nick_name_pre": {"type":"text","analyzer":"keyword"}, //不切词的用户名 "user_nick_name_pre": {"type":"text","analyzer":"keyword"}, //不切词的用户名
"group_id":{"type":"long"}, //所在组ID "group_id":{"type":"long"}, //所在组ID
"tag_list":{"type":"long"},//标签属性 "tag_list":{"type":"long"},//标签属性
"useful_tag_list":{"type":"long"},//有用标签属性 "useful_tag_list":{"type":"long"},//有用标签属性
"edit_tag_list":{"type":"long"},//编辑标签 "edit_tag_list":{"type":"long"},//编辑标签
"tag_name_list":{"type":"text","analyzer":"gm_default_index","search_analyzer":"gm_default_index"}, "tag_name_list":{"type":"text","analyzer":"keyword","search_analyzer":"keyword"},
"share_num":{"type":"long"}, "share_num":{"type":"long"},
"pick_id_list":{"type":"long"}, "pick_id_list":{"type":"long"},
"offline_score":{"type":"double"},//离线算分 "offline_score":{"type":"double"},//离线算分
...@@ -50,11 +50,20 @@ ...@@ -50,11 +50,20 @@
"pictorial_id":{"type": "long"}, //所在组ID "pictorial_id":{"type": "long"}, //所在组ID
"pictorial_name":{ // 所在组名称 "pictorial_name":{ // 所在组名称
"type": "text", "type": "text",
"analyzer": "gm_default_index", "analyzer": "keyword",
"search_analyzer": "gm_default_index" "search_analyzer": "keyword"
}, },
"is_excellent":{"type": "long"}, "is_excellent":{"type": "long"},
"is_operation_home_recommend": {"type": "boolean"}, //是否首页运营推荐 "is_operation_home_recommend": {"type": "boolean"}, //是否首页运营推荐
"is_history": {"type": "boolean"} //是否历史数据 "is_history": {"type": "boolean"}, //是否历史数据
"related_billboard":{
"type":"nested",
"properties":{
"pictorial_id":{"type":"long"},
"real_vote_cnt":{"type":"long"},
"virt_vote_cnt":{"type":"long"},
"total_vote_cnt":{"type":"long"}
}
}
} }
} }
This diff is collapsed.
...@@ -9,12 +9,13 @@ import time ...@@ -9,12 +9,13 @@ import time
import re import re
import datetime import datetime
from trans2es.models.user import User from trans2es.models.user import User
from trans2es.models.topic import ExcellentTopic,TopicHomeRecommend from trans2es.models.topic import ExcellentTopic, TopicHomeRecommend
class TopicTransfer(object): class TopicTransfer(object):
@classmethod @classmethod
def get_topic_data(cls,instance,is_excellect=False): def get_topic_data(cls, instance, is_excellect=False):
try: try:
res = dict() res = dict()
...@@ -47,25 +48,24 @@ class TopicTransfer(object): ...@@ -47,25 +48,24 @@ class TopicTransfer(object):
begin = time.time() begin = time.time()
res["pick_id_list"] = instance.get_pick_id_info() res["pick_id_list"] = instance.get_pick_id_info()
end = time.time() end = time.time()
time0 = (end-begin) time0 = (end - begin)
begin = time.time() begin = time.time()
(topic_tag_id_list, edit_tag_id_list) = instance.get_topic_tag_id_list() (topic_tag_id_list, edit_tag_id_list) = instance.get_topic_tag_id_list()
res["tag_list"] = topic_tag_id_list res["tag_list"] = topic_tag_id_list
res["edit_tag_list"] = edit_tag_id_list res["edit_tag_list"] = edit_tag_id_list
end = time.time() end = time.time()
time1 = (end-begin) time1 = (end - begin)
begin = time.time() begin = time.time()
res["tag_name_list"] = instance.get_tag_name_list(res["tag_list"]) res["tag_name_list"] = instance.get_tag_name_list(res["tag_list"])
end = time.time() end = time.time()
time2 = (end-begin) time2 = (end - begin)
begin = time.time() begin = time.time()
res["offline_score"] = instance.get_topic_offline_score() res["offline_score"] = instance.get_topic_offline_score()
end = time.time() end = time.time()
time3 = (end-begin) time3 = (end - begin)
begin = time.time() begin = time.time()
res["manual_score"] = instance.drop_score res["manual_score"] = instance.drop_score
...@@ -73,10 +73,10 @@ class TopicTransfer(object): ...@@ -73,10 +73,10 @@ class TopicTransfer(object):
res["has_video"] = instance.has_video res["has_video"] = instance.has_video
res["language_type"] = instance.language_type res["language_type"] = instance.language_type
end = time.time() end = time.time()
time4 = (end-begin) time4 = (end - begin)
# begin = time.time() # begin = time.time()
topic_useful_tag_id_list= instance.get_topic_useful_tag_id_list() topic_useful_tag_id_list = instance.get_topic_useful_tag_id_list()
res["useful_tag_list"] = topic_useful_tag_id_list res["useful_tag_list"] = topic_useful_tag_id_list
# end = time.time() # end = time.time()
# time5 = (end - begin) # time5 = (end - begin)
...@@ -99,7 +99,7 @@ class TopicTransfer(object): ...@@ -99,7 +99,7 @@ class TopicTransfer(object):
res["virtual_content_level"] = instance.virtual_content_level res["virtual_content_level"] = instance.virtual_content_level
res["like_num_crawl"] = instance.like_num_crawl res["like_num_crawl"] = instance.like_num_crawl
res["comment_num_crawl"]= instance.comment_num_crawl res["comment_num_crawl"] = instance.comment_num_crawl
res["is_crawl"] = instance.is_crawl res["is_crawl"] = instance.is_crawl
res["platform"] = instance.platform res["platform"] = instance.platform
...@@ -113,7 +113,6 @@ class TopicTransfer(object): ...@@ -113,7 +113,6 @@ class TopicTransfer(object):
res["create_time"] = tzlc_create_time res["create_time"] = tzlc_create_time
res["create_time_val"] = int(time.mktime(tzlc_create_time.timetuple())) res["create_time_val"] = int(time.mktime(tzlc_create_time.timetuple()))
update_time = instance.update_time update_time = instance.update_time
tzlc_update_time = tzlc(update_time) tzlc_update_time = tzlc(update_time)
res["update_time"] = tzlc_update_time res["update_time"] = tzlc_update_time
...@@ -137,7 +136,12 @@ class TopicTransfer(object): ...@@ -137,7 +136,12 @@ class TopicTransfer(object):
if operation_home_recommend and operation_home_recommend.is_online and not operation_home_recommend.is_deleted: if operation_home_recommend and operation_home_recommend.is_online and not operation_home_recommend.is_deleted:
res["is_operation_home_recommend"] = True res["is_operation_home_recommend"] = True
logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % (time0,time1,time2,time3,time4)) logging.info("test topic transfer time cost,time0:%d,time1:%d,time2:%d,time3:%d,time4:%d" % (
time0, time1, time2, time3, time4))
# 榜单关联的投票
res["related_billboard"] = instance.get_related_billboard()
return res return res
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