Make search vector building more robust
This commit is contained in:
parent
07d5903da7
commit
fc8dc8de6d
1 changed files with 7 additions and 0 deletions
|
|
@ -112,10 +112,14 @@ class GovernmentPlanManager(models.Manager):
|
||||||
def search(self, query, qs=None):
|
def search(self, query, qs=None):
|
||||||
if not qs:
|
if not qs:
|
||||||
qs = self.get_queryset()
|
qs = self.get_queryset()
|
||||||
|
query = query.strip()
|
||||||
if not query:
|
if not query:
|
||||||
return qs
|
return qs
|
||||||
search_queries = []
|
search_queries = []
|
||||||
for q in query.split():
|
for q in query.split():
|
||||||
|
q = q.strip()
|
||||||
|
if not q:
|
||||||
|
continue
|
||||||
if WORD_RE.match(q):
|
if WORD_RE.match(q):
|
||||||
sq = SearchQuery(
|
sq = SearchQuery(
|
||||||
"{}:*".format(q), search_type="raw", config=self.SEARCH_LANG
|
"{}:*".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)
|
sq = SearchQuery(q, search_type="plain", config=self.SEARCH_LANG)
|
||||||
search_queries.append(sq)
|
search_queries.append(sq)
|
||||||
|
|
||||||
|
if not search_queries:
|
||||||
|
return qs
|
||||||
search_query = functools.reduce(lambda a, b: a & b, search_queries)
|
search_query = functools.reduce(lambda a, b: a & b, search_queries)
|
||||||
|
|
||||||
search_vector = self.get_search_vector()
|
search_vector = self.get_search_vector()
|
||||||
qs = (
|
qs = (
|
||||||
qs.annotate(rank=SearchRank(search_vector, search_query))
|
qs.annotate(rank=SearchRank(search_vector, search_query))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue