Я хотел бы реализовать функцию поиска в приложении для ведения блогов в django. Статус-кво состоит в том, что у меня есть список строк, предоставленных пользователем, и набор запросов сужается каждой строкой, чтобы включить только те объекты, которые соответствуют этой строке.
См:
if request.method == "POST":
form = SearchForm(request.POST)
if form.is_valid():
posts = Post.objects.all()
for string in form.cleaned_data['query'].split():
posts = posts.filter(
Q(title__icontains=string) |
Q(text__icontains=string) |
Q(tags__name__exact=string)
)
return archive_index(request, queryset=posts, date_field='date')
Теперь, что если я не хочу объединять каждое слово, которое ищется с помощью логического И, но с логическим ИЛИ? Как бы я это сделал? Есть ли способ сделать это с помощью собственных методов Queryset в Django, или нужно вернуться к необработанным SQL-запросам?
В целом, это правильное решение для полнотекстового поиска, подобного этому, или вы бы порекомендовали использовать поисковую систему, например Solr, Whoosh или Xapian. Каковы их преимущества?