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
6e5fce4e
Commit
6e5fce4e
authored
Feb 12, 2020
by
李小芳
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'hot_search_query' into 'master'
Hot search query See merge request
!48
parents
d8dba5ae
0a1c912e
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
134 additions
and
10 deletions
+134
-10
auto_tips.py
search/utils/auto_tips.py
+6
-4
routers.py
search_tips/routers.py
+24
-0
commons.py
trans2es/commons/commons.py
+0
-1
words_utils.py
trans2es/commons/words_utils.py
+26
-0
trans2es_mapping2es.py
trans2es/management/commands/trans2es_mapping2es.py
+0
-3
strategy_search_word.py
trans2es/models/strategy_search_word.py
+21
-0
type_info.py
trans2es/type_info.py
+26
-2
search_query.py
trans2es/utils/search_query.py
+31
-0
No files found.
search/utils/auto_tips.py
View file @
6e5fce4e
...
...
@@ -64,7 +64,8 @@ def get_suggest_tips(query, lat, lng, offset=0, size=50, device_id=None):
ret_list
=
equal_data
if
len
(
ret_list
)
>=
50
:
return
ret_list
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
[:
50
]
else
:
query_ret_list
=
[]
...
...
@@ -118,9 +119,11 @@ def get_suggest_tips(query, lat, lng, offset=0, size=50, device_id=None):
####
if
len
(
ret_list
)
>=
50
:
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
[
0
:
50
]
elif
len
(
ret_list
)
<
50
and
len
(
ret_list
)
>
3
:
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
else
:
...
...
@@ -137,13 +140,13 @@ def get_suggest_tips(query, lat, lng, offset=0, size=50, device_id=None):
have_read_tips_set
=
have_read_tips_set
,
sub_index_name
=
sub_index_name
)
ret_list
.
extend
(
pinyin_ret_list
)
logging
.
info
(
"get ret_list:
%
s"
%
ret_list
)
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
logging
.
info
(
"error_user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
0
))
return
list
()
...
...
@@ -201,7 +204,6 @@ def get_query_by_es(query='', lat=0, lng=0, size=0, offset=0, highlight_query=No
for
tips_item
in
result_dict
[
"suggest"
][
"tips-suggest"
]:
for
hit_item
in
tips_item
[
"options"
]:
logging
.
info
(
"get hit_item:
%
s"
%
hit_item
)
if
hit_item
[
"_source"
][
"ori_name"
]
not
in
have_read_tips_set
:
have_read_tips_set
.
add
(
hit_item
[
"_source"
][
"ori_name"
])
highlight_marks
=
u'<ems>
%
s</ems>'
%
query
...
...
search_tips/routers.py
0 → 100644
View file @
6e5fce4e
class
DorisRouter
(
object
):
def
db_for_read
(
self
,
model
,
**
hints
):
if
model
.
_meta
.
app_label
==
"doris"
:
return
'doris'
return
None
def
db_for_write
(
self
,
model
,
**
hints
):
if
model
.
_meta
.
app_label
==
"doris"
:
return
'doris'
return
None
def
allow_relation
(
self
,
obj1
,
obj2
,
**
hints
):
if
obj1
.
_meta
.
app_label
==
'doris'
or
\
obj2
.
_meta
.
app_label
==
'doris'
:
return
True
return
None
def
allow_migrate
(
self
,
db
,
app_label
,
model_name
=
None
,
**
hints
):
if
app_label
==
'doris'
:
return
db
==
'doris'
return
None
trans2es/commons/commons.py
View file @
6e5fce4e
...
...
@@ -20,7 +20,6 @@ def uuid4():
def
get_tips_suggest_list
(
instance_cn_name
):
try
:
print
(
instance_cn_name
)
# ch_full_weight = 6.0 * 1000
# py_full_weight = 3.0 * 1000
full_weight
=
3.0
*
1000
...
...
trans2es/commons/words_utils.py
View file @
6e5fce4e
...
...
@@ -6,6 +6,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
class
TagTab
(
object
):
...
...
@@ -96,6 +97,17 @@ class QueryWordAttr(object):
doctab
=
DocTab
()
hostab
=
HosTab
()
@classmethod
def
get_hot_search_query_word_weight
(
cls
,
name
):
try
:
search_num
=
StrategyHistoryQueryWords
.
objects
.
filter
(
keyword
=
name
,
is_delete
=
0
)
.
values_list
(
"search_num"
,
flat
=
True
)
.
first
()
return
search_num
*
0.01
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
0.0
@classmethod
def
get_project_query_word_weight
(
cls
,
name
):
try
:
...
...
@@ -162,6 +174,20 @@ class QueryWordAttr(object):
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
0
@classmethod
def
get_search_query_results_num
(
cls
,
name
):
try
:
total_num
=
0
data
=
StrategyHistoryQueryWords
.
objects
.
filter
(
keyword
=
name
,
is_delete
=
0
)
.
values
(
"answer_num"
,
"tractate_num"
,
"diary_num"
)
.
first
()
for
value
in
data
.
values
():
total_num
+=
value
return
total_num
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
0
from
gm_rpcd.all
import
bind
from
libs.cache
import
redis_client
...
...
trans2es/management/commands/trans2es_mapping2es.py
View file @
6e5fce4e
...
...
@@ -33,11 +33,8 @@ class Command(BaseCommand):
try
:
es_cli
=
ESPerform
.
get_cli
()
type_name1
=
"suggest-v1"
type_name
=
"suggest"
if
len
(
options
[
"type"
]):
if
options
[
"type"
]
==
"all"
or
type_name
==
options
[
"type"
]
or
type_name1
==
options
[
"type"
]:
type_name
=
options
[
"type"
]
...
...
trans2es/models/strategy_search_word.py
0 → 100644
View file @
6e5fce4e
# coding=utf8
from
__future__
import
unicode_literals
,
absolute_import
,
print_function
from
django.db
import
models
from
django.conf
import
settings
class
StrategyHistoryQueryWords
(
models
.
Model
):
"""
历史搜索词
"""
class
Meta
:
app_label
=
'doris'
db_table
=
'strategy_history_query_words'
keyword
=
models
.
CharField
(
u'项目介绍'
,
max_length
=
48
)
is_delete
=
models
.
BooleanField
(
u'是否上线'
,
default
=
True
)
search_num
=
models
.
IntegerField
(
verbose_name
=
u'搜索次数'
)
answer_num
=
models
.
IntegerField
(
verbose_name
=
u'回答搜索结果次数'
)
tractate_num
=
models
.
IntegerField
(
verbose_name
=
u'帖子搜索结果次数'
)
diary_num
=
models
.
IntegerField
(
verbose_name
=
u'日记搜索结果次数'
)
trans2es/type_info.py
View file @
6e5fce4e
...
...
@@ -13,7 +13,8 @@ import elasticsearch.helpers
import
sys
import
copy
from
trans2es.models
import
doctor
,
itemwiki
,
collectwiki
,
brandwiki
,
productwiki
,
tag
,
wordresemble
from
trans2es.models
import
doctor
,
itemwiki
,
collectwiki
,
brandwiki
,
productwiki
,
tag
,
wordresemble
,
\
strategy_search_word
from
trans2es.utils.doctor_transfer
import
DoctorTransfer
,
DoctorTransferV1
from
trans2es.utils.hospital_transfer
import
HospitalTransfer
,
HospitalTransferV1
from
trans2es.utils.itemwiki_transfer
import
ItemWikiTransfer
,
ItemWikiTransferV1
...
...
@@ -22,6 +23,7 @@ from trans2es.utils.brandwiki_transfer import BrandWikiTransfer, BrandWikiTransf
from
trans2es.utils.productwiki_transfer
import
ProduceWikiTransfer
,
ProduceWikiTransferV1
from
trans2es.utils.tag_transfer
import
TagTransfer
,
TagTransferV1
from
trans2es.utils.wordresemble
import
WordResemble
,
WordResembleV1
from
trans2es.utils.search_query
import
SearchWord
from
libs.es
import
ESPerform
from
libs.tools
import
tzlc
,
getMd5Digest
from
trans2es.commons.words_utils
import
QueryWordAttr
...
...
@@ -139,7 +141,7 @@ class TypeInfo(object):
(
item_dict
,
suggest_list
)
=
data
if
item_dict
:
if
item_dict
[
"tips_name_type"
]
==
4
:
if
item_dict
[
"tips_name_type"
]
==
4
or
item_dict
[
"tips_name_type"
]
==
5
:
instance
.
name
=
instance
.
keyword
resemble_list
=
WordResemble
.
get_word_resemble_list
(
str
(
instance
.
name
))
...
...
@@ -366,6 +368,28 @@ def get_type_info_map():
round_insert_chunk_size
=
5
,
round_insert_period
=
2
,
),
TypeInfo
(
name
=
'suggest'
,
type
=
'search_query'
,
# tag
model
=
strategy_search_word
.
StrategyHistoryQueryWords
,
query_deferred
=
lambda
:
strategy_search_word
.
StrategyHistoryQueryWords
.
objects
.
using
(
settings
.
DORIS_DB_NAME
)
.
all
()
.
query
,
get_data_func
=
SearchWord
.
get_search_query
,
bulk_insert_chunk_size
=
100
,
round_insert_chunk_size
=
5
,
round_insert_period
=
2
),
TypeInfo
(
name
=
'suggest-v1'
,
type
=
'search_query-v1'
,
# tag
model
=
strategy_search_word
.
StrategyHistoryQueryWords
,
query_deferred
=
lambda
:
strategy_search_word
.
StrategyHistoryQueryWords
.
objects
.
using
(
settings
.
DORIS_DB_NAME
)
.
all
()
.
query
,
get_data_func
=
SearchWord
.
get_search_query
,
bulk_insert_chunk_size
=
100
,
round_insert_chunk_size
=
5
,
round_insert_period
=
2
),
TypeInfo
(
name
=
'suggest-v1'
,
type
=
'doctor_tips-v1'
,
# doctor
...
...
trans2es/utils/search_query.py
0 → 100644
View file @
6e5fce4e
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import
logging
import
traceback
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
class
SearchWord
(
object
):
@classmethod
def
get_search_query
(
self
,
instance
):
try
:
ret_list
=
list
()
item_dict
=
dict
()
item_dict
[
"id"
]
=
getMd5Digest
(
str
(
instance
.
keyword
))
item_dict
[
"ori_name"
]
=
instance
.
keyword
item_dict
[
"is_online"
]
=
False
if
instance
.
is_delete
else
True
item_dict
[
"order_weight"
]
=
QueryWordAttr
.
get_hot_search_query_word_weight
(
instance
.
keyword
)
item_dict
[
"results_num"
]
=
QueryWordAttr
.
get_search_query_results_num
(
instance
.
keyword
)
item_dict
[
"type_flag"
]
=
get_tips_word_type
(
instance
.
keyword
)
item_dict
[
"offline_score"
]
=
0.0
item_dict
[
"tips_name_type"
]
=
5
ret_list
.
append
(
item_dict
)
suggest_list
=
get_tips_suggest_list_v1
(
str
(
instance
.
keyword
)
.
lower
())
return
(
item_dict
,
suggest_list
)
except
:
logging
.
error
(
"catch exception,err_msg:
%
s"
%
traceback
.
format_exc
())
return
([],
[])
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