Я использую простой поиск LIKE на моем веб-сайте Django, и сейчас я использую следующий код:
from django.db.models import Q
posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))
Где запрос
представляет собой строку. В результате получается SQL-оператор LIKE
, который работает нормально. Теперь я также хотел бы разбить свой поисковый запрос на термины или слова:
words = query.split(' ')
Итак words
теперь содержит список слов, и я хотел бы получить оператор SQL, подобный:
SELECT ... FROM foo WHERE `title` ILIKE '%word1%' OR `title` ILIKE '%word2%'
OR `content` ILIKE '%word1%' OR `content` ILIKE '%word2%'
И в случае, если слов больше, чем два, я бы хотел, чтобы оператор увеличивал список всех записей по каждому слово.
Есть идеи? Спасибо!