From aba420742322850531940f3c6f056089c6264996 Mon Sep 17 00:00:00 2001 From: Skia Date: Wed, 5 Dec 2018 14:59:14 +0100 Subject: [PATCH] core: improve search index with 'autocomplete' --- core/search_indexes.py | 1 + core/templates/search/indexes/core/user_auto.txt | 3 +++ core/views/site.py | 2 +- 3 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 core/templates/search/indexes/core/user_auto.txt diff --git a/core/search_indexes.py b/core/search_indexes.py index 916cf909..f157cddb 100644 --- a/core/search_indexes.py +++ b/core/search_indexes.py @@ -31,6 +31,7 @@ from core.models import User class UserIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) + auto = indexes.EdgeNgramField(use_template=True) def get_model(self): return User diff --git a/core/templates/search/indexes/core/user_auto.txt b/core/templates/search/indexes/core/user_auto.txt new file mode 100644 index 00000000..4167b506 --- /dev/null +++ b/core/templates/search/indexes/core/user_auto.txt @@ -0,0 +1,3 @@ +{{ object.first_name }} +{{ object.last_name }} +{{ object.nick_name }} diff --git a/core/views/site.py b/core/views/site.py index 282156d6..8eedcf67 100644 --- a/core/views/site.py +++ b/core/views/site.py @@ -71,7 +71,7 @@ def notification(request, notif_id): def search_user(query, as_json=False): - res = SearchQuerySet().models(User).filter_or(text__contains=query)[:20] + res = SearchQuerySet().models(User).autocomplete(auto=query)[:20] return [r.object for r in res]