summaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorAleksandar Trifunovic <akstrfn@gmail.com>2018-06-24 14:22:16 +0200
committerJelle van der Waa <jelle@vdwaa.nl>2018-07-13 22:20:53 +0200
commitc96b2b1b0aa722482705e2851d6dfe32288620de (patch)
tree06cf86d3254c8a8aa5a5dc2f6a117b3cf81b1fac /packages
parent2a8f534f52749ea626b60a12fe6b81d3b90238e3 (diff)
downloadarchweb-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.py8
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