Python Django组合uuu uncent和uuuu搜索查找
因此,我尝试在同一个模型过滤器中使用Python Django组合uuu uncent和uuuu搜索查找,python,django,postgresql,orm,Python,Django,Postgresql,Orm,因此,我尝试在同一个模型过滤器中使用\uu uncent和\uu search,但执行此操作时收到一个错误。我试图用“口袋妖怪”这个词来匹配“口袋妖怪”这个词(注意“口袋妖怪”) Game.objects.filter(title\uu uncent\uu icontains=“Pokemon”)工作正常,但是当我使用Game.objects.filter(title\uu uncent\uu search=“Pokemon)时,我得到以下错误: 编程错误/自动完成游戏/功能未完成(tsquer
\uu uncent
和\uu search
,但执行此操作时收到一个错误。我试图用“口袋妖怪”这个词来匹配“口袋妖怪”这个词(注意“口袋妖怪”)
Game.objects.filter(title\uu uncent\uu icontains=“Pokemon”)
工作正常,但是当我使用Game.objects.filter(title\uu uncent\uu search=“Pokemon)
时,我得到以下错误:
编程错误/自动完成游戏/功能未完成(tsquery)
不存在第1行:…ALESCE(未登录(“主游戏”“标题”),“”)
@@(不一致的)。。。
^提示:没有与给定名称和参数类型匹配的函数。您可能需要
添加显式类型转换
我正在使用:
Python 3.5
Django 1.10
PostgreSQL(安装了uncent扩展)实现这一点的方法是在数据库中定义自定义搜索配置,如:
CREATE TEXT SEARCH CONFIGURATION unaccent ( COPY = french );
ALTER TEXT SEARCH CONFIGURATION unaccent ALTER MAPPING FOR hword, hword_part, word WITH unaccent, simple;
我不是postgres专家,但此配置适合我。有关更多详细信息,请参阅以下教程:
然后在Django中使用:
from django.contrib.postgres.search import SearchVector, SearchQuery
Game.objects.annotate(unaccent_title=SearchVector('title', config='unaccent')).filter(unaccent_title=SearchQuery('Pokemon', config='unaccent'))
看起来
\u search
并没有被弃用,事实上它支持PostgreSQL,正如这里的文档所示:-知道为什么文档会自相矛盾吗?哦,我明白了,看起来他们已经弃用mysql search,并在同一版本中引入了postgres one:)。我会看看这个,如果我发现了什么,会告诉你的。这就解释了!如果你能给我一个定制解决方案,我将非常感激,并很高兴奖励赏金。非常感谢!我对它做了一些修改,但现在它工作得很好:)