spiderAB.py 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169
  1. """
  2. @author: luojunhui
  3. """
  4. class SearchABTest(object):
  5. """
  6. 搜索策略实验方案
  7. """
  8. ori_title = None
  9. article_summary = None
  10. article_keys = None
  11. trace_id = None
  12. def __init__(self, info, searchMethod):
  13. SearchABTest.set_class_properties(info, searchMethod)
  14. @classmethod
  15. def set_class_properties(cls, info, searchMethod):
  16. """
  17. 初始化搜索策略实验类
  18. :param searchMethod:
  19. :param info: kimi 挖掘的基本信息
  20. :return:
  21. """
  22. cls.ori_title = info["oriTitle"]
  23. cls.article_summary = info["kimiSummary"]
  24. cls.article_keys = info["kimiKeys"]
  25. cls.trace_id = info["traceId"]
  26. cls.searchMethod = searchMethod
  27. @classmethod
  28. async def base_line(cls):
  29. """
  30. 兜底策略
  31. """
  32. result = await cls.searchMethod.search_v1(
  33. text=cls.article_keys[0],
  34. trace_id=cls.trace_id
  35. )
  36. if result:
  37. return result
  38. else:
  39. sub_result = await cls.searchMethod.search_v1(
  40. text=cls.article_keys[1],
  41. trace_id=cls.trace_id)
  42. if sub_result:
  43. return sub_result
  44. else:
  45. return await cls.searchMethod.search_v1(
  46. text=cls.article_keys[2],
  47. trace_id=cls.trace_id
  48. )
  49. @classmethod
  50. async def ab_0(cls):
  51. """
  52. 默认原标题搜索
  53. :return:
  54. """
  55. search_result = await cls.searchMethod.search_v1(
  56. text=cls.ori_title,
  57. trace_id=cls.trace_id
  58. )
  59. if search_result:
  60. return search_result
  61. else:
  62. return await cls.base_line()
  63. @classmethod
  64. async def ab_1(cls):
  65. """
  66. 使用 content_summary搜索
  67. :return:
  68. """
  69. search_result = await cls.searchMethod.search_v1(
  70. text=cls.article_summary,
  71. trace_id=cls.trace_id
  72. )
  73. if search_result:
  74. return search_result
  75. else:
  76. return await cls.ab_0()
  77. @classmethod
  78. async def ab_2(cls):
  79. """
  80. 使用文本关键词搜索
  81. :return:
  82. """
  83. search_result = await cls.searchMethod.search_v1(
  84. text=cls.article_keys[0],
  85. trace_id=cls.trace_id
  86. )
  87. if search_result:
  88. return search_result
  89. else:
  90. return await cls.base_line()
  91. @classmethod
  92. async def ab_3(cls):
  93. """
  94. 使用文本关键词搜索
  95. :return:
  96. """
  97. search_result = await cls.searchMethod.search_v1(
  98. text=cls.article_keys[1],
  99. trace_id=cls.trace_id
  100. )
  101. if search_result:
  102. return search_result
  103. else:
  104. return await cls.base_line()
  105. @classmethod
  106. async def ab_4(cls):
  107. """
  108. 使用文本关键词搜索
  109. :return:
  110. """
  111. search_result = await cls.searchMethod.search_v1(
  112. text=cls.article_keys[2],
  113. trace_id=cls.trace_id
  114. )
  115. if search_result:
  116. return search_result
  117. else:
  118. return await cls.base_line()
  119. @classmethod
  120. async def ab_5(cls):
  121. """
  122. 增量搜索, 返回result_list
  123. :return:
  124. """
  125. result_list = await cls.searchMethod.search_v2(
  126. text=cls.article_summary[:15],
  127. trace_id=cls.trace_id
  128. )
  129. if len(result_list) > 3:
  130. return result_list
  131. else:
  132. result_list += await cls.searchMethod.search_v2(
  133. text=cls.ori_title[:15],
  134. trace_id=cls.trace_id
  135. )
  136. if len(result_list) > 3:
  137. return result_list
  138. else:
  139. result_list += await cls.searchMethod.search_v2(
  140. text=cls.article_keys[0],
  141. trace_id=cls.trace_id
  142. )
  143. if len(result_list) > 3:
  144. return result_list
  145. else:
  146. result_list += await cls.searchMethod.search_v2(
  147. text=cls.article_keys[1],
  148. trace_id=cls.trace_id
  149. )
  150. if result_list:
  151. return result_list
  152. else:
  153. result_list += await cls.searchMethod.search_v2(
  154. text=cls.article_keys[2],
  155. trace_id=cls.trace_id
  156. )
  157. return result_list