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
ca2335a2
Commit
ca2335a2
authored
Mar 20, 2020
by
lixiaofang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add
parent
4875eb96
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
105 additions
and
0 deletions
+105
-0
auto_tips.py
search/utils/auto_tips.py
+105
-0
No files found.
search/utils/auto_tips.py
View file @
ca2335a2
...
...
@@ -295,3 +295,108 @@ def recommed_service_category_device_id(device_id):
return
1
except
:
return
1
def
get_suggest_tips_v1
(
query
,
lat
,
lng
,
offset
=
0
,
size
=
50
,
device_id
=
None
):
"""
50
%
前段强加权后根据tab转化率和词频进行排序 索引 suggest gray_number=1 尾号["0", "1", "2", "3", "c", "d", "e", "f"]
:param query:
:param lat:
:param lng:
:param offset:
:param size:
:param device_id:
:return:
"""
try
:
###在原来的逻辑上加两层灰度
have_read_tips_set
,
ret_list
,
result_dict
=
get_query_by_es
(
query
=
str
(
query
)
.
lower
(),
lat
=
lat
,
lng
=
lng
,
offset
=
offset
,
size
=
size
,
highlight_query
=
query
,
have_read_tips_set
=
set
(),
sub_index_name
=
"suggest"
)
if
len
(
ret_list
)
>=
size
:
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
[:
size
]
else
:
query_ret_list
=
[]
wordresemble_ret_list
=
[]
value_data
=
[]
QUERY_KEY
=
"query:search_tip"
query_base64
=
base64
.
b64encode
(
query
.
encode
(
'utf8'
))
.
decode
(
'utf8'
)
if
redis_client
.
hget
(
QUERY_KEY
,
query_base64
)
is
not
None
:
value_data
=
json
.
loads
(
str
(
redis_client
.
hget
(
QUERY_KEY
,
query_base64
),
encoding
=
'utf-8'
))
if
len
(
value_data
)
>
0
:
for
i
in
value_data
:
key
=
list
(
i
.
keys
())[
0
]
ori_name
=
str
(
base64
.
b64decode
(
key
),
"utf-8"
)
if
ori_name
not
in
have_read_tips_set
:
have_read_tips_set
.
add
(
ori_name
)
result_num
=
i
.
get
(
key
,
0
)
describe
=
"约"
+
str
(
result_num
)
+
"个结果"
if
result_num
else
""
logging
.
info
(
"get result_num:
%
s"
%
result_num
)
highlight_marks
=
u'<ems>
%
s</ems>'
%
query
# highlight_name = ori_name.replace(query, highlight_marks)
highlight_name
=
set_highlihgt
(
query
,
ori_name
)
if
ori_name
==
query
:
query_ret_list
.
append
(
{
"results_num"
:
result_num
,
"ori_name"
:
ori_name
,
"id"
:
None
,
"is_online"
:
True
,
"offline_score"
:
0
,
"type_flag"
:
get_tips_word_type
(
ori_name
),
"highlight_name"
:
highlight_name
,
"describe"
:
describe
})
else
:
wordresemble_ret_list
.
append
(
{
"results_num"
:
result_num
,
"ori_name"
:
ori_name
,
"id"
:
None
,
"is_online"
:
True
,
"offline_score"
:
0
,
"type_flag"
:
get_tips_word_type
(
ori_name
),
"highlight_name"
:
highlight_name
,
"describe"
:
describe
})
ret_list
.
extend
(
query_ret_list
)
ret_list
.
extend
(
wordresemble_ret_list
)
###繁体字删掉,把搜索结果加到简体字上边
fanti_query
=
[{
'痩脸针'
:
"瘦脸针"
}]
for
item
in
ret_list
:
result_num
=
[[
item
[
'results_num'
],
list
(
ret
.
values
())[
0
],
list
(
ret
.
keys
())[
0
]]
for
ret
in
fanti_query
if
list
(
ret
.
keys
())[
0
]
==
item
[
'ori_name'
]]
if
len
(
result_num
)
>
0
:
ret_list
.
remove
(
item
)
for
item
in
ret_list
:
if
item
[
'ori_name'
]
==
result_num
[
0
][
1
]:
item
[
'results_num'
]
+=
result_num
[
0
][
0
]
####
if
len
(
ret_list
)
>=
size
:
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
[
0
:
size
]
elif
len
(
ret_list
)
<
size
and
len
(
ret_list
)
>
3
:
logging
.
info
(
"user_search_query:
%
s,get_sug_num:
%
s"
%
(
query
,
len
(
ret_list
)))
return
ret_list
else
:
##无结果的时候把汉字转成拼音再搜一次
ss
=
lazy_pinyin
(
query
)
str_query
=
''
for
item
in
ss
:
str_query
+=
str
(
item
)
have_read_tips_set
,
pinyin_ret_list
,
result_dict
=
get_query_by_es
(
query
=
str_query
,
lat
=
lat
,
lng
=
lng
,
offset
=
offset
,
size
=
size
-
len
(
ret_list
),
highlight_query
=
query
,
have_read_tips_set
=
have_read_tips_set
,
sub_index_name
=
"suggest"
)
ret_list
.
extend
(
pinyin_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
()
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