Используя Django-HayStack, как я могу выполнить поиск с только частичными условиями?
-
25-09-2019 - |
Вопрос
У меня есть индекс поиска сена / ксапан для django.contrib.auth.models.User
. Отказ Шаблон просто
{{object.get_full_name}}
Как я намерен для пользователя ввести имя и иметь возможность искать его.
Моя проблема в том, если я ищу, скажем, Sri
(Мое полное имя) Я придумал результатом для объекта пользователя, относящегося к моему имени. Тем не менее, если я ищу Sri Ragh
- То есть мое полное имя и часть моей фамилии, я не получаю результатов.
Как я могу установить HayStack up, чтобы я мог получить подходящие результаты для частичных запросов? (Я, по сути, хочу, чтобы это искать *Sri Ragh*
, но я не знаю, действительно ли подстановочные знаки на самом деле сделают трюк или как их реализовать).
Это мой поисковый запрос:
results = SearchQuerySet().filter(content='Sri Ragh')
Решение
Я использую, чтобы иметь аналогичную проблему, как обходной путь или, может быть, исправление, вы можете изменить поиск запроса
results = SearchQuerySet().filter(content__startswith='Sri Ragh')
Выпуск в том, что Django HayStack не реализует все линго из поисковых систем. Конечно, вы можете сделать это.
results = SearchQuerySet().raw_search('READ THE SEARCH ENGINE QUERY SYNTAX FOR GET WILDCARD LOOKUPS')
Как говорит Django-Haystack, это не портативно.
Другие советы
Вы можете использовать Icontains или StartSwith.
Будьте осторожны с этим, если запрос является примером «R», это принесет вам все объекты «модели», которые имеют «R» в своем содержании.
Model.objects.filter(content__icontains=query)
Model.objects.filter(content__startswith=query)
Посмотрите документация