Как получить результаты, соответствующие любым терминам, используя PostGres SearchQuery в Django 3
Я использую SearchQuery и Search Vector в Django 3 для поиска статей, которые находятся в базе данных PostGres. Предположим, что в моей базе данных есть пять статей, озаглавленных следующим образом:
- Eating salmon reduces risk of heart attacks
- How to avoid the flu
- Healthy hearts and Cheerios
- Salmon and cancer
- Staying warm with scarves
Если я введу запрос: "лосось для профилактики сердечных заболеваний", я ожидаю получить результаты поиска в следующем порядке: 1 (потому что появляются и "лосось", и "сердце"), 4, 3 (хотя меня не волнует, занимает ли 4 место выше, чем 3, пока они оба появляются), и я ожидал бы, что 2 и 5 не появятся вообще. Но при использовании следующего кода результаты не появляются. Результаты появятся только для 1, если я наберу "salmon heart", но даже 1 не появляется, если я добавляю любые слова, которые не встречаются в заголовке (т.е. "salmon heart blah blah"). Как я могу изменить код, чтобы результаты поиска соответствовали моим ожиданиям, изложенным выше?
search_query = "salmon to prevent heart disease"
vector = SearchVector('title')
query = SearchQuery(search_query, search_type='websearch')
search_results = Article.objects.annotate(search=vector).filter(search=query)