Используя django-haystack, как мне выполнить поиск только с частичными терминами? - PullRequest
2 голосов
/ 05 января 2011

У меня есть поисковый индекс Haystack / xapian для django.contrib.auth.models.User.Шаблон просто

{{object.get_full_name}}

, так как я собираюсь ввести имя пользователя и найти его.

Моя проблема заключается в следующем: если я ищу, скажем, Sri (мое полное имя) Я придумаю результат для объекта пользователя, относящегося к моему имени.Однако, если я ищу Sri Ragh, то есть мое полное имя и часть моей фамилии, я не получаю результатов.

Как настроить Haystack так, чтобы я мог получить соответствующие результаты для частичногозапросы?(По сути, я хочу, чтобы он выполнил поиск *Sri Ragh*, но я не знаю, действительно ли подстановочные знаки могли бы сработать, или как их реализовать).

Это мой поисковый запрос:

results = SearchQuerySet().filter(content='Sri Ragh')

Ответы [ 2 ]

5 голосов
/ 14 января 2011

Я использую, чтобы иметь подобную проблему, в качестве обходного пути или, возможно, исправления, вы можете изменить поиск запроса

results = SearchQuerySet().filter(content__startswith='Sri Ragh')

Проблема в том, что django-haystack не реализует все лингво из поисковых систем. Конечно, вы можете сделать это.

results = SearchQuerySet().raw_search('READ THE SEARCH ENGINE QUERY SYNTAX FOR GET WILDCARD LOOKUPS')

Как говорит Джанго-Хейстек, это не переносимо.

0 голосов
/ 29 марта 2015

Вы можете использовать иконки или начинается с.

Будьте осторожны с этим, если запрос, например, 'r', это принесет вам все сущности 'Model', которые имеют в своем содержании 'r'.

Model.objects.filter(content__icontains=query)

Model.objects.filter(content__startswith=query)

Посмотрите документацию

...