У меня есть поле автозаполнения, которое должно возвращать результаты с входными словами. Однако входные слова могут быть частичными и расположены в другом порядке или местах.Поиск столбца для нескольких слов с использованием Django queryset
Пример:
Значения в столбце базы данных (MySQL) -
Expected quarterly sales
Sales preceding quarter
Profit preceding quarter
Sales 12 months
Теперь, если пользователь quarter sales
тогда он должен вернуть оба первых двух результатов.
Я пробовал:
column__icontains = term #searches only '%quarter sales% and thus gives no results
column__search = term #searches any of complete words and also returns last result
**{'ratio_name__icontains':each_term for each_term in term.split()} #this searches only sales as it is the last keyword argument
Любой трюк с помощью регулярных выражений или может быть что-то я отсутствующий встроенные в Django, поскольку это общая закономерность?
Возможно, я ошибаюсь, но это больше похоже на проблему с полным текстом поиска. Вы должны взглянуть на полнотекстовый поиск MySQL и посмотреть, соответствует ли он вашим потребностям. –
Вы пытались использовать какую-либо поисковую систему? Проверьте haystack (http://haystacksearch.org/). Он поддерживает whoosh, который очень прост в использовании в начале и многое другое – szaman
Привет, Manoj, я действительно пробовал полнотекстовый поиск, но он возвращает результаты, которые имеют ЛЮБОЕ из приведенных выше слов. Например, он также возвращает 12 месяцев продаж (чего не следует). – Pratyush