Я хотел бы реализовать функцию поиска в приложении для ведения блога 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')
А что, если бы я не хотел объединять каждое слово, которое ищется с помощью логического И, но с помощью логического ИЛИ? Как бы я это сделал? Есть ли способ сделать это с помощью собственных методов Django Queryset или нужно возвращаться к необработанным SQL-запросам?
В общем, это подходящее решение для выполнения такого рода полнотекстового поиска или вы порекомендуете использовать поисковую систему, такую как Solr, Whoosh или Xapian. В чем их преимущества?