我正在尝试在 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')
queryset = queryset.annotate(search=vector).filter(search=query)
这将返回绿巨人记录,但我希望我可以以某种方式使用像“图标”这样在搜索“人”时也会返回 bat 侠记录。感谢您的帮助!
最佳答案
您可以将 icontains
应用于过滤器,例如:
queryset = queryset.annotate(search=vector).filter(search__icontains=query)
关于python - 使用 icontains 的 Django SearchVector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49867384/