class SearchVector(*expressions, config=None, weight=None)
[source]
Searching against a single field is great but rather limiting. The Entry
instances we’re searching belong to a Blog
, which has a tagline
field. To query against both fields, use a SearchVector
:
>>> from django.contrib.postgres.search import SearchVector >>> Entry.objects.annotate( ... search=SearchVector('body_text', 'blog__tagline'), ... ).filter(search='Cheese') [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
The arguments to SearchVector
can be any Expression
or the name of a field. Multiple arguments will be concatenated together using a space so that the search document includes them all.
SearchVector
objects can be combined together, allowing you to reuse them. For example:
>>> Entry.objects.annotate( ... search=SearchVector('body_text') + SearchVector('blog__tagline'), ... ).filter(search='Cheese') [<Entry: Cheese on Toast recipes>, <Entry: Pizza Recipes>]
See Changing the search configuration and Weighting queries for an explanation of the config
and weight
parameters.
Please login to continue.