Django:使用SearchVector进行搜索不会返回任何结果

时间:2019-04-10 12:48:26

标签: django postgresql search

我正在尝试通过搜索多个字段来获取搜索结果。如果我使用django.db.models.Q-它可以正常工作。但是,如果我使用django.contrib.postgres.search.SearchVector,则会得到错误的结果。

我的requirements.txt文件:

django==2.2.0
psycopg2==2.8

models.py文件的相关部分:

class Post(models.Model):
    title = models.CharField(max_length=250)
    body = models.TextField()

我的代码:

>>> from blog.models import Post
>>> from django.db.models import Q
>>> from django.contrib.postgres.search import SearchVector
>>> Post.objects.filter(Q(title__icontains='is') | Q(body__icontains='is')).count()
10
>>> Post.objects.annotate(search=SearchVector('title','body')).filter(search='is').count()
0

我不明白为什么SearchVector没得到结果。

尝试这样做:

>>> Post.objects.annotate(search=SearchVector('title', 'body')).filter(search__icontains='is').count()
6

更好,但仍然小于Q。

0 个答案:

没有答案