据我所知,这不是一个复杂的问题。
我知道在MongoDB中你可以输入一个字符串,它会自动标记并使用该字符串作为查询执行全文搜索。
然而,在Django中,我还没有找到类似的功能,我见过的所有例子都做了类似的事情:
from django.contrib.postgres.search import SearchQuery
query = SearchQuery('foo')
人们只使用一个单词是因为 SearchQuery只能使用一个单词吗?
我想知道的是如何使用多个单词执行全文搜索。它就像做
一样简单from django.contrib.postgres.search import SearchQuery
query = SearchQuery('foo and also bar')
?还是需要比这更复杂?
答案 0 :(得分:1)
要使用Django执行全文搜索,您必须使用GiN index
和SearchVector
进行组合。
这是我在某处使用的full working example。它也适用于查询中的2个单词,并在3个字段中搜索它们。
答案 1 :(得分:0)
您可以在SearchQuery
中使用多个字词。如果您不需要通过术语的逻辑组合进行搜索,您甚至可以摆脱SearchQuery:
Entry.objects.annotate(
search=SearchVector('body_text'),
).filter(search="Multiple words query")