我们正在开发一个项目,我们正在使用Django 1.10a1
,我们正在使用带有PostgreSQL的django全文搜索,但我们需要使用unaccent。
所以,我有这段代码:
search = 'Car'
query_set = Article.objects.annotate(
search=SearchVector(
'content',
'name'
)
).filter(
search__unaccent=search
)
当我们尝试在unaccent
之后添加search
字词时,查询无效。
我们怎样才能让django全文搜索与postgress unaccent一起工作?
答案 0 :(得分:7)
将 unaccent 扩展名安装到您的数据库中:
mydb=# CREATE EXTENSION unaccent;
基于另一个创建新的搜索配置:
mydb=# CREATE TEXT SEARCH CONFIGURATION french_unaccent( COPY = french );
将 unaccent 字典插入新的搜索配置:
mydb=# ALTER TEXT SEARCH CONFIGURATION french_unaccent
ALTER MAPPING FOR hword, hword_part, word
WITH unaccent, french_stem;
在Django查询中使用此配置:
search = 'Car'
query_set = Article.objects.annotate(
search=SearchVector('content','name', config='french_unaccent')
).filter(search=SearchQuery(search, config='french_unaccent')))
答案 1 :(得分:0)
这对我来说很好:
query_set.annotate(col_lower=Unaccent(Lower(col_name)))
谢谢。