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: ...@@ -22,5 +22,4 @@ class ExplainEs:
} }
} }
} }
print(query)
return self.esBase.select(index=index,body=query) return self.esBase.select(index=index,body=query)
...@@ -13,7 +13,6 @@ class Preference: ...@@ -13,7 +13,6 @@ class Preference:
return self.dataBase.fetch_all( return self.dataBase.fetch_all(
'select * from check_name_preference_select where select_meaning = "%s" and state = 1 limit 4' % type) 'select * from check_name_preference_select where select_meaning = "%s" and state = 1 limit 4' % type)
def select_meaning(self): def select_meaning(self):
print("haha")
return self.dataBase.fetch_all("select DISTINCT(select_meaning) from check_name_preference_select limit 5") return self.dataBase.fetch_all("select DISTINCT(select_meaning) from check_name_preference_select limit 5")
def select_word(self,word_list): 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: ...@@ -8,7 +8,52 @@ class NameEs:
self.esBase = EsBase() self.esBase = EsBase()
else: else:
self.esBase = es 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 = { query = {
"from": 0, "from": 0,
"size": size, "size": size,
...@@ -27,16 +72,6 @@ class NameEs: ...@@ -27,16 +72,6 @@ class NameEs:
}, },
{ {
"term": { "term": {
"gsb_city": city
}
},
{
"term": {
"gsb_company_cate": cate
}
},
{
"term": {
"state": 1 "state": 1
} }
}, },
...@@ -52,7 +87,6 @@ class NameEs: ...@@ -52,7 +87,6 @@ class NameEs:
} }
} }
} }
print(query)
return self.esBase.select(index=index,body=query) return self.esBase.select(index=index,body=query)
def select_null(self,size): def select_null(self,size):
query = { query = {
...@@ -67,7 +101,6 @@ class NameEs: ...@@ -67,7 +101,6 @@ class NameEs:
}, },
"size":size "size":size
} }
print(query)
return self.esBase.select(index=index, body=query) return self.esBase.select(index=index, body=query)
...@@ -4,17 +4,33 @@ from flask_cors import CORS ...@@ -4,17 +4,33 @@ from flask_cors import CORS
from service.name_recommend import company_name_explain from service.name_recommend import company_name_explain
from service.preference_selecter import preference_select from service.preference_selecter import preference_select
from common import common_result from common import common_result
import datetime
server = Flask(__name__,static_url_path="",static_folder="") server = Flask(__name__,static_url_path="",static_folder="")
server.config['JSON_AS_ASCII'] = False server.config['JSON_AS_ASCII'] = False
CORS(server,supports_credentials=True) #跨域请求 CORS(server,supports_credentials=True) #跨域请求
base_result = []
now_time = str(datetime.datetime.now())[:10]
#偏好选项信息 #偏好选项信息
@server.route('/preference_select', methods=['POST']) @server.route('/preference_select', methods=['POST'])
def preference_select_info(): def preference_select_info():
if request.method == 'POST': 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) return common_result.to_result(base_result)
...@@ -24,18 +40,11 @@ def preference_select_info(): ...@@ -24,18 +40,11 @@ def preference_select_info():
def treasure_name_info(): def treasure_name_info():
if request.method == 'POST': if request.method == 'POST':
request_data = request.json 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'): 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, "参数错误") return common_result.to_result(None, 300, "参数错误")
result = company_name_explain(request_data) result = company_name_explain(request_data)
return common_result.to_result(result) return common_result.to_result(result)
if __name__ == '__main__': if __name__ == '__main__':
# server.run(debug=True,host='0.0.0.0',port=80) # server.run(debug=True,host='0.0.0.0',port=80)
# global base_result server.run(debug=True, host='192.168.201.35', port=8089)
# base_result = preference_select() \ No newline at end of file
# print(base_result)
# base_result =
server.run(debug=True, host='192.168.201.35', port=8081)
\ No newline at end of file
...@@ -2,16 +2,15 @@ from dao.treasure_name_es import NameEs ...@@ -2,16 +2,15 @@ from dao.treasure_name_es import NameEs
from collections import Counter from collections import Counter
from dao.literal_meaning_es import ExplainEs from dao.literal_meaning_es import ExplainEs
from service import preference_selecter from service import preference_selecter
import random
# url = 'https://entprofile.gongsibao.com/gsb/api/ImageStatusSearch' # 获取信息接口 from dao.treasure_name_dao import NameDao
# headers = {"Content-Type": "application/json", "ak": "YLc6GsgLtuRGaVA5Om848x18NxLtHlyA"} from dao.literal_meaning_dao import WordDao
# companyname = {"companyname":companyname}# 接口访问参数
# companyInfo = requests.post(url, data=json.dumps(json_info), headers=headers) # 访问接口返回的信息
all_size = 20 all_size = 20
find_size = 15 find_size = 15
def statistics(name_type_dict,name_size_dict,json_result): def statistics(name_type_dict,name_size_dict,json_result):
name_type_list = [] name_type_list = []
name_size_list = [] name_size_list = []
...@@ -39,6 +38,7 @@ def name_create(json_result): ...@@ -39,6 +38,7 @@ def name_create(json_result):
result = {} result = {}
all_num = 0 all_num = 0
name_list = [] name_list = []
name_five_result = {}
for item in name_type_num_list: for item in name_type_num_list:
if item not in result: if item not in result:
result[item] = {} result[item] = {}
...@@ -47,46 +47,195 @@ def name_create(json_result): ...@@ -47,46 +47,195 @@ def name_create(json_result):
result[item][name] = "" result[item][name] = ""
result[item][name] = round(name_type_num_list[item] * name_size_num_list[name] * find_size) result[item][name] = round(name_type_num_list[item] * name_size_num_list[name] * find_size)
all_num += result[item][name] 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_search_result = namees.select_name(item, name,json_result['city'],json_result['cate'], result[item][name])
name_list.append(search_name["_source"]['company_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) surplus_num = all_size - len(name_list)
if surplus_num > 0: if surplus_num > 0:
null_result = namees.select_null(surplus_num) null_result = namees.select_null(surplus_num)
for search_name in null_result["hits"]['hits']: if null_result:
print(search_name) for search_name in null_result["hits"]['hits']:
name_list.append(search_name["_source"]['company_name']) 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() explaines = ExplainEs()
result = [] result = []
for name in name_list: 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["company_name"] = json_result['city'].replace("市","") + name + json_result['cate'] + "有限公司"
name_dict['name'] = name name_dict['name'] = name
name_dict['five_elements_type'] = name_five_result[name]
for word in name: for word in name:
word_dict = {} word_dict = {}
explain_result = explaines.select_explain(word) 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']: if str(search_name['five_elements_type']) == "None":
print("nohave",word) 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] = "暂无释义" word_dict[word] = "暂无释义"
name_dict['explain'].append(word_dict) name_dict['explain'].append(word_dict)
result.append(name_dict) result.append(name_dict)
return result return result
def company_name_explain(json_result): def company_name_explain(json_result):
result_dict = {} result_dict = {}
name_list = name_create(json_result) name_list,name_five_result = name_create(json_result)
result = word_explain(name_list,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["orderId"]=json_result['orderId']
result_dict["result_name"] = result result_dict["result_name"] = result
return result_dict return result_dict
......
from dao.preference_select import Preference from dao.preference_select import Preference
def preference_select(): def preference_select():
all_list = [] 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