Commit ca2335a2 authored by lixiaofang's avatar lixiaofang

add

parent 4875eb96
...@@ -295,3 +295,108 @@ def recommed_service_category_device_id(device_id): ...@@ -295,3 +295,108 @@ def recommed_service_category_device_id(device_id):
return 1 return 1
except: except:
return 1 return 1
def get_suggest_tips_v1(query, lat, lng, offset=0, size=50, device_id=None):
"""
50%前段强加权后根据tab转化率和词频进行排序 索引 suggest gray_number=1 尾号["0", "1", "2", "3", "c", "d", "e", "f"]
:param query:
:param lat:
:param lng:
:param offset:
:param size:
:param device_id:
:return:
"""
try:
###在原来的逻辑上加两层灰度
have_read_tips_set, ret_list, result_dict = get_query_by_es(query=str(query).lower(), lat=lat, lng=lng,
offset=offset,
size=size, highlight_query=query,
have_read_tips_set=set(),
sub_index_name="suggest")
if len(ret_list) >= size:
logging.info("user_search_query:%s,get_sug_num:%s" % (query, len(ret_list)))
return ret_list[:size]
else:
query_ret_list = []
wordresemble_ret_list = []
value_data = []
QUERY_KEY = "query:search_tip"
query_base64 = base64.b64encode(query.encode('utf8')).decode('utf8')
if redis_client.hget(QUERY_KEY, query_base64) is not None:
value_data = json.loads(str(redis_client.hget(QUERY_KEY, query_base64), encoding='utf-8'))
if len(value_data) > 0:
for i in value_data:
key = list(i.keys())[0]
ori_name = str(base64.b64decode(key), "utf-8")
if ori_name not in have_read_tips_set:
have_read_tips_set.add(ori_name)
result_num = i.get(key, 0)
describe = "约" + str(result_num) + "个结果" if result_num else ""
logging.info("get result_num:%s" % result_num)
highlight_marks = u'<ems>%s</ems>' % query
# highlight_name = ori_name.replace(query, highlight_marks)
highlight_name = set_highlihgt(query, ori_name)
if ori_name == query:
query_ret_list.append(
{"results_num": result_num, "ori_name": ori_name, "id": None, "is_online": True,
"offline_score": 0,
"type_flag": get_tips_word_type(ori_name), "highlight_name": highlight_name,
"describe": describe})
else:
wordresemble_ret_list.append(
{"results_num": result_num, "ori_name": ori_name, "id": None, "is_online": True,
"offline_score": 0,
"type_flag": get_tips_word_type(ori_name), "highlight_name": highlight_name,
"describe": describe})
ret_list.extend(query_ret_list)
ret_list.extend(wordresemble_ret_list)
###繁体字删掉,把搜索结果加到简体字上边
fanti_query = [{'痩脸针': "瘦脸针"}]
for item in ret_list:
result_num = [[item['results_num'], list(ret.values())[0], list(ret.keys())[0]] for ret in fanti_query
if list(ret.keys())[0] == item['ori_name']]
if len(result_num) > 0:
ret_list.remove(item)
for item in ret_list:
if item['ori_name'] == result_num[0][1]:
item['results_num'] += result_num[0][0]
####
if len(ret_list) >= size:
logging.info("user_search_query:%s,get_sug_num:%s" % (query, len(ret_list)))
return ret_list[0:size]
elif len(ret_list) < size and len(ret_list) > 3:
logging.info("user_search_query:%s,get_sug_num:%s" % (query, len(ret_list)))
return ret_list
else:
##无结果的时候把汉字转成拼音再搜一次
ss = lazy_pinyin(query)
str_query = ''
for item in ss:
str_query += str(item)
have_read_tips_set, pinyin_ret_list, result_dict = get_query_by_es(query=str_query, lat=lat, lng=lng,
offset=offset,
size=size - len(ret_list),
highlight_query=query,
have_read_tips_set=have_read_tips_set,
sub_index_name="suggest")
ret_list.extend(pinyin_ret_list)
logging.info("user_search_query:%s,get_sug_num:%s" % (query, len(ret_list)))
return ret_list
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
logging.info("error_user_search_query:%s,get_sug_num:%s" % (query, 0))
return list()
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment