Django全文搜索多个单词

时间:2018-06-17 03:34:46

标签: python django postgresql

据我所知,这不是一个复杂的问题。

我知道在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')

?还是需要比这更复杂?

2 个答案:

答案 0 :(得分:1)

要使用Django执行全文搜索,您必须使用GiN indexSearchVector进行组合。
 这是我在某处使用的full working example。它也适用于查询中的2个单词,并在3个字段中搜索它们。

答案 1 :(得分:0)

您可以在SearchQuery中使用多个字词。如果您不需要通过术语的逻辑组合进行搜索,您甚至可以摆脱SearchQuery:

Entry.objects.annotate(
     search=SearchVector('body_text'),
).filter(search="Multiple words query")