Django全文搜索不匹配部分单词

Bry*_*man 7 python django search full-text-search psql

我正在使用 Django 全文搜索跨多个字段进行搜索,但在使用部分字符串进行搜索时遇到问题。

假设我们有一个名为“Sample Report”的报告对象。

vector = SearchVector('name') + SearchVector('author__username')

search = SearchQuery('Sa')

Report.objects.exclude(visible=False).annotate(search=vector).filter(search=search)
Run Code Online (Sandbox Code Playgroud)

下面的 QuerySet 是空的,但如果我包含完整的单词“Sample”,那么报告将出现在 QuerySet 中。

无论如何要使用 icontains 或前缀与 django 全文搜索?

san*_*pim 6

这适用于 Django 1.11:

tools = Tool.objects.annotate(
    search=SearchVector('name', 'description', 'expert__user__username'),
).filter(search__icontains=form.cleaned_data['query_string'])
Run Code Online (Sandbox Code Playgroud)

注意icontains过滤器中的 。

  • 我收到数据库错误“错误:函数替换(tsquery,未知,未知)在字符 1603 处不存在”提示:没有函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。当我尝试使用“SearchQuery”进行搜索查询时。 (8认同)