【发布时间】:2018-09-26 18:54:26
【问题描述】:
我正在尝试在 postgres 的多个列中搜索值列表(通过 django)。我能够使用 SearchQuery 和 SearchVector,如果其中一个搜索值匹配一个完整的单词,这将非常有用。我希望使用 icontains 以便在搜索中也可以使用部分字符串。这可能吗,如果可以的话,有人可以指出我正确的方向。下面是我的方法的一个示例。
示例数据:
Superhero.objects.create(superhero='Batman', publisher='DC Comics', alter_ego="Bruce Wayne")
Superhero.objects.create(superhero='Hulk', publisher='Marvel Comics', alter_ego="Bruce Banner")
Django 过滤器:
from django.contrib.postgres.search import SearchQuery, SearchVector
query = SearchQuery('man') | SearchQuery('Bruce')
vector = SearchVector('superhero', 'alter_ego', 'publisher')
self.queryset = self.queryset.annotate(search=vector).filter(search=query)
这将返回 Hulk 记录,但我希望我能以某种方式使用“icontains”,以便在搜索“man”时也会返回蝙蝠侠记录。任何帮助表示赞赏!
【问题讨论】:
标签: python django postgresql