From fc8dc8de6d47ee0be4ea2f91b7ff644776b9b6c0 Mon Sep 17 00:00:00 2001 From: Stefan Wehrmeyer Date: Mon, 21 Mar 2022 19:19:13 +0100 Subject: [PATCH] Make search vector building more robust --- froide_govplan/models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/froide_govplan/models.py b/froide_govplan/models.py index 40a9d28..ea481d0 100644 --- a/froide_govplan/models.py +++ b/froide_govplan/models.py @@ -112,10 +112,14 @@ class GovernmentPlanManager(models.Manager): def search(self, query, qs=None): if not qs: qs = self.get_queryset() + query = query.strip() if not query: return qs search_queries = [] for q in query.split(): + q = q.strip() + if not q: + continue if WORD_RE.match(q): sq = SearchQuery( "{}:*".format(q), search_type="raw", config=self.SEARCH_LANG @@ -124,7 +128,10 @@ class GovernmentPlanManager(models.Manager): sq = SearchQuery(q, search_type="plain", config=self.SEARCH_LANG) search_queries.append(sq) + if not search_queries: + return qs search_query = functools.reduce(lambda a, b: a & b, search_queries) + search_vector = self.get_search_vector() qs = ( qs.annotate(rank=SearchRank(search_vector, search_query))