""" @author: luojunhui """ class SearchABTest(object): """ 搜索策略实验方案 """ ori_title = None article_summary = None article_keys = None trace_id = None def __init__(self, info, searchMethod): self.ori_title = info["ori_title"] self.article_summary = info["kimi_summary"] self.article_keys = info["kimi_keys"] self.trace_id = info["trace_id"] self.search_method = searchMethod async def base_search(self): """ 兜底策略 """ result = await self.search_method.search_v1( text=self.article_keys[0], trace_id=self.trace_id ) if result: return result else: sub_result = await self.search_method.search_v1( text=self.article_keys[1], trace_id=self.trace_id ) if sub_result: return sub_result else: return await self.search_method.search_v1( text=self.article_keys[2], trace_id=self.trace_id ) async def ab_0(self): """ 默认原标题搜索 :return: """ search_result = await self.search_method.search_v1( text=self.ori_title, trace_id=self.trace_id ) if search_result: return search_result else: return await self.base_search() async def ab_1(self): """ 使用 content_summary搜索 :return: """ search_result = await self.search_method.search_v1( text=self.article_summary, trace_id=self.trace_id ) if search_result: return search_result else: return await self.ab_0() async def ab_2(self): """ 使用文本关键词搜索 :return: """ search_result = await self.search_method.search_v1( text=self.article_keys[0], trace_id=self.trace_id ) if search_result: return search_result else: return await self.base_search() async def ab_3(self): """ 使用文本关键词搜索 :return: """ search_result = await self.search_method.search_v1( text=self.article_keys[1], trace_id=self.trace_id ) if search_result: return search_result else: return await self.base_search() async def ab_4(self): """ 使用文本关键词搜索 :return: """ search_result = await self.search_method.search_v1( text=self.article_keys[2], trace_id=self.trace_id ) if search_result: return search_result else: return await self.base_search() async def ab_5(self): """ 增量搜索, 返回result_list :return: """ result_list = await self.search_method.search_v2( text=self.article_summary[:15], trace_id=self.trace_id ) if len(result_list) > 5: return result_list else: result_list += await self.search_method.search_v2( text=self.ori_title[:15], trace_id=self.trace_id ) if len(result_list) > 3: return result_list else: result_list += await self.search_method.search_v2( text=self.article_keys[0], trace_id=self.trace_id ) if len(result_list) > 3: return result_list else: result_list += await self.search_method.search_v2( text=self.article_keys[1], trace_id=self.trace_id ) if result_list: return result_list else: result_list += await self.search_method.search_v2( text=self.article_keys[2], trace_id=self.trace_id ) return result_list async def ab_6(self): """ 依次搜索 """ search_result_by_summary = await self.search_method.search_v2( text=self.article_summary[:15], trace_id=self.trace_id ) search_result_by_ori_title = await self.search_method.search_v2( text=self.ori_title[:15], trace_id=self.trace_id ) search_result_by_article_keys = await self.search_method.search_v2( text=",".join(self.article_keys), trace_id=self.trace_id ) return search_result_by_summary + search_result_by_ori_title + search_result_by_article_keys