使用icontains的Django搜索向量

2024-05-19 22:10:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在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过滤器:

^{pr2}$

这将返回绿巨人的记录,但我希望我可以不知何故使用“icontains”,这样当搜索“man”时,蝙蝠侠记录也会被返回。感谢任何帮助!在


Tags: django方法列表objectscreate记录postgrespublisher
2条回答

您可以将icontains应用于筛选器,如下所示:

self.queryset = self.queryset.annotate(search=vector).filter(search__icontains=query)

所以SearchQuery和SearchVector是Django全文搜索功能的一部分,看起来你不能用这些函数实现我想要的功能。多亏了朱利安·法利普的做法,我采取了不同的方法。。https://www.julienphalip.com/blog/adding-search-to-a-django-site-in-a-snap/

相关问题 更多 >