Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
S
search_tips
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
rank
search_tips
Commits
4e4ea9ed
Commit
4e4ea9ed
authored
Aug 28, 2020
by
李小芳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
同步新的表
parent
7c9b6c68
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
150 additions
and
7 deletions
+150
-7
app_conf.xml
app_conf.xml
+2
-1
es.py
libs/es.py
+1
-0
log_settings.py
search_tips/log_settings.py
+2
-1
routers.py
search_tips/routers.py
+24
-0
words_utils.py
trans2es/commons/words_utils.py
+20
-2
strategy_search_word.py
trans2es/models/strategy_search_word.py
+13
-0
type_info.py
trans2es/type_info.py
+33
-0
itemwiki_transfer.py
trans2es/utils/itemwiki_transfer.py
+1
-2
search_query.py
trans2es/utils/search_query.py
+54
-1
No files found.
app_conf.xml
View file @
4e4ea9ed
<?xml version="1.0" encoding="utf-8"?>
<gm_rpcd_config>
<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=
"service_list"
>
<element
value=
"search_tips"
/>
...
...
libs/es.py
View file @
4e4ea9ed
...
...
@@ -198,6 +198,7 @@ class ESPerform(object):
if
not
batch_search
:
res
=
es_cli
.
search
(
index
=
official_index_name
,
doc_type
=
doc_type
,
body
=
query_body
,
from_
=
offset
,
size
=
size
)
logging
.
info
(
"duan add official_index_name res:
%
s"
%
res
)
if
is_suggest_request
:
return
res
...
...
search_tips/log_settings.py
View file @
4e4ea9ed
...
...
@@ -5,7 +5,8 @@
import
os
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
(
level
=
logging
.
INFO
,
...
...
search_tips/routers.py
View file @
4e4ea9ed
...
...
@@ -22,3 +22,26 @@ class DorisRouter(object):
if
app_label
==
'doris'
:
return
db
==
'doris'
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
trans2es/commons/words_utils.py
View file @
4e4ea9ed
...
...
@@ -5,7 +5,7 @@ import traceback
import
json
from
libs.cache
import
redis_client
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
import
base64
from
gm_types.doris
import
MIND_TYPE
...
...
@@ -129,6 +129,15 @@ class QueryWordAttr(object):
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
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
def
get_hot_search_query_word_weight_v1
(
cls
,
name
):
...
...
@@ -205,7 +214,17 @@ class QueryWordAttr(object):
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
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
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
...
...
@@ -217,7 +236,6 @@ class QueryWordAttr(object):
total_num
=
0
data
=
StrategyHistoryQueryWords
.
objects
.
filter
(
keyword
=
name
)
.
values
(
"answer_num"
,
"tractate_num"
,
"diary_num"
)
.
first
()
if
data
:
for
value
in
data
.
values
():
total_num
+=
value
...
...
trans2es/models/strategy_search_word.py
View file @
4e4ea9ed
...
...
@@ -19,3 +19,16 @@ class StrategyHistoryQueryWords(models.Model):
answer_num
=
models
.
IntegerField
(
verbose_name
=
u'回答搜索结果次数'
)
tractate_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'搜索次数'
)
trans2es/type_info.py
View file @
4e4ea9ed
...
...
@@ -377,6 +377,28 @@ def get_type_info_map():
round_insert_chunk_size
=
5
,
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
(
name
=
'suggest-v1'
,
type
=
'search_query-v1'
,
# tag
...
...
@@ -581,6 +603,17 @@ def tips_attr_sync_to_redis_type_info_map():
bulk_insert_chunk_size
=
100
,
round_insert_chunk_size
=
5
,
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
,
)
]
...
...
trans2es/utils/itemwiki_transfer.py
View file @
4e4ea9ed
...
...
@@ -20,7 +20,6 @@ class ItemWikiTransfer(object):
def
get_wiki_data_name_mapping_results_to_redis
(
cls
,
instance
):
try
:
wiki_name
=
instance
.
name
.
strip
()
QueryWordAttr
.
save_query_to_redis
(
wiki_name
,
from_type
=
"wiki"
)
if
wiki_name
:
multi_fields
=
{
'name'
:
1
,
...
...
@@ -60,7 +59,7 @@ class ItemWikiTransfer(object):
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
,
offset
=
0
,
size
=
0
)
print
(
"result_dict"
,
result_dict
)
doctor_results
=
result_dict
[
"total_count"
]
redis_key_prefix
=
"search_tips:tips_mapping_num"
...
...
trans2es/utils/search_query.py
View file @
4e4ea9ed
...
...
@@ -6,7 +6,11 @@ from libs.tools import getMd5Digest
from
trans2es.commons.words_utils
import
QueryWordAttr
,
get_tips_word_type
from
trans2es.commons.commons
import
get_tips_suggest_list_v1
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
):
...
...
@@ -44,6 +48,33 @@ class SearchWord(object):
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
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
def
get_search_query_v1
(
self
,
instance
):
...
...
@@ -75,3 +106,25 @@ class SearchWord(object):
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
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
())
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment