Skip to content

Commit 8602956

Browse files
committed
feat: 优化 suggest_search 推荐词
1 parent cefd547 commit 8602956

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

djangoblog/elasticsearch_backend.py

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -54,19 +54,22 @@ def clear(self, models=None, commit=True):
5454
self.remove(None)
5555

5656
@staticmethod
57-
def get_suggestion(body: str):
58-
"""获取建议 keyword """
57+
def get_suggestion(query: str) -> str:
58+
"""获取推荐词, 如果没有找到添加原搜索词"""
59+
5960
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'}) \
6263
.execute()
6364

6465
keywords = []
6566
for suggest in search.suggest.suggest_search:
6667
if suggest["options"]:
6768
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)
7073

7174
@log_query
7275
def search(self, query_string, **kwargs):
@@ -75,9 +78,8 @@ def search(self, query_string, **kwargs):
7578
start_offset = kwargs.get('start_offset')
7679
end_offset = kwargs.get('end_offset')
7780

78-
# 搜索建议
79-
is_suggest = getattr(self, "is_suggest", None)
80-
if is_suggest is not False:
81+
# 推荐词搜索
82+
if getattr(self, "is_suggest", None):
8183
suggestion = self.get_suggestion(query_string)
8284
else:
8385
suggestion = query_string
@@ -171,10 +173,7 @@ class ElasticSearchModelSearchForm(ModelSearchForm):
171173

172174
def search(self):
173175
# 是否建议搜索
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"
178177
sqs = super().search()
179178
return sqs
180179

0 commit comments

Comments
 (0)