@@ -54,19 +54,22 @@ def clear(self, models=None, commit=True):
54
54
self .remove (None )
55
55
56
56
@staticmethod
57
- def get_suggestion (body : str ):
58
- """获取建议 keyword """
57
+ def get_suggestion (query : str ) -> str :
58
+ """获取推荐词, 如果没有找到添加原搜索词"""
59
+
59
60
search = ArticleDocument .search () \
60
- .query ("match" , body = body ) \
61
- .suggest ('suggest_search' , body , term = {'field' : 'body' }) \
61
+ .query ("match" , body = query ) \
62
+ .suggest ('suggest_search' , query , term = {'field' : 'body' }) \
62
63
.execute ()
63
64
64
65
keywords = []
65
66
for suggest in search .suggest .suggest_search :
66
67
if suggest ["options" ]:
67
68
keywords .append (suggest ["options" ][0 ]["text" ])
68
-
69
- return ' ' .join (keywords ) if keywords else body
69
+ else :
70
+ keywords .append (suggest ["text" ])
71
+
72
+ return ' ' .join (keywords )
70
73
71
74
@log_query
72
75
def search (self , query_string , ** kwargs ):
@@ -75,9 +78,8 @@ def search(self, query_string, **kwargs):
75
78
start_offset = kwargs .get ('start_offset' )
76
79
end_offset = kwargs .get ('end_offset' )
77
80
78
- # 搜索建议
79
- is_suggest = getattr (self , "is_suggest" , None )
80
- if is_suggest is not False :
81
+ # 推荐词搜索
82
+ if getattr (self , "is_suggest" , None ):
81
83
suggestion = self .get_suggestion (query_string )
82
84
else :
83
85
suggestion = query_string
@@ -171,10 +173,7 @@ class ElasticSearchModelSearchForm(ModelSearchForm):
171
173
172
174
def search (self ):
173
175
# 是否建议搜索
174
- self .searchqueryset .query .backend .is_suggest = True
175
- if self .data .get ("is_suggest" ) == "no" :
176
- self .searchqueryset .query .backend .is_suggest = False
177
-
176
+ self .searchqueryset .query .backend .is_suggest = self .data .get ("is_suggest" ) != "no"
178
177
sqs = super ().search ()
179
178
return sqs
180
179
0 commit comments