Я успешно использую полнотекстовый поиск Django . Тем не менее, я хотел бы сопоставить цитируемые фразы и не вижу, как это сделать.
Например, у меня есть модель:
from django.contrib.postgres.indexes import GinIndex
from django.contrib.postgres.search import SearchVectorField
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=100)
body = models.TextField()
search_document = SearchVectorField(null=True)
class Meta:
indexes = [
GinIndex(fields=['search_document'])
]
И я сделал это:
from django.contrib.postgres.search import SearchVector
Article.objects.update(
search_document=(
SearchVector('title', weight='A') \
+ SearchVector('body', weight='B')
)
)
Но, если я найду:
"вкусные яблоки" рыба
как это:
from django.contrib.postgres.search import SearchQuery
qs = Article(
search_document=SearchQuery('"tasty apples" fish'))
тогда результаты будут такими же, как если бы я искал:
вкусные яблочные рыбки
т.е. статьи, которые содержат эти три слова, а не статьи, которые содержат фразу "вкусные яблоки" и слово "рыба".
Можно ли искать подобные фразы?