Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django组合uuu uncent和uuuu搜索查找_Python_Django_Postgresql_Orm - Fatal编程技术网

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:)。我会看看这个,如果我发现了什么,会告诉你的。这就解释了!如果你能给我一个定制解决方案,我将非常感激,并很高兴奖励赏金。非常感谢!我对它做了一些修改,但现在它工作得很好:)