Commit 388a9e33 by xuxu

增加接口缓存问题及es集群挂了的备用状况

parent 6bbb6883
from db.mod_db import DataBase
from common.sql_utils import to_sql_in
class WordDao:
def __init__(self, db=None):
if db is None:
self.dataBase = DataBase()
else:
self.dataBase = db
def select_explain_dao(self, word):
return self.dataBase.fetch_all(
'select * from check_name_literal_meaning where word = "%s" ' % (word))
......@@ -22,5 +22,4 @@ class ExplainEs:
}
}
}
print(query)
return self.esBase.select(index=index,body=query)
......@@ -13,7 +13,6 @@ class Preference:
return self.dataBase.fetch_all(
'select * from check_name_preference_select where select_meaning = "%s" and state = 1 limit 4' % type)
def select_meaning(self):
print("haha")
return self.dataBase.fetch_all("select DISTINCT(select_meaning) from check_name_preference_select limit 5")
def select_word(self,word_list):
......
from db.mod_db import DataBase
from common.sql_utils import to_sql_in
class NameDao:
def __init__(self, db=None):
if db is None:
self.dataBase = DataBase()
else:
self.dataBase = db
# def select_name_dao(self, name_type, name_size, city, cate, size):
# # print('select * from check_name_treasure_name where gsb_city = "%s" and name_size = %s and gsb_company_cate = "%s" and name_type = "%s" and state = 1 limit %s' % (city,name_size,cate,name_type,size))
# return self.dataBase.fetch_all(
# 'select * from check_name_treasure_name where gsb_city = "%s" and name_size = %s and gsb_company_cate = "%s" and name_type = "%s" and state = 1 order by rand() limit %s' % (city,name_size,cate,name_type,size))
def select_null_dao(self,size):
return self.dataBase.fetch_all(
'select * from check_name_treasure_name where name_type is null and state = 1 order by rand() limit %s' % (size))
def select_name_dao(self, name_type, name_size, size):
# print('select * from check_name_treasure_name where gsb_city = "%s" and name_size = %s and gsb_company_cate = "%s" and name_type = "%s" and state = 1 limit %s' % (city,name_size,cate,name_type,size))
return self.dataBase.fetch_all(
'select * from check_name_treasure_name where name_size = %s and name_type = "%s" and state = 1 order by rand() limit %s' % (
name_size, name_type, size))
......@@ -8,7 +8,52 @@ class NameEs:
self.esBase = EsBase()
else:
self.esBase = es
def select_name(self,name_type,name_size,city,cate,size):
# def select_name(self,name_type,name_size,city,cate,size):
# query = {
# "from": 0,
# "size": size,
# "query": {
# "bool": {
# "must": [
# {
# "term": {
# "name_type": name_type
# }
# },
# {
# "term": {
# "name_size": name_size
# }
# },
# {
# "term": {
# "gsb_city": city
# }
# },
# {
# "term": {
# "gsb_company_cate": cate
# }
# },
# {
# "term": {
# "state": 1
# }
# },
#
# ]
# }
# },
# "sort": {
# "_script": {
# "script": "Math.random()",
# "type": "number",
# "order": "asc"
# }
# }
# }
# return self.esBase.select(index=index,body=query)
def select_name(self,name_type,name_size,size):
query = {
"from": 0,
"size": size,
......@@ -27,16 +72,6 @@ class NameEs:
},
{
"term": {
"gsb_city": city
}
},
{
"term": {
"gsb_company_cate": cate
}
},
{
"term": {
"state": 1
}
},
......@@ -52,7 +87,6 @@ class NameEs:
}
}
}
print(query)
return self.esBase.select(index=index,body=query)
def select_null(self,size):
query = {
......@@ -67,7 +101,6 @@ class NameEs:
},
"size":size
}
print(query)
return self.esBase.select(index=index, body=query)
......@@ -4,17 +4,33 @@ from flask_cors import CORS
from service.name_recommend import company_name_explain
from service.preference_selecter import preference_select
from common import common_result
import datetime
server = Flask(__name__,static_url_path="",static_folder="")
server.config['JSON_AS_ASCII'] = False
CORS(server,supports_credentials=True) #跨域请求
base_result = []
now_time = str(datetime.datetime.now())[:10]
#偏好选项信息
@server.route('/preference_select', methods=['POST'])
def preference_select_info():
if request.method == 'POST':
base_result = preference_select()
global base_result
global now_time
now = str(datetime.datetime.now())[:10]
if now != now_time:
now_time = now
base_result = []
if len(base_result) == 0:
base_result = preference_select()
if len(base_result) == 0:
base_result = preference_select()
return common_result.to_result(base_result)
......@@ -24,18 +40,11 @@ def preference_select_info():
def treasure_name_info():
if request.method == 'POST':
request_data = request.json
if not request_data or not request_data.get('city') or not request_data.get('preference') or not request_data.get('cate'):
return common_result.to_result(None, 300, "参数错误")
result = company_name_explain(request_data)
return common_result.to_result(result)
if __name__ == '__main__':
# server.run(debug=True,host='0.0.0.0',port=80)
# global base_result
# base_result = preference_select()
# print(base_result)
# base_result =
server.run(debug=True, host='192.168.201.35', port=8081)
\ No newline at end of file
server.run(debug=True, host='192.168.201.35', port=8089)
\ No newline at end of file
......@@ -2,16 +2,15 @@ from dao.treasure_name_es import NameEs
from collections import Counter
from dao.literal_meaning_es import ExplainEs
from service import preference_selecter
# url = 'https://entprofile.gongsibao.com/gsb/api/ImageStatusSearch' # 获取信息接口
# headers = {"Content-Type": "application/json", "ak": "YLc6GsgLtuRGaVA5Om848x18NxLtHlyA"}
# companyname = {"companyname":companyname}# 接口访问参数
# companyInfo = requests.post(url, data=json.dumps(json_info), headers=headers) # 访问接口返回的信息
import random
from dao.treasure_name_dao import NameDao
from dao.literal_meaning_dao import WordDao
all_size = 20
find_size = 15
def statistics(name_type_dict,name_size_dict,json_result):
name_type_list = []
name_size_list = []
......@@ -39,6 +38,7 @@ def name_create(json_result):
result = {}
all_num = 0
name_list = []
name_five_result = {}
for item in name_type_num_list:
if item not in result:
result[item] = {}
......@@ -47,46 +47,195 @@ def name_create(json_result):
result[item][name] = ""
result[item][name] = round(name_type_num_list[item] * name_size_num_list[name] * find_size)
all_num += result[item][name]
name_search_result = namees.select_name(item, name,json_result['city'],json_result['cate'], result[item][name])
for search_name in name_search_result["hits"]['hits']:
name_list.append(search_name["_source"]['company_name'])
#带行业及地区
# name_search_result = namees.select_name(item, name,json_result['city'],json_result['cate'], result[item][name])
name_search_result = namees.select_name(item, name, result[item][name])
if name_search_result:
for search_name in name_search_result["hits"]['hits']:
name_list.append(search_name["_source"]['company_name'])
if str(search_name["_source"]['five_elements_type']) == "None":
name_five_result[search_name["_source"]['company_name']] = random.choice(["金", "木", "水", "火", "土"])
else:
name_five_result[search_name["_source"]['company_name']] = search_name["_source"][
'five_elements_type']
surplus_num = all_size - len(name_list)
if surplus_num > 0:
null_result = namees.select_null(surplus_num)
for search_name in null_result["hits"]['hits']:
print(search_name)
name_list.append(search_name["_source"]['company_name'])
if null_result:
for search_name in null_result["hits"]['hits']:
name_list.append(search_name["_source"]['company_name'])
return name_list
if str(search_name["_source"]['five_elements_type']) == "None":
name_five_result[search_name["_source"]['company_name']] = random.choice(["金","木","水","火","土"])
else:
name_five_result[search_name["_source"]['company_name']] = search_name["_source"]['five_elements_type']
def word_explain(name_list,json_result):
return name_list,name_five_result
def word_explain(name_list,name_five_result,json_result):
explaines = ExplainEs()
result = []
for name in name_list:
name_dict = {"name":"","explain":[],"company_name":""}
name_dict = {"name":"","explain":[],"company_name":"","five_elements_type":""}
name_dict["company_name"] = json_result['city'].replace("市","") + name + json_result['cate'] + "有限公司"
name_dict['name'] = name
name_dict['five_elements_type'] = name_five_result[name]
for word in name:
word_dict = {}
explain_result = explaines.select_explain(word)
if explain_result['hits']['hits']:
if explain_result:
if explain_result['hits']['hits']:
word_dict[word] = explain_result['hits']['hits'][0]['_source']['explain']
if not explain_result['hits']['hits']:
word_dict[word] = "暂无释义"
name_dict['explain'].append(word_dict)
result.append(name_dict)
return result
def reserve(final_result_continue,name_list_final,json_result):
already_name_dict = {"文雅":[["meili",""],["meili1",""],["meili2",""],["meili3",""],["meili",""],["meili1",""],["meili2",""],["meili3",""]],
"吉祥":[["meilsi",""],["meisali1",""],["meili2",""],["meili3",""],["meili",""],["meili1",""],["meili2",""],["meili3",""]],
"通俗":[["meilsai",""],["meili1",""],["meili2",""],["meili3",""],["meili",""],["meili1",""],["meili2",""],["meili3",""]]}
already_word_dict = {"m":"zhihda","e":"dafhk"}
name_type_dict, name_size_dict = preference_selecter.preference_meaning(json_result['preference'])
name_type_list, name_size_list, all_len = statistics(name_type_dict, name_size_dict, json_result['preference'])
name_type_num_dict = Counter(name_type_list)
name_type_num_list = precent_get(name_type_num_dict, all_len)
result = {}
name_list = []
name_five_result = {}
for item in name_type_num_list:
if item not in result:
result[item] = {}
result[item] = round(name_type_num_list[item] * 20)
for name_data in already_name_dict[item][:result[item]]:
name_list.append(name_data[0])
if name_data[1] == "":
name_five_result[name_data[0]] = random.choice(["金","木","水","火","土"])
else:
name_five_result[name_data[0]] = name_data[1]
for name in name_list:
if name not in name_list_final:
name_dict = {"name": "", "explain": [], "company_name": "", "five_elements_type": ""}
name_dict["name"] = name
name_dict["company_name"] = json_result['city'].replace("市","") + name + json_result['cate'] + "有限公司"
name_dict['five_elements_type'] = name_five_result[name]
for word in name:
word_dict = {}
if word in already_word_dict:
word_dict[word] = already_word_dict[word]
if word not in already_word_dict:
word_dict[word] = "暂无释义"
name_dict['explain'].append(word_dict)
final_result_continue.append(name_dict)
if len(final_result_continue) == 20:
break
return final_result_continue
def mysql_reserve(final_name_list,json_result):
name_type_dict ,name_size_dict = preference_selecter.preference_meaning(json_result['preference'])
name_type_list, name_size_list, all_len = statistics(name_type_dict,name_size_dict,json_result['preference'])
word_dict[word] = explain_result['hits']['hits'][0]['_source']['explain']
name_type_num_dict = Counter(name_type_list)
name_size_num_list = Counter(name_size_list)
name_size_num_list = precent_get(name_size_num_list,all_len)
name_type_num_list = precent_get(name_type_num_dict,all_len)
namedao = NameDao()
result = {}
all_num = 0
name_five_result = {}
for item in name_type_num_list:
if item not in result:
result[item] = {}
for name in name_size_num_list:
if name not in result[item]:
result[item][name] = ""
result[item][name] = round(name_type_num_list[item] * name_size_num_list[name] * find_size)
all_num += result[item][name]
# name_search_result = namedao.select_name_dao(item, name, json_result['city'], json_result['cate'],result[item][name])
name_search_result = namedao.select_name_dao(item, name, result[item][name])
if name_search_result:
for search_name in name_search_result:
if len(final_name_list) < 20:
if search_name['company_name'] not in final_name_list:
final_name_list.append(search_name['company_name'])
if str(search_name['five_elements_type']) == None:
name_five_result[search_name['company_name']] = random.choice(
["金", "木", "水", "火", "土"])
else:
name_five_result[search_name['company_name']] = search_name['five_elements_type']
surplus_num = all_size - len(final_name_list)
if surplus_num > 0:
null_result = namedao.select_null_dao(surplus_num)
if null_result:
for search_name in null_result:
if search_name['company_name'] not in final_name_list:
final_name_list.append(search_name['company_name'])
if not explain_result['hits']['hits']:
print("nohave",word)
if str(search_name['five_elements_type']) == "None":
name_five_result[search_name['company_name']] = random.choice(
["金", "木", "水", "火", "土"])
else:
name_five_result[search_name['company_name']] = search_name[
'five_elements_type']
return final_name_list, name_five_result
def mysql_explain(name_list,name_five_result,json_result):
worddao = WordDao()
result = []
for name in name_list:
name_dict = {"name": "", "explain": [], "company_name": "", "five_elements_type": ""}
name_dict["company_name"] = json_result['city'].replace("市", "") + name + json_result['cate'] + "有限公司"
name_dict['name'] = name
name_dict['five_elements_type'] = name_five_result[name]
for word in name:
word_dict = {}
explain_result = worddao.select_explain_dao(word)
if explain_result:
word_dict[word] = explain_result[0]['explain']
if not explain_result:
word_dict[word] = "暂无释义"
name_dict['explain'].append(word_dict)
result.append(name_dict)
return result
def company_name_explain(json_result):
result_dict = {}
name_list = name_create(json_result)
result = word_explain(name_list,json_result)
name_list,name_five_result = name_create(json_result)
if len(name_list) < 20:
final_name_list, name_five_result = mysql_reserve(name_list,json_result)
result = mysql_explain(final_name_list, name_five_result, json_result)
else:
result = word_explain(name_list,name_five_result,json_result)
result_dict["orderId"]=json_result['orderId']
result_dict["result_name"] = result
return result_dict
......
from dao.preference_select import Preference
def preference_select():
all_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