diff options
author | Aleksandar Trifunovic <akstrfn@gmail.com> | 2018-06-24 14:22:16 +0200 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2018-07-13 22:20:53 +0200 |
commit | c96b2b1b0aa722482705e2851d6dfe32288620de (patch) | |
tree | 06cf86d3254c8a8aa5a5dc2f6a117b3cf81b1fac /packages | |
parent | 2a8f534f52749ea626b60a12fe6b81d3b90238e3 (diff) | |
download | archweb-c96b2b1b0aa722482705e2851d6dfe32288620de.tar.gz archweb-c96b2b1b0aa722482705e2851d6dfe32288620de.zip |
Widen the search results
Previously the search that had a space in it yields no results if the
match is not exact e.g. ``archlinux keyring`` yields no results even
though there is a package ``archlinux-keyring``. This patch modifies the
query to search for ``archlinux AND keyring``, both for package names
and package descriptions. This leads to more search results.
Diffstat (limited to 'packages')
-rw-r--r-- | packages/views/search.py | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/packages/views/search.py b/packages/views/search.py index 264e7bf6..ffb8f23b 100644 --- a/packages/views/search.py +++ b/packages/views/search.py @@ -1,4 +1,5 @@ import json +import operator from django import forms from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger @@ -98,8 +99,11 @@ def parse_form(form, packages): if form.cleaned_data['q']: query = form.cleaned_data['q'] - q = Q(pkgname__icontains=query) | Q(pkgdesc__icontains=query) - packages = packages.filter(q) + q_pkgname = reduce(operator.__and__, + (Q(pkgname__icontains=q) for q in query.split())) + q_pkgdesc = reduce(operator.__and__, + (Q(pkgdesc__icontains=q) for q in query.split())) + packages = packages.filter(q_pkgname | q_pkgdesc) return packages |