Commit 4e4ea9ed authored by 李小芳's avatar 李小芳

同步新的表

parent 7c9b6c68
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<gm_rpcd_config> <gm_rpcd_config>
<info config_name="app" version="1.0"/> <info config_name="app" version="1.0"/>
<config name="log_dir" value="/data/log/search_tips/app"/> <!-- <config name="log_dir" value="/data/log/search_tips/app"/>-->
<config name="log_dir" value="/Users/edz/Desktop/project/log/doris"/>
<config name="application_name" value="search_tips"/> <config name="application_name" value="search_tips"/>
<config name="service_list"> <config name="service_list">
<element value="search_tips"/> <element value="search_tips"/>
......
...@@ -198,6 +198,7 @@ class ESPerform(object): ...@@ -198,6 +198,7 @@ class ESPerform(object):
if not batch_search: if not batch_search:
res = es_cli.search(index=official_index_name, doc_type=doc_type, body=query_body, from_=offset, res = es_cli.search(index=official_index_name, doc_type=doc_type, body=query_body, from_=offset,
size=size) size=size)
logging.info("duan add official_index_name res:%s" % res)
if is_suggest_request: if is_suggest_request:
return res return res
......
...@@ -5,7 +5,8 @@ ...@@ -5,7 +5,8 @@
import os import os
import logging import logging
LOG_DIR = '/data/log/search_tips/app/' # LOG_DIR = '/data/log/search_tips/app/'
LOG_DIR = '/Users/edz/Desktop/project/log/search_tips'
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
......
...@@ -22,3 +22,26 @@ class DorisRouter(object): ...@@ -22,3 +22,26 @@ class DorisRouter(object):
if app_label == 'doris': if app_label == 'doris':
return db == 'doris' return db == 'doris'
return None return None
class JerryRouter(object):
def db_for_read(self, model, **hints):
if model._meta.app_label == "jerry_tidb":
return 'jerry_tidb'
return None
def db_for_write(self, model, **hints):
if model._meta.app_label == "jerry_tidb":
return 'jerry_tidb'
return None
def allow_relation(self, obj1, obj2, **hints):
if obj1._meta.app_label == 'jerry_tidb' or \
obj2._meta.app_label == 'jerry_tidb':
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
if app_label == 'jerry_tidb':
return db == 'jerry_tidb'
return None
\ No newline at end of file
...@@ -5,7 +5,7 @@ import traceback ...@@ -5,7 +5,7 @@ import traceback
import json import json
from libs.cache import redis_client from libs.cache import redis_client
from trans2es.models.query_word_conversion import TagConversion, DoctorConversion, HospitalConversion from trans2es.models.query_word_conversion import TagConversion, DoctorConversion, HospitalConversion
from trans2es.models.strategy_search_word import StrategyHistoryQueryWords from trans2es.models.strategy_search_word import StrategyHistoryQueryWords,StrategyHistoryQueryUnique
from libs.cache import redis_client from libs.cache import redis_client
import base64 import base64
from gm_types.doris import MIND_TYPE from gm_types.doris import MIND_TYPE
...@@ -129,6 +129,15 @@ class QueryWordAttr(object): ...@@ -129,6 +129,15 @@ class QueryWordAttr(object):
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return 0.0 return 0.0
@classmethod
def get_hot_search_unique_word_weight(cls, name):
try:
search_info = StrategyHistoryQueryUnique.objects.filter(keyword=name).first()
weight = int(0.0001 * search_info.uv)
return weight
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return 0.0
@classmethod @classmethod
def get_hot_search_query_word_weight_v1(cls, name): def get_hot_search_query_word_weight_v1(cls, name):
...@@ -205,7 +214,17 @@ class QueryWordAttr(object): ...@@ -205,7 +214,17 @@ class QueryWordAttr(object):
redis_data = redis_client.hget(cls.tips_num_redis_key_prefix, name) redis_data = redis_client.hget(cls.tips_num_redis_key_prefix, 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 {}
results_num = redis_val_dict['t'] if 't' in redis_val_dict else 0 results_num = redis_val_dict['t'] if 't' in redis_val_dict else 0
return results_num
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return 0
@classmethod
def get_hot_search_unique_num(cls, name):
try:
redis_data = redis_client.hget(cls.tips_num_redis_key_prefix, name)
redis_val_dict = json.loads(str(redis_data, encoding="utf-8")) if redis_data else {}
results_num = redis_val_dict['t'] if 't' in redis_val_dict else 0
return results_num return results_num
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
...@@ -217,7 +236,6 @@ class QueryWordAttr(object): ...@@ -217,7 +236,6 @@ class QueryWordAttr(object):
total_num = 0 total_num = 0
data = StrategyHistoryQueryWords.objects.filter(keyword=name).values("answer_num", "tractate_num", data = StrategyHistoryQueryWords.objects.filter(keyword=name).values("answer_num", "tractate_num",
"diary_num").first() "diary_num").first()
if data: if data:
for value in data.values(): for value in data.values():
total_num += value total_num += value
......
...@@ -19,3 +19,16 @@ class StrategyHistoryQueryWords(models.Model): ...@@ -19,3 +19,16 @@ class StrategyHistoryQueryWords(models.Model):
answer_num = models.IntegerField(verbose_name=u'回答搜索结果次数') answer_num = models.IntegerField(verbose_name=u'回答搜索结果次数')
tractate_num = models.IntegerField(verbose_name=u'帖子搜索结果次数') tractate_num = models.IntegerField(verbose_name=u'帖子搜索结果次数')
diary_num = models.IntegerField(verbose_name=u'日记搜索结果次数') diary_num = models.IntegerField(verbose_name=u'日记搜索结果次数')
class StrategyHistoryQueryUnique(models.Model):
"""
历史搜索词
"""
class Meta:
app_label = 'jerry_tidb'
db_table = 'strategy_history_query_unique'
keyword = models.CharField(u'项目介绍', max_length=48)
is_delete = models.IntegerField(u'是否上线', default=True)
uv = models.IntegerField(verbose_name=u'搜索次数')
...@@ -377,6 +377,28 @@ def get_type_info_map(): ...@@ -377,6 +377,28 @@ def get_type_info_map():
round_insert_chunk_size=5, round_insert_chunk_size=5,
round_insert_period=2 round_insert_period=2
), ),
TypeInfo(
name='suggest',
type='search_unique', # tag
model=strategy_search_word.StrategyHistoryQueryUnique,
query_deferred=lambda: strategy_search_word.StrategyHistoryQueryUnique.objects.using(
settings.JERRY_DB_NAME).all().query,
get_data_func=SearchWord.get_search_unique,
bulk_insert_chunk_size=100,
round_insert_chunk_size=5,
round_insert_period=2
),
TypeInfo(
name='suggest-v1',
type='search_unique-v1', # tag
model=strategy_search_word.StrategyHistoryQueryUnique,
query_deferred=lambda: strategy_search_word.StrategyHistoryQueryUnique.objects.using(
settings.JERRY_DB_NAME).all().query,
get_data_func=SearchWord.get_search_unique,
bulk_insert_chunk_size=100,
round_insert_chunk_size=5,
round_insert_period=2
),
TypeInfo( TypeInfo(
name='suggest-v1', name='suggest-v1',
type='search_query-v1', # tag type='search_query-v1', # tag
...@@ -581,6 +603,17 @@ def tips_attr_sync_to_redis_type_info_map(): ...@@ -581,6 +603,17 @@ def tips_attr_sync_to_redis_type_info_map():
bulk_insert_chunk_size=100, bulk_insert_chunk_size=100,
round_insert_chunk_size=5, round_insert_chunk_size=5,
round_insert_period=2, round_insert_period=2,
),
TypeInfo(
name='suggest',
type='query_unique_results_num',
model=strategy_search_word.StrategyHistoryQueryUnique,
query_deferred=lambda: strategy_search_word.StrategyHistoryQueryUnique.objects.using("jerry_tidb").filter(
is_delete=False).query,
get_data_func=SearchWord.set_data_to_redis,
bulk_insert_chunk_size=100,
round_insert_chunk_size=5,
round_insert_period=2,
) )
] ]
......
...@@ -20,7 +20,6 @@ class ItemWikiTransfer(object): ...@@ -20,7 +20,6 @@ class ItemWikiTransfer(object):
def get_wiki_data_name_mapping_results_to_redis(cls, instance): def get_wiki_data_name_mapping_results_to_redis(cls, instance):
try: try:
wiki_name = instance.name.strip() wiki_name = instance.name.strip()
QueryWordAttr.save_query_to_redis(wiki_name, from_type="wiki")
if wiki_name: if wiki_name:
multi_fields = { multi_fields = {
'name': 1, 'name': 1,
...@@ -60,7 +59,7 @@ class ItemWikiTransfer(object): ...@@ -60,7 +59,7 @@ class ItemWikiTransfer(object):
result_dict = ESPerform.get_search_results(ESPerform.get_cli(settings.GM_ORI_ES_INFO_LIST), result_dict = ESPerform.get_search_results(ESPerform.get_cli(settings.GM_ORI_ES_INFO_LIST),
sub_index_name="newwiki", doc_type="newwiki", query_body=q, sub_index_name="newwiki", doc_type="newwiki", query_body=q,
offset=0, size=0) offset=0, size=0)
print("result_dict", result_dict)
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"
......
...@@ -6,7 +6,11 @@ from libs.tools import getMd5Digest ...@@ -6,7 +6,11 @@ from libs.tools import getMd5Digest
from trans2es.commons.words_utils import QueryWordAttr, get_tips_word_type from trans2es.commons.words_utils import QueryWordAttr, get_tips_word_type
from trans2es.commons.commons import get_tips_suggest_list_v1 from trans2es.commons.commons import get_tips_suggest_list_v1
from trans2es.models.strategy_search_word import StrategyHistoryQueryWords from trans2es.models.strategy_search_word import StrategyHistoryQueryWords
from trans2es.utils.itemwiki_transfer import ItemWikiTransfer
from trans2es.utils.tag_transfer import TagTransfer
from trans2es.utils.doctor_transfer import DoctorTransfer
from trans2es.models import wordresemble
from trans2es.utils.wordresemble import WordResemble
class SearchWord(object): class SearchWord(object):
...@@ -44,6 +48,33 @@ class SearchWord(object): ...@@ -44,6 +48,33 @@ class SearchWord(object):
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return ([], []) return ([], [])
@classmethod
def get_search_unique(self, instance):
try:
ret_list = list()
item_dict = dict()
suggest_list = list()
sub_query = re.sub('\W+', '', instance.keyword)
keyword = str(sub_query).lower()
ret_bol = QueryWordAttr.save_query_to_redis(query=sub_query)
if ret_bol:
item_dict["id"] = "search_unique_" + str(instance.id)
item_dict["ori_name"] = keyword
is_online = False if instance.is_delete else True
item_dict["is_online"] = is_online
item_dict["order_weight"] = int(0.01 * instance.uv)
item_dict["results_num"] = QueryWordAttr.get_hot_search_unique_num(keyword)
item_dict["type_flag"] = "unknown"
item_dict["offline_score"] = 0.0
item_dict["tips_name_type"] = 5
ret_list.append(item_dict)
suggest_list = get_tips_suggest_list_v1(keyword)
return (item_dict, suggest_list)
except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return ([], [])
@classmethod @classmethod
def get_search_query_v1(self, instance): def get_search_query_v1(self, instance):
...@@ -75,3 +106,25 @@ class SearchWord(object): ...@@ -75,3 +106,25 @@ class SearchWord(object):
except: except:
logging.error("catch exception,err_msg:%s" % traceback.format_exc()) logging.error("catch exception,err_msg:%s" % traceback.format_exc())
return ([], []) return ([], [])
@classmethod
def set_data_to_redis(cls, instance):
try:
total_count = 0
instance.name = instance.keyword
print("-------")
print(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())
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