Django全文搜索:表示不存在uncent

Django全文搜索:表示不存在uncent,django,postgresql,full-text-search,Django,Postgresql,Full Text Search,我正在使用Django 2.0和postgresql 9.6 我已在我的应用程序(文章)中创建并清空迁移文件,其中包含以下内容,以添加uncent和trigram扩展名 # Generated by Django 2.0 on 2018-02-06 22:34 from django.db import migrations from django.contrib.postgres.operations import UnaccentExtension, TrigramExtension

我正在使用Django 2.0和postgresql 9.6

我已在我的应用程序(文章)中创建并清空迁移文件,其中包含以下内容,以添加uncent和trigram扩展名

# Generated by Django 2.0 on 2018-02-06 22:34

from django.db import migrations
from django.contrib.postgres.operations import UnaccentExtension, TrigramExtension


class Migration(migrations.Migration):

    dependencies = [
        ('articles', '0012_auto_20180205_2234'),
    ]

    operations = [
        UnaccentExtension(),
        TrigramExtension()
    ]
然后,我尝试运行以下查询:

from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector
vector = SearchVector('title',config='unaccent', weight='A') + SearchVector('description',config='unaccent', weight='B')
query = SearchQuery('india')
Article.objects.annotate(rank=SearchRank(vector, query)).filter(rank__gte=0.3).order_by('rank')

ProgrammingError: text search configuration "unaccent" does not exist
LINE 1: ...rticle"."qa_bool", ts_rank((setweight(to_tsvector('unaccent'...

我认为您的迁移文件尚未在数据库中创建指定的PostgreSQL扩展名

可能您的数据库用户没有超级用户权限

Django文档在第节中对此进行了解释:

创建扩展需要具有超级用户权限的数据库用户。如果Django数据库用户没有超级用户权限,则必须使用具有相应权限的用户在Django迁移之外创建扩展。在这种情况下,连接到Django数据库并运行查询
CREATE EXTENSION IF NOT EXISTS hstore

更新
我再次阅读了您的代码,我认为问题在于
config='uncent'
您不能将
uncent
用作配置,但您必须传递一种语言(es:'意大利语')或'simple'

我使用的用户具有超级用户权限。我检查过了。请务必尝试文档“如果不存在则创建扩展”中建议的查询那么我应该在哪里提到uncenter呢?试着更新你的问题,解释你查询的预期结果:根据你给出的答案,我应该创建一个uncented字典吗。