""" @author: luojunhui """ class SearchABTest(object): """ 搜索策略实验方案 """ ori_title = None article_summary = None article_keys = None trace_id = None def __init__(self, info, searchMethod): SearchABTest.set_class_properties(info, searchMethod) @classmethod def set_class_properties(cls, info, searchMethod): """ 初始化搜索策略实验类 :param searchMethod: :param info: kimi 挖掘的基本信息 :return: """ cls.ori_title = info["oriTitle"] cls.article_summary = info["kimiSummary"] cls.article_keys = info["kimiKeys"] cls.trace_id = info["traceId"] cls.searchMethod = searchMethod @classmethod async def base_line(cls): """ 兜底策略 """ result = await cls.searchMethod.search_v1( text=cls.article_keys[0], trace_id=cls.trace_id ) if result: return result else: sub_result = await cls.searchMethod.search_v1( text=cls.article_keys[1], trace_id=cls.trace_id) if sub_result: return sub_result else: return await cls.searchMethod.search_v1( text=cls.article_keys[2], trace_id=cls.trace_id ) @classmethod async def ab_0(cls): """ 默认原标题搜索 :return: """ search_result = await cls.searchMethod.search_v1( text=cls.ori_title, trace_id=cls.trace_id ) if search_result: return search_result else: return await cls.base_line() @classmethod async def ab_1(cls): """ 使用 content_summary搜索 :return: """ search_result = await cls.searchMethod.search_v1( text=cls.article_summary, trace_id=cls.trace_id ) if search_result: return search_result else: return await cls.ab_0() @classmethod async def ab_2(cls): """ 使用文本关键词搜索 :return: """ search_result = await cls.searchMethod.search_v1( text=cls.article_keys[0], trace_id=cls.trace_id ) if search_result: return search_result else: return await cls.base_line() @classmethod async def ab_3(cls): """ 使用文本关键词搜索 :return: """ search_result = await cls.searchMethod.search_v1( text=cls.article_keys[1], trace_id=cls.trace_id ) if search_result: return search_result else: return await cls.base_line() @classmethod async def ab_4(cls): """ 使用文本关键词搜索 :return: """ search_result = await cls.searchMethod.search_v1( text=cls.article_keys[2], trace_id=cls.trace_id ) if search_result: return search_result else: return await cls.base_line() @classmethod async def ab_5(cls): """ 增量搜索, 返回result_list :return: """ result_list = await cls.searchMethod.search_v2( text=cls.article_summary[:15], trace_id=cls.trace_id ) if len(result_list) > 3: return result_list else: result_list += await cls.searchMethod.search_v2( text=cls.ori_title[:15], trace_id=cls.trace_id ) if len(result_list) > 3: return result_list else: result_list += await cls.searchMethod.search_v2( text=cls.article_keys[0], trace_id=cls.trace_id ) if len(result_list) > 3: return result_list else: result_list += await cls.searchMethod.search_v2( text=cls.article_keys[1], trace_id=cls.trace_id ) if result_list: return result_list else: result_list += await cls.searchMethod.search_v2( text=cls.article_keys[2], trace_id=cls.trace_id ) return result_list