How use `unaccent` with full text search in django 1.10?
·
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')))
更多推荐
所有评论(0)