diff --git a/search/utils/topic.py b/search/utils/topic.py index 31ce55465ce874d737efa3821ef47395b028c6a7..c2224439e748c0877a2640362fe02ecdbe6ca5a1 100644 --- a/search/utils/topic.py +++ b/search/utils/topic.py @@ -90,7 +90,7 @@ class TopicUtils(object): return [] @classmethod - def get_recommend_topic_ids(cls,user_id,offset,size,query=None,query_type=TopicPageType.FIND_PAGE,filter_topic_id_list=[]): + def get_recommend_topic_ids(cls,user_id,offset,size,query=None,query_type=TopicPageType.FIND_PAGE,filter_topic_id_list=[],must_topic_id_list=[]): """ :éœ€å¢žåŠ æ‰“æ•£é€»è¾‘ :remark:获å–首页推è帖å列表 @@ -200,6 +200,12 @@ class TopicUtils(object): "boost_mode": "sum", "functions": functions_list } + if len(must_topic_id_list) > 0: + query_function_score["query"]["bool"]["must"] = { + "terms":{ + "id": must_topic_id_list + } + } if query_type==TopicPageType.FIND_PAGE and len(filter_topic_id_list)>0: query_function_score["query"]["bool"]["must_not"] = { "terms":{ diff --git a/search/views/topic.py b/search/views/topic.py index e3aef4773bf61cd8ed7e5a946ac23ce47b7829fc..6e5df122462df59f98abe3d0e5da27e9a52d002c 100644 --- a/search/views/topic.py +++ b/search/views/topic.py @@ -254,3 +254,21 @@ def query_topic_by_tag_aggregation(user_id,tag_id, offset, size): return {"recommend_topic_id": []} +@bind("physical/search/query_topic_by_user_similarity") +def query_topic_by_user_similarity(topic_similarity_score_dict, offset=0, size=10): + """ + :remark æŒ‰å¸–åæ‰€å±žç”¨æˆ·ç›¸ä¼¼åº¦å¬å›žå¸–å + :param tag_id: + :param offset: + :param size: + :return: + """ + try: + must_topic_id_list = topic_similarity_score_dict.keys() + topic_id_dict = TopicUtils.get_recommend_topic_ids(user_id=-1, offset=offset, size=size,must_topic_id_list=must_topic_id_list) + + recommend_topic_ids = topic_id_dict.keys() + return {"recommend_topic_ids":recommend_topic_ids} + except: + logging.error("catch exception,err_msg:%s" % traceback.format_exc()) + return {"recommend_topic_id": []}