Answer a question

We are working on a project and we are using Django 1.10a1, we're using django full text search with PostgreSQL but we need to use unaccent.

So, I have this code:

        search = 'Car'
        query_set = Article.objects.annotate(
            search=SearchVector(
                'content',
                'name'
                )
            ).filter(
            search__unaccent=search
        )

When we tried adding unaccent word after search the query doesn't work. How can we get django full text search to work with postgress unaccent?

Answers

Install the unaccent extension into your database:

mydb=# CREATE EXTENSION unaccent;

Create a new search configuration, based on an other one:

mydb=# CREATE TEXT SEARCH CONFIGURATION french_unaccent( COPY = french );

Insert the unaccent dictionary into your new search configuration:

mydb=# ALTER TEXT SEARCH CONFIGURATION french_unaccent
    ALTER MAPPING FOR hword, hword_part, word
    WITH unaccent, french_stem;

Use this configuration in your Django query :

search = 'Car'
query_set = Article.objects.annotate(
                search=SearchVector('content','name', config='french_unaccent')
            ).filter(search=SearchQuery(search, config='french_unaccent')))
Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐