首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合__unaccent和__search查询的Django

结合__unaccent和__search查询的Django
EN

Stack Overflow用户
提问于 2017-02-23 16:50:17
回答 1查看 2K关注 0票数 3

因此,我试图在相同的模型过滤器中使用__unaccent__search,但是当这样做时,我会收到一个错误。我试图用“口袋妖怪”这个词来做一个过滤器,这个词和“口袋妖怪”相匹配(注意"é")

Game.objects.filter(title__unaccent__icontains="Pokemon")工作正常,但是当我使用Game.objects.filter(title__unaccent__search="Pokemon)时,我会得到以下错误:

ProgrammingError at /autocomplete-游戏/函数取消重音(Tsquery) 不存在第1行:...ALESCE(UNACCENT("main_game"."title"),‘’) @@ (UNACCENT(p.^提示:没有任何函数与给定的名称和参数类型匹配。您可能需要添加显式类型转换。

我正在使用:

Python 3.5

Django 1.10

PostgreSQL (安装了非重音扩展)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-27 13:50:10

这样做的方法是在数据库中定义自定义搜索配置,如下所示:

代码语言:javascript
复制
CREATE TEXT SEARCH CONFIGURATION unaccent ( COPY = french );
ALTER TEXT SEARCH CONFIGURATION unaccent ALTER MAPPING FOR hword, hword_part, word WITH unaccent, simple;

我不是postgres专家,但这种配置适合我。有关更多详细信息,请查看如下教程:http://www.nomadblue.com/blog/django/from-like-to-full-text-search-part-ii/

而不是在Django中使用这个:

代码语言:javascript
复制
from django.contrib.postgres.search import SearchVector, SearchQuery

Game.objects.annotate(unaccent_title=SearchVector('title', config='unaccent')).filter(unaccent_title=SearchQuery('Pokemon', config='unaccent'))
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42421706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档