|
@@ -4,10 +4,11 @@
|
|
|
"""
|
|
|
|
|
|
from applications.search import *
|
|
|
-from applications.static.config import gh_id_dict, ab_test_config
|
|
|
+from applications.static.config import gh_id_dict
|
|
|
from applications.functions.log import logging
|
|
|
from applications.functions.video_item import VideoProducer
|
|
|
from applications.functions.async_etl import AsyncETL
|
|
|
+from applications.functions.common import MySQLServer
|
|
|
|
|
|
|
|
|
class SearchABTest(object):
|
|
@@ -39,176 +40,103 @@ class SearchABTest(object):
|
|
|
cls.gh_id = gh_id
|
|
|
|
|
|
@classmethod
|
|
|
- def dd(cls):
|
|
|
+ async def base_line(cls):
|
|
|
"""
|
|
|
- 兜底
|
|
|
+ 兜底策略
|
|
|
+ """
|
|
|
+ return await SearchMethod().search_v0(
|
|
|
+ text=cls.article_keys[0],
|
|
|
+ trace_id=cls.trace_id
|
|
|
+ )
|
|
|
+
|
|
|
+ @classmethod
|
|
|
+ async def ab_0(cls):
|
|
|
+ """
|
|
|
+ 默认原标题搜索
|
|
|
:return:
|
|
|
"""
|
|
|
- wx_result_ = wx_search(keys=cls.article_keys[0])
|
|
|
- if wx_result_:
|
|
|
- logging(
|
|
|
- code="7011",
|
|
|
- info="微信兜底搜索成功",
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- return {"platform": "wx_search", "result": wx_result_[0]}
|
|
|
+ search_result = await SearchMethod().search_v0(
|
|
|
+ text=cls.ori_title,
|
|
|
+ trace_id=cls.trace_id
|
|
|
+ )
|
|
|
+ if search_result:
|
|
|
+ return search_result
|
|
|
else:
|
|
|
- baidu_result_ = hksp_search(key=cls.article_keys[0])
|
|
|
- if baidu_result_:
|
|
|
- logging(
|
|
|
- code="7011",
|
|
|
- info="百度兜底搜索成功",
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- return {"platform": "baidu_search", "result": baidu_result_[0]}
|
|
|
- else:
|
|
|
- return None
|
|
|
+ return await cls.base_line()
|
|
|
|
|
|
@classmethod
|
|
|
- def ab_0(cls):
|
|
|
+ async def ab_1(cls):
|
|
|
"""
|
|
|
- 默认搜索逻辑
|
|
|
+ 使用 content_summary搜索
|
|
|
:return:
|
|
|
"""
|
|
|
- wx_result = wx_search(keys=cls.ori_title)
|
|
|
- if wx_result:
|
|
|
- return {"platform": "wx_search", "result": wx_result[0]}
|
|
|
+ search_result = await SearchMethod().search_v0(
|
|
|
+ text=cls.article_summary,
|
|
|
+ trace_id=cls.trace_id
|
|
|
+ )
|
|
|
+ if search_result:
|
|
|
+ return search_result
|
|
|
else:
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过微信搜索失败---{}".format(cls.ori_title),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- # 微信搜不到的话,采用好看视频搜索
|
|
|
- baidu_result = hksp_search(key=cls.ori_title)
|
|
|
- if baidu_result:
|
|
|
- return {"platform": "baidu_search", "result": baidu_result[0]}
|
|
|
- else:
|
|
|
- # 若好看视频未搜到,则采用西瓜搜索
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过baidu搜索失败---{}".format(cls.ori_title),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- xigua_result = xigua_search(keyword=cls.ori_title)
|
|
|
- if xigua_result:
|
|
|
- return {"platform": "xg_search", "result": xigua_result[0]}
|
|
|
- else:
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过西瓜搜索失败---{}, 启用兜底方式".format(cls.ori_title),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- return cls.dd()
|
|
|
+ return await cls.base_line()
|
|
|
|
|
|
@classmethod
|
|
|
- def ab_1(cls):
|
|
|
+ async def ab_2(cls):
|
|
|
"""
|
|
|
+ 使用文本关键词搜索
|
|
|
:return:
|
|
|
"""
|
|
|
- wx_result = wx_search(keys=cls.article_summary)
|
|
|
- if wx_result:
|
|
|
- return {"platform": "wx_search", "result": wx_result[0]}
|
|
|
+ search_result = await SearchMethod().search_v0(
|
|
|
+ text=",".join(cls.article_keys),
|
|
|
+ trace_id=cls.trace_id
|
|
|
+ )
|
|
|
+ if search_result:
|
|
|
+ return search_result
|
|
|
else:
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过微信搜索失败---{}".format(cls.article_summary),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- # 微信搜不到的话,采用好看视频搜索
|
|
|
- baidu_result = hksp_search(key=cls.article_summary)
|
|
|
- if baidu_result:
|
|
|
- return {"platform": "baidu_search", "result": baidu_result[0]}
|
|
|
- else:
|
|
|
- # 若好看视频未搜到,则采用西瓜搜索
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过baidu搜索失败---{}".format(cls.article_summary),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- xigua_result = xigua_search(keyword=cls.article_summary)
|
|
|
- if xigua_result:
|
|
|
- return {"platform": "xg_search", "result": xigua_result[0]}
|
|
|
- else:
|
|
|
- logging(
|
|
|
- code="7001",
|
|
|
- info="通过西瓜搜索失败---{},启用兜底方式".format(cls.article_summary),
|
|
|
- trace_id=cls.trace_id,
|
|
|
- )
|
|
|
- return cls.dd()
|
|
|
+ return await cls.base_line()
|
|
|
+
|
|
|
+
|
|
|
+class SearchMethod(object):
|
|
|
+ """
|
|
|
+ 搜索召回模式
|
|
|
+ """
|
|
|
+ s_words = MySQLServer().select_sensitive_words()
|
|
|
|
|
|
@classmethod
|
|
|
- def ab_2(cls):
|
|
|
+ async def search_v0(cls, text, trace_id):
|
|
|
"""
|
|
|
- ori_title + wx
|
|
|
+ 搜索顺序-wx --> baidu --> xigua
|
|
|
:return:
|
|
|
"""
|
|
|
- wx_result = wx_search(keys=",".join(cls.article_keys))
|
|
|
+ wx_result = wx_search(keys=text, sensitive_words=cls.s_words)
|
|
|
if wx_result:
|
|
|
return {"platform": "wx_search", "result": wx_result[0]}
|
|
|
else:
|
|
|
logging(
|
|
|
code="7001",
|
|
|
- info="通过微信搜索失败---{}".format(",".join(cls.article_keys)),
|
|
|
- trace_id=cls.trace_id,
|
|
|
+ info="通过微信搜索失败---{}".format(text),
|
|
|
+ trace_id=trace_id,
|
|
|
)
|
|
|
# 微信搜不到的话,采用好看视频搜索
|
|
|
- baidu_result = hksp_search(key=",".join(cls.article_keys))
|
|
|
+ baidu_result = hksp_search(key=text, sensitive_words=cls.s_words)
|
|
|
if baidu_result:
|
|
|
return {"platform": "baidu_search", "result": baidu_result[0]}
|
|
|
else:
|
|
|
# 若好看视频未搜到,则采用西瓜搜索
|
|
|
logging(
|
|
|
code="7001",
|
|
|
- info="通过baidu搜索失败---{}".format(",".join(cls.article_keys)),
|
|
|
- trace_id=cls.trace_id,
|
|
|
+ info="通过baidu搜索失败---{}".format(text),
|
|
|
+ trace_id=trace_id,
|
|
|
)
|
|
|
- xigua_result = xigua_search(keyword=",".join(cls.article_keys))
|
|
|
+ xigua_result = xigua_search(keyword=text, sensitive_words=cls.s_words)
|
|
|
if xigua_result:
|
|
|
return {"platform": "xg_search", "result": xigua_result[0]}
|
|
|
else:
|
|
|
logging(
|
|
|
code="7001",
|
|
|
- info="通过西瓜搜索失败---{},启用兜底".format(",".join(cls.article_keys)),
|
|
|
- trace_id=cls.trace_id,
|
|
|
+ info="通过西瓜搜索失败---{}, 启用兜底方式".format(text),
|
|
|
+ trace_id=trace_id,
|
|
|
)
|
|
|
- return cls.dd()
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def ab_3(cls):
|
|
|
- """
|
|
|
- article_summary + baidu
|
|
|
- :return:
|
|
|
- """
|
|
|
- result = hksp_search(key=cls.article_summary)
|
|
|
- return {"platform": "baidu_search", "result": result[0] if result else []}
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def ab_4(cls):
|
|
|
- """
|
|
|
- article_summary + weixin
|
|
|
- :return:
|
|
|
- """
|
|
|
- result = wx_search(keys=cls.article_summary)
|
|
|
- return {"platform": "wx_search", "result": result[0] if result else []}
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def ab_5(cls):
|
|
|
- """
|
|
|
- article_keys + weixin
|
|
|
- :return:
|
|
|
- """
|
|
|
- result = wx_search(keys=",".join(cls.article_keys))
|
|
|
- return {"platform": "wx_search", "result": result[0] if result else []}
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def ab_6(cls):
|
|
|
- """
|
|
|
- article_keys + baidu
|
|
|
- :return:
|
|
|
- """
|
|
|
- result = hksp_search(key=",".join(cls.article_keys))
|
|
|
- return {"platform": "baidu_search", "result": result[0] if result else []}
|
|
|
+ return None
|
|
|
|
|
|
|
|
|
async def video_sender(video_obj, user, trace_id, platform):
|
|
@@ -265,26 +193,26 @@ async def search_videos(kimi_info, trace_id, gh_id, mysql_client):
|
|
|
"""
|
|
|
kimi_info["trace_id"] = trace_id
|
|
|
SearchAB = SearchABTest(info=kimi_info, gh_id=gh_id)
|
|
|
- if ab_test_config.get(gh_id):
|
|
|
- test_id = ab_test_config[gh_id]
|
|
|
- if test_id == 0:
|
|
|
- recall_obj = SearchAB.ab_0()
|
|
|
- elif test_id == 1:
|
|
|
- recall_obj = SearchAB.ab_1()
|
|
|
- elif test_id == 2:
|
|
|
- recall_obj = SearchAB.ab_2()
|
|
|
- # elif test_id == 3:
|
|
|
- # recall_obj = SearchAB.ab_3()
|
|
|
- # elif test_id == 4:
|
|
|
- # recall_obj = SearchAB.ab_4()
|
|
|
- # elif test_id == 5:
|
|
|
- # recall_obj = SearchAB.ab_5()
|
|
|
- # elif test_id == 6:
|
|
|
- # recall_obj = SearchAB.ab_6()
|
|
|
- else:
|
|
|
- recall_obj = {}
|
|
|
- else:
|
|
|
- recall_obj = SearchAB.ab_0()
|
|
|
+ # if ab_test_config.get(gh_id):
|
|
|
+ # test_id = ab_test_config[gh_id]
|
|
|
+ # if test_id == 0:
|
|
|
+ # recall_obj = SearchAB.ab_0()
|
|
|
+ # elif test_id == 1:
|
|
|
+ # recall_obj = SearchAB.ab_1()
|
|
|
+ # elif test_id == 2:
|
|
|
+ # recall_obj = SearchAB.ab_2()
|
|
|
+ # # elif test_id == 3:
|
|
|
+ # # recall_obj = SearchAB.ab_3()
|
|
|
+ # # elif test_id == 4:
|
|
|
+ # # recall_obj = SearchAB.ab_4()
|
|
|
+ # # elif test_id == 5:
|
|
|
+ # # recall_obj = SearchAB.ab_5()
|
|
|
+ # # elif test_id == 6:
|
|
|
+ # # recall_obj = SearchAB.ab_6()
|
|
|
+ # else:
|
|
|
+ # recall_obj = {}
|
|
|
+ # else:
|
|
|
+ recall_obj = await SearchAB.ab_1()
|
|
|
if recall_obj:
|
|
|
platform = recall_obj["platform"]
|
|
|
recall_video = recall_obj["result"]
|