Commit 5739fd17 authored by lixiaofang's avatar lixiaofang

not result

parent dbf52cb1
import sys
from gm_rpcd.commands.utils import add_cwd_to_path
from gm_rpcd.internals.utils import serve
def main(args):
add_cwd_to_path()
from gm_rpcd.internals.configuration import config
config.is_develop_mode = True
config.freeze()
host = '127.0.0.1'
port = 9000
try:
first_arg = args[0]
except IndexError:
pass
else:
if ':' in first_arg:
host, port = first_arg.split(':')
port = int(port)
else:
port = int(first_arg)
print('Serving on {}:{}'.format(host, port))
serve(host=host, port=port)
if __name__ == '__main__':
main(sys.argv[1:])
......@@ -38,8 +38,6 @@ def get_suggest_tips(query, lat, lng, offset=0, size=50):
#
# logging.info("get whole_query:%s" % whole_query)
# hits = whole_query["hits"]["hits"]
#
# for item in hits:
......@@ -169,21 +167,44 @@ def get_suggest_tips(query, lat, lng, offset=0, size=50):
return ret_list
else:
QUERY_KEY = "query:{}:search_tip"
query_ret_list = []
wordresemble_ret_list = []
value_data = []
QUERY_KEY = "query:search_tip"
query_base64 = base64.b64encode(query.encode('utf8')).decode('utf8')
key = QUERY_KEY.format(query_base64)
labels = list(map(lambda x: x.decode("utf8"), list(redis_client.smembers(key))))
for i in labels:
ori = i.split(":")[0]
ori_name = base64.b64decode(ori.encode('utf8')).decode('utf8')
if ori_name not in have_read_tips_set:
have_read_tips_set.add(ori_name)
result_num = i.split(":")[1]
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": ori_name, "describe": ""})
if redis_client.hget(QUERY_KEY, query_base64) is not None:
value_data = json.loads(redis_client.hget(QUERY_KEY, query_base64))
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)
highlight_marks = u'<ems>%s</ems>' % query
highlight_name = ori_name.replace(query, highlight_marks)
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": ""})
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": ""})
logging.info("get query_ret_list:%s" % query_ret_list)
logging.info("get wordresemble_ret_list:%s" % wordresemble_ret_list)
ret_list.extend(query_ret_list)
ret_list.extend(wordresemble_ret_list)
logging.info("get ret_list:%s" % ret_list)
if len(ret_list) >= 50:
return ret_list[0:50]
......
......@@ -538,8 +538,8 @@ def tips_attr_sync_to_redis_type_info_map():
),
TypeInfo(
name='suggest',
type='wordrel_results_num', # api_wordrelresemble
model=doctor.Hospital,
type='wordrel_results_num', # api_wordrel
model=wordresemble.WordRel,
query_deferred=lambda: wordresemble.WordRel.objects.filter(
category__in=[13, 12, 11, 9, 1]).query,
get_data_func=WordResemble.get_all_data_name_mapping_results_to_redis,
......@@ -550,7 +550,7 @@ def tips_attr_sync_to_redis_type_info_map():
TypeInfo(
name='suggest',
type='wordresemble_results_num', # api_wordrelresemble
model=doctor.Hospital,
model=wordresemble.WordRel,
query_deferred=lambda: wordresemble.WordRel.objects.filter(
category__in=[13, 12, 11, 9, 1]).query,
get_data_func=WordResemble.set_data_to_redis,
......
......@@ -76,6 +76,8 @@ class WordResemble(object):
try:
total_count = 0
instance.name = instance.keyword
logging.info("get instancekeyword:%s" % instance.keyword)
# 获取百科的
ItemWikiTransfer.get_wiki_data_name_mapping_results_to_redis(instance)
......@@ -88,6 +90,26 @@ class WordResemble(object):
# 获取日记的
WordResemble.get_diary_data_name_mapping_results_to_redis(instance)
# 获取该关键词的同义词的数据
query_sql_item = wordresemble.WordRelResemble.objects.filter(wordrel_id=instance.id)
logging.info("get query_sql_item:%s" % query_sql_item)
if query_sql_item:
for item in query_sql_item:
instance.name = item.word
logging.info("get instancename:%s" % instance.name)
# 获取百科的
ItemWikiTransfer.get_wiki_data_name_mapping_results_to_redis(instance)
# 获取美购的
TagTransfer.get_tag_data_name_mapping_results_to_redis(instance)
# 获取医生医院的
DoctorTransfer.get_doctor_data_name_mapping_results_to_redis(instance)
# 获取日记的
WordResemble.get_diary_data_name_mapping_results_to_redis(instance)
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......@@ -153,41 +175,37 @@ class WordResemble(object):
def set_data_to_redis(cls, instance):
try:
QUERY_KEY = "query:{}:search_tip"
keyword_value = []
QUERY_KEY = "query:search_tip"
tips_num_redis_key_prefix = "search_tips:tips_mapping_num"
query_sql_item = wordresemble.WordRel.objects.filter(keyword=instance.keyword)
for sql_obj in query_sql_item:
count = 0
words = list(sql_obj.all_resembles.all().values_list('word', flat=True))
query_base64 = base64.b64encode(instance.keyword.encode('utf8')).decode('utf8')
for items in words:
count += 1
wordresemble_value = []
# 先存储本体词
query_base64 = base64.b64encode(instance.keyword.encode('utf8')).decode('utf8')
key = QUERY_KEY.format(query_base64)
value_name = base64.b64encode(items.encode('utf8')).decode('utf8')
# 获取本体词的结果
item_name = base64.b64encode(items.encode('utf8')).decode('utf8')
# 获取该同义词的结果
redis_data = redis_client.hget(tips_num_redis_key_prefix, items)
logging.info("get redis_data:%s" % redis_data)
redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {}
total_count = 0
if 't' in redis_val_dict:
total_count = int(redis_val_dict['t'])
# 存储到Redis
value = value_name + str(":" + str(total_count))
redis_client.sadd(key, value)
# 存储近义词
# query_base64 = base64.b64encode(items.encode('utf8')).decode('utf8')
key = QUERY_KEY.format(value_name)
# value_name = base64.b64encode(wordrm["keyword"].encode('utf8')).decode('utf8')
value_names = query_base64
# 获取结果
value = {item_name: total_count}
keyword_value.append(value)
redis_data = redis_client.hget(tips_num_redis_key_prefix, instance.keyword)
redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {}
total_count = 0
if 't' in redis_val_dict:
total_count = int(redis_val_dict['t'])
# 存储结果
value = value_names + str(":" + str(total_count))
redis_client.sadd(key, value)
value = {query_base64: total_count}
wordresemble_value.append(value)
if count == 1:
keyword_value.append(value)
if words:
for w in words:
value_name_w = base64.b64encode(w.encode('utf8')).decode('utf8')
......@@ -196,8 +214,12 @@ class WordResemble(object):
total_count = 0
if 't' in redis_val_dict:
total_count = int(redis_val_dict['t'])
value = value_name_w + str(":" + str(total_count))
redis_client.sadd(key, value)
value = {value_name_w: total_count}
wordresemble_value.append(value)
if len(wordresemble_value) > 0:
redis_client.hset(QUERY_KEY, item_name, json.dumps(wordresemble_value))
if len(keyword_value) > 0:
redis_client.hset(QUERY_KEY, query_base64, json.dumps(keyword_value))
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
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