Commit a85e876d authored by lixiaofang's avatar lixiaofang

best_answer

parent d10679b7
...@@ -3,5 +3,7 @@ ...@@ -3,5 +3,7 @@
import redis import redis
from django.conf import settings from django.conf import settings
import logging
logging.info("get settings.REDIS_URL:%s" % settings.REDIS_URL)
redis_client = redis.StrictRedis.from_url(settings.REDIS_URL) redis_client = redis.StrictRedis.from_url(settings.REDIS_URL)
No preview for this file type
No preview for this file type
...@@ -16,16 +16,26 @@ CELERY_BROKER_URL = "redis://127.0.0.1:6379/8" ...@@ -16,16 +16,26 @@ CELERY_BROKER_URL = "redis://127.0.0.1:6379/8"
DATABASES = { DATABASES = {
'default': { 'default': {
'ENGINE': 'django.db.backends.mysql', # 'ENGINE': 'django.db.backends.mysql',
# 'NAME': 'zhengxing_test',
# 'USER': 'work',
# 'PASSWORD': 'workwork',
# 'HOST': 'rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com',
# 'PORT': '',
# 'OPTIONS': {
# "init_command": "SET foreign_key_checks = 0;",
# "charset": "utf8mb4",
# }
'ENGINE': 'django.db.backends.mysql', # 设置为mysql数据库
'NAME': 'zhengxing_test', 'NAME': 'zhengxing_test',
'USER': 'work', 'USER': 'work',
'PASSWORD': 'workwork', 'PASSWORD': 'Gengmei1',
'HOST': 'rdsmaqevmuzj6jy.mysql.rds.aliyuncs.com', 'HOST': 'rm-2ze0v6uua2hl9he8edo.mysql.rds.aliyuncs.com',
'PORT': '', 'PORT': '3306',
'OPTIONS': { 'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;", "init_command": "SET foreign_key_checks = 0;",
"charset": "utf8mb4", "charset": "utf8mb4", # 为了支持emoji表情
} },
}, },
'bran': { 'bran': {
'ENGINE': 'django.db.backends.mysql', # 设置为mysql数据库 'ENGINE': 'django.db.backends.mysql', # 设置为mysql数据库
...@@ -41,16 +51,30 @@ DATABASES = { ...@@ -41,16 +51,30 @@ DATABASES = {
} }
} }
# ES_INFO_LIST = [
# {
# "host": "101.200.54.249",
# "port": 9200
# }
# ]
#
# GM_ORI_ES_INFO_LIST = [
# {
# "host": "101.200.54.249",
# "port": 9200
# }
# ]
ES_INFO_LIST = [ ES_INFO_LIST = [
{ {
"host": "101.200.54.249", "host": "127.0.0.1",
"port": 9200 "port": 9200
} }
] ]
GM_ORI_ES_INFO_LIST = [ GM_ORI_ES_INFO_LIST = [
{ {
"host": "101.200.54.249", "host": "127.0.0.1",
"port": 9200 "port": 9200
} }
] ]
......
...@@ -37,15 +37,3 @@ class WordRelResemble(models.Model): ...@@ -37,15 +37,3 @@ class WordRelResemble(models.Model):
wordrel = models.ForeignKey(WordRel, related_name='all_resembles') wordrel = models.ForeignKey(WordRel, related_name='all_resembles')
word = models.CharField(u'近义词', max_length=50, db_index=True) word = models.CharField(u'近义词', max_length=50, db_index=True)
class WordRelSynonym(models.Model):
"""
同义词数据表
"""
class Meta:
app_label = "api"
db_table = "api_wordrelsynonym"
wordrel = models.ForeignKey(WordRel, related_name='all_resembles')
word = models.CharField(u'同义词', max_length=50, db_index=True)
...@@ -136,10 +136,15 @@ class TypeInfo(object): ...@@ -136,10 +136,15 @@ class TypeInfo(object):
)) ))
continue continue
data = self.get_data_func(instance) data = self.get_data_func(instance)
(item_dict, suggest_list) = data
logging.info("get-------------item_dict:%s" % item_dict['tips_name_type'])
logging.info("get-------------item_dict:%s" % suggest_list)
if item_dict["tips_name_type"] == 4:
instance.name = instance.keyword
resemble_list = WordResemble.get_word_resemble_list(str(instance.name)) resemble_list = WordResemble.get_word_resemble_list(str(instance.name))
(item_dict, suggest_list) = data
for suggest_item in suggest_list: for suggest_item in suggest_list:
suggest_dict = copy.deepcopy(item_dict) suggest_dict = copy.deepcopy(item_dict)
suggest_dict["suggest_type"] = suggest_item["suggest_type"] suggest_dict["suggest_type"] = suggest_item["suggest_type"]
...@@ -358,7 +363,7 @@ def get_type_info_map(): ...@@ -358,7 +363,7 @@ def get_type_info_map():
TypeInfo( TypeInfo(
name='suggest', name='suggest',
type='wordrel_tips', # tag type='wordrel_tips', # tag
model=tag.Tag, model=wordresemble.WordRel,
query_deferred=lambda: wordresemble.WordRel.objects.all().query, query_deferred=lambda: wordresemble.WordRel.objects.all().query,
get_data_func=WordResemble.get_resemble_list, get_data_func=WordResemble.get_resemble_list,
bulk_insert_chunk_size=100, bulk_insert_chunk_size=100,
......
...@@ -4,15 +4,15 @@ import os ...@@ -4,15 +4,15 @@ import os
import sys import sys
import logging import logging
import traceback import traceback
from libs.tools import tzlc,getMd5Digest from libs.tools import tzlc, getMd5Digest
from libs.es import ESPerform from libs.es import ESPerform
from libs.cache import redis_client from libs.cache import redis_client
import json import json
from django.conf import settings from django.conf import settings
from trans2es.commons.commons import get_tips_suggest_list from trans2es.commons.commons import get_tips_suggest_list
from trans2es.commons.words_utils import QueryWordAttr,get_tips_word_type from trans2es.commons.words_utils import QueryWordAttr, get_tips_word_type
class DoctorTransfer(object): class DoctorTransfer(object):
...@@ -20,14 +20,15 @@ class DoctorTransfer(object): ...@@ -20,14 +20,15 @@ class DoctorTransfer(object):
def get_doctor_data_name_mapping_results_to_redis(cls, instance): def get_doctor_data_name_mapping_results_to_redis(cls, instance):
try: try:
doctor_name = instance.name.strip() doctor_name = instance.name.strip()
if doctor_name: if doctor_name:
multi_fields = { multi_fields = {
'hospital.city_province_name': 1, 'hospital.city_province_name': 1,
'hospital.name': 1, 'hospital.name': 1,
'name': 1, 'name': 1,
'hospital.city_name':1, 'hospital.city_name': 1,
'hospital.officer_name':1, 'hospital.officer_name': 1,
'service_closure_tags':1 'service_closure_tags': 1
} }
query_fields = ['^'.join((k, str(v))) for (k, v) in multi_fields.items()] query_fields = ['^'.join((k, str(v))) for (k, v) in multi_fields.items()]
multi_match = { multi_match = {
...@@ -39,12 +40,12 @@ class DoctorTransfer(object): ...@@ -39,12 +40,12 @@ class DoctorTransfer(object):
q = { q = {
"size": 0, "size": 0,
"query":{ "query": {
"bool":{ "bool": {
"should":[ "should": [
{"multi_match": multi_match} {"multi_match": multi_match}
], ],
"must":[ "must": [
{"term": {"is_online": True}} {"term": {"is_online": True}}
], ],
"minimum_should_match": 1 "minimum_should_match": 1
...@@ -52,14 +53,16 @@ class DoctorTransfer(object): ...@@ -52,14 +53,16 @@ class DoctorTransfer(object):
} }
} }
result_dict = ESPerform.get_search_results(ESPerform.get_cli(settings.GM_ORI_ES_INFO_LIST), sub_index_name="doctor", doc_type="doctor", query_body=q,offset=0,size=0) result_dict = ESPerform.get_search_results(ESPerform.get_cli(settings.GM_ORI_ES_INFO_LIST),
sub_index_name="doctor", doc_type="doctor", query_body=q,
offset=0, size=0)
doctor_results = result_dict["total_count"] doctor_results = result_dict["total_count"]
redis_key_prefix = "search_tips:tips_mapping_num" redis_key_prefix = "search_tips:tips_mapping_num"
redis_data = redis_client.hget(redis_key_prefix,doctor_name) redis_data = redis_client.hget(redis_key_prefix, doctor_name)
redis_val_dict = json.loads(str(redis_data,encoding="utf-8")) if redis_data else {} redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {}
total_count = doctor_results total_count = doctor_results
if 't' in redis_val_dict: if 't' in redis_val_dict:
...@@ -68,12 +71,12 @@ class DoctorTransfer(object): ...@@ -68,12 +71,12 @@ class DoctorTransfer(object):
redis_val_dict['t'] = total_count redis_val_dict['t'] = total_count
redis_val_dict['d'] = doctor_results redis_val_dict['d'] = doctor_results
logging.info("duan add,redis_key_prefix:%s,redis_val_dict:%s" % (str(redis_key_prefix),str(redis_val_dict))) logging.info(
redis_client.hset(redis_key_prefix,doctor_name, json.dumps(redis_val_dict)) "duan add,redis_key_prefix:%s,redis_val_dict:%s" % (str(redis_key_prefix), str(redis_val_dict)))
redis_client.hset(redis_key_prefix, doctor_name, json.dumps(redis_val_dict))
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
@classmethod @classmethod
def get_doctor_suggest_data_list(cls, instance): def get_doctor_suggest_data_list(cls, instance):
try: try:
...@@ -94,7 +97,7 @@ class DoctorTransfer(object): ...@@ -94,7 +97,7 @@ class DoctorTransfer(object):
suggest_list = get_tips_suggest_list(instance.name) suggest_list = get_tips_suggest_list(instance.name)
return (item_dict,suggest_list) return (item_dict, suggest_list)
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return ([],[]) return ([], [])
...@@ -76,6 +76,9 @@ class ItemWikiTransfer(object): ...@@ -76,6 +76,9 @@ class ItemWikiTransfer(object):
redis_client.hset(redis_key_prefix, wiki_name, json.dumps(redis_val_dict)) redis_client.hset(redis_key_prefix, wiki_name, json.dumps(redis_val_dict))
logging.info("get ----------------------get ")
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
......
...@@ -44,16 +44,16 @@ class WordResemble(object): ...@@ -44,16 +44,16 @@ class WordResemble(object):
ret_list = list() ret_list = list()
item_dict = dict() item_dict = dict()
item_dict["id"] = getMd5Digest(str(instance.word)) item_dict["id"] = getMd5Digest(str(instance.keyword))
item_dict["ori_name"] = instance.word item_dict["ori_name"] = instance.keyword
item_dict["is_online"] = True item_dict["is_online"] = True
item_dict["order_weight"] = QueryWordAttr.get_project_query_word_weight(instance.name) item_dict["order_weight"] = QueryWordAttr.get_project_query_word_weight(instance.keyword)
item_dict["results_num"] = QueryWordAttr.get_query_results_num(instance.name) item_dict["results_num"] = QueryWordAttr.get_query_results_num(instance.keyword)
item_dict["type_flag"] = get_tips_word_type(instance.name) item_dict["type_flag"] = get_tips_word_type(instance.keyword)
item_dict["offline_score"] = 0.0 item_dict["offline_score"] = 0.0
item_dict["tips_name_type"] = 4 item_dict["tips_name_type"] = 4
ret_list.append(item_dict) ret_list.append(item_dict)
suggest_list = get_tips_suggest_list(instance.name) suggest_list = get_tips_suggest_list(instance.keyword)
return (item_dict, suggest_list) return (item_dict, suggest_list)
except: except:
...@@ -66,7 +66,8 @@ class WordResemble(object): ...@@ -66,7 +66,8 @@ class WordResemble(object):
@classmethod @classmethod
def get_all_data_name_mapping_results_to_redis(cls, instance): def get_all_data_name_mapping_results_to_redis(cls, instance):
try: try:
total_count = 0
instance.name = instance.keyword
# 获取百科的 # 获取百科的
ItemWikiTransfer.get_wiki_data_name_mapping_results_to_redis(instance) ItemWikiTransfer.get_wiki_data_name_mapping_results_to_redis(instance)
...@@ -87,6 +88,7 @@ class WordResemble(object): ...@@ -87,6 +88,7 @@ class WordResemble(object):
try: try:
tips_num_redis_key_prefix = "search_tips:tips_mapping_num" tips_num_redis_key_prefix = "search_tips:tips_mapping_num"
tag_name = instance.name.strip() tag_name = instance.name.strip()
q = dict() q = dict()
if tag_name: if tag_name:
...@@ -128,11 +130,12 @@ class WordResemble(object): ...@@ -128,11 +130,12 @@ class WordResemble(object):
redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {} redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {}
total_count = doctor_results total_count = doctor_results
if 's' in redis_val_dict:
total_count += int(redis_val_dict['s']) if 't' in redis_val_dict:
total_count += int(redis_val_dict['t'])
redis_val_dict['t'] = total_count redis_val_dict['t'] = total_count
redis_val_dict['s'] = doctor_results redis_val_dict['r'] = doctor_results
redis_client.hset(tips_num_redis_key_prefix, tag_name, json.dumps(redis_val_dict)) redis_client.hset(tips_num_redis_key_prefix, tag_name, json.dumps(redis_val_dict))
except: except:
......
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