python - Django SearchVector 不适用于包含空格的搜索查询
问题描述
我有一个name
我试图用 SearchVector 注释的字段。如果我不在搜索字符串中添加空格但如果我添加空格则返回空列表,它工作正常。相同的字符串适用于常规filter
查询集。
>>> r = Resource.objects.filter(name__icontains='LAKSHMI NURSING')
>>> r
<QuerySet [<Resource: LAKSHMI NURSING HOME>]>
>>>
使用不带空格字符串的搜索向量
>>> r = Resource.objects.annotate(
... search=SearchVector('name', 'type')
... ).filter(search__icontains='LAKSHMI')
>>> r
<QuerySet [<Resource: LAKSHMI NURSING HOME>]>
>>>
使用空白:
>>> r = Resource.objects.annotate(
... search=SearchVector('name', 'type')
... ).filter(search__icontains='LAKSHMI NURSING')
>>> r
<QuerySet []>
>>>
解决方案
如果您尝试,结果是什么:
r = Resource.objects.annotate(
... search=SearchVector('name', 'type')
... ).filter(search='LAKSHMI NURSING')
没有图标?在文档中,我没有看到带有search__icontains
.
另一种选择可能是使用SearchQuery
:
from django.contrib.postgres.search import SearchVector, SearchQuery
queryset = queryset.annotate(
search=SearchVector(*args)
).filter(search=SearchQuery(search_text))
推荐阅读
- c# - Revit API - 网格和级别 - GetDatumExtentTypeInView - 网格问题
- reactjs - 如何在创建反应应用程序中进行应用程序版本控制?
- visual-studio-2019 - 在 Visual Studio 中添加新的 Azure IoT Edge 模块时出现“系统找不到指定的文件”
- c++ - 接受模板作为函数参数
- json - 当 JSON 具有比预期更多的属性时,解码成圆形时失败
- c++ - 为 C++ 配置 Visual Studio 代码
- c++ - 在 C++ 中对数组使用阶乘函数
- c++ - 打印类类型属性 ( cout << class.property )
- vb.net - 为什么图形表单在我的 VB.net 窗口表单应用程序中没有完成显示其所有 UI?
- credit-card - 我可以通过 google pay 为我正在开发的 sass 设置定期付款吗?