Я реализую простой поиск LIKE на своем веб-сайте Django, и сейчас я использую следующий код:
from django.db.models import Q
posts = Post.objects.filter(Q(title__icontains=query)|Q(content__icontains=query))
Где 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%'
И в случае, если есть более двух слов, я бы хотел, чтобы выражение увеличивалось с перечислением всех записей по каждому слову.
Есть идеи?Спасибо!