如何在Django 1.10中将"unaccent"与全文搜索结合使用? [英] How use `unaccent` with full text search in django 1.10?

查看:73
本文介绍了如何在Django 1.10中将"unaccent"与全文搜索结合使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们正在开发一个项目,并且正在使用 Django 1.10a1 ,我们正在Django上使用django全文搜索,但是我们需要使用unaccent.

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.

所以,我有以下代码:

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

当我们尝试在 search 之后添加 unaccent 字词时,该查询无法正常工作.我们如何才能使django全文搜索与postun uncent一起使用?

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?

推荐答案

unaccent 扩展名安装到您的数据库中:

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 );

unaccent 词典插入新的搜索配置:

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;

在Django查询中使用此配置:

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')))

这篇关于如何在Django 1.10中将"unaccent"与全文搜索结合使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆