问题
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?
回答1:
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')))
来源:https://stackoverflow.com/questions/37818492/how-use-unaccent-with-full-text-search-in-django-1-10