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