From f917c0dc5324faabb9fee8bb391b573d711edc5a Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Thu, 9 Nov 2023 22:50:05 +0000 Subject: [PATCH] Make field_name_with_boost a property of the Field object rather than having a get_boosted_fields helper function --- wagtail/search/backends/elasticsearch6.py | 26 +++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/wagtail/search/backends/elasticsearch6.py b/wagtail/search/backends/elasticsearch6.py index 4115edbe26..6031555327 100644 --- a/wagtail/search/backends/elasticsearch6.py +++ b/wagtail/search/backends/elasticsearch6.py @@ -16,6 +16,13 @@ class Field: self.field_name = field_name self.boost = boost + @property + def field_name_with_boost(self): + if self.boost == 1: + return self.field_name + else: + return f"{self.field_name}^{self.boost}" + class Elasticsearch6Mapping(Elasticsearch5Mapping): all_field_name = "_all_text" @@ -98,17 +105,6 @@ class Elasticsearch6SearchQueryCompiler(Elasticsearch5SearchQueryCompiler): for boost in unique_boosts ] - def get_boosted_fields(self, fields): - boosted_fields = [] - if not isinstance(fields, list): - fields = [fields] - for field in fields: - if field.boost != 1: - boosted_fields.append(f"{field.field_name}^{field.boost}") - else: - boosted_fields.append(field.field_name) - return boosted_fields - def _compile_fuzzy_query(self, query, fields): if len(fields) == 1: return { @@ -122,18 +118,20 @@ class Elasticsearch6SearchQueryCompiler(Elasticsearch5SearchQueryCompiler): return { "multi_match": { "query": query.query_string, - "fields": self.get_boosted_fields(fields), + "fields": [field.field_name_with_boost for field in fields], "fuzziness": "AUTO", } } def _compile_plaintext_query(self, query, fields, boost=1.0): return super()._compile_plaintext_query( - query, self.get_boosted_fields(fields), boost + query, [field.field_name_with_boost for field in fields], boost ) def _compile_phrase_query(self, query, fields): - return super()._compile_phrase_query(query, self.get_boosted_fields(fields)) + return super()._compile_phrase_query( + query, [field.field_name_with_boost for field in fields] + ) def get_inner_query(self): if self.remapped_fields: