使用 icontains 的 Django SearchVector [英] Django SearchVector using icontains
问题描述
我正在尝试在 postgres 的多列中搜索值列表(通过 django).我能够使用 SearchQuery 和 SearchVector,如果其中一个搜索值匹配一个完整的词,这会很好用.我希望使用 icontains 以便在搜索中也可以使用部分字符串.这可能吗,如果可以的话,有人可以指出我正确的方向.下面是我的方法的一个例子.
I am trying to search for a list of values in multiple columns in postgres (via django). I was able to use SearchQuery and SearchVector and this works great if one of the search values matches a full word. I was hoping to use icontains so that partial strings could also be used in the search. Is this possible and if so could someone point me in the right direction. Here is an example of my approach below.
示例数据:
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 过滤器:
Django filter:
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' 时也将返回 Batman 记录.任何帮助表示赞赏!
This would return the Hulk record but I am hoping I can somehow use like 'icontains' so that when searching for 'man' the Batman record would also be returned. Any help is appreciated!
推荐答案
因此 SearchQuery 和 SearchVector 是 Django 全文搜索功能的一部分,看起来您无法使用这些功能实现我想要做的事情.感谢 Julian Phalip 在这里的方法,我采取了不同的方法.. https://www.julienphalip.com/blog/adding-search-to-a-django-site-in-a-snap/
So SearchQuery and SearchVector are a part of Django's Full Text searching functionality and it doesnt look like you can achieve what I was wanting to do with these functions. I have taken a different approach thanks to Julian Phalip's approach here.. https://www.julienphalip.com/blog/adding-search-to-a-django-site-in-a-snap/
这篇关于使用 icontains 的 Django SearchVector的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!