Python Django多词全文搜索
据我所知,这不是一个真正复杂的问题 我知道在MongoDB中,您可以输入一个字符串,它会自动标记并使用该字符串作为查询执行全文搜索 然而,在Django中,我还没有找到类似的功能,我所看到的所有示例都按照以下思路做了一些工作:Python Django多词全文搜索,python,django,postgresql,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')
人们只使用一个词的原因是因为SearchQuery只能使用一个词吗
我想知道的是如何使用多个单词进行全文搜索。这和做一件事一样容易吗
from django.contrib.postgres.search import SearchQuery
query = SearchQuery('foo and also bar')
??或者它需要比这更复杂吗?您可以在
SearchQuery
中使用多个单词。如果不需要按术语的逻辑组合进行搜索,您甚至可以取消SearchQuery:
Entry.objects.annotate(
search=SearchVector('body_text'),
).filter(search="Multiple words query")
要使用Django执行全文搜索,您必须使用
GiN index
与SearchVector
相结合这是我在某处用过的东西。它也适用于查询中的2+个单词,并在3个字段中搜索它们。这是我最初的想法,但由于某些原因,我在查询中包含的术语没有被使用。例如,如果我有一个字段值为“Blah building,college”的文档,并且使用一个查询“Blah building”,则没有匹配。@Quontas尝试在postgresql中直接执行相同的操作。搜索时遇到的问题是,当我有一个向量“foo and bar”和一个查询“foo but baz”时,查询无法按预期运行. 在我看来,包含向量的文档应该在搜索查询时找到,但它不会出现。不,不应该,你的向量不包含单词“but”。我明白了。是否有任何方法可以让我的查询行为,以便根据向量和查询中匹配的单词数对结果进行排序,即使查询中有无关的单词?我认为使用纯Django no。至少我没有设法解决这个问题。可以看看搜索引擎,比如Haystack+Whoosh(用于开头)或Solr,或者ElasticSearch(更复杂)。是的。但如果有一天你能找到解决这个问题的方法,请告诉我,我的一个项目也有同样的问题:)