Django SearchQuery и SearchRank не находят результатов при совпадении 1 слова в запросе из 2 слов

У меня есть список статей, и я хочу выполнить поиск, используя функции PostgreSQL SearchQuery и SearchRank. Вот псевдокод:

from django.contrib.postgres.search import SearchVector, SearchQuery, SearchRank
from .models import Article

vector = SearchVector('title', weight='A')
query = SearchQuery(value)
results = Article.objects.annotate(rank=SearchRank(vector, query, cover_density=True).order_by('-rank')

 for r in results:
    print(r.rank, r.name)

Например, если я ищу только "компьютер", вот что я получу:

1 The most powerful computer in the world    
0 This man built a plane for his family in his garden
0 Dogs can sense earthquakes before they happen

Как видите, все работает, как и ожидалось, статья, содержащая в заголовке слово "компьютер", получает ранг 1.

Но теперь, если я буду искать что-то с двумя словами "быстрый компьютер", все результаты покажут ранг 0.

0 Dogs can sense earthquakes before they happen
0 The most powerful computer in the world    
0 This man built a plane for his family in his garden

Согласно документации "SearchQuery":

Если search_type - 'plain', что является значением по умолчанию, термины рассматриваются как отдельные ключевые слова

.

Почему до сих пор не подобрана статья с "компьютером" в заголовке?

Я также попробовал без использования "cover_density=True" и получил похожие результаты.

Как сделать так, чтобы результаты все еще соответствовали моему поисковому запросу, даже если совпадает только слово?

Видели ли вы эту часть документации? Вы пробовали это сделать?

enter image description here

https://docs.djangoproject.com/en/4.1/ref/contrib/postgres/search/#searchquery

Так что, возможно, вы можете сделать:

query = (SearchQuery('fast') | SearchQuery('computer'))
Вернуться на верх