Recherches spécifiques à PostgreSQL

Unaccent

La recherche unaccent permet d’effectuer des recherches qui ne dépendent pas des différences d’accents en utilisant une extension PostgreSQL dédiée.

Cette recherche est implémentée en utilisant Transform, elle peut donc être suivie par d’autres fonctions de recherche. Pour l’utiliser, vous devez ajouter 'django.contrib.postgres' dans votre réglage INSTALLED_APPS et activer l’extension unaccent dans PostgreSQL. L’opération de migration UnaccentExtension est disponible si vous souhaitez procéder à cette activation au moyen des migrations.

La recherche unaccent peut être utilisée avec les champs CharField et TextField:

>>> City.objects.filter(name__unaccent="México")
['<City: Mexico>']

>>> User.objects.filter(first_name__unaccent__startswith="Jerem")
['<User: Jeremy>', '<User: Jérémy>', '<User: Jérémie>', '<User: Jeremie>']

Avertissement

Les recherches unaccent fonctionnent très bien dans la plupart des cas. Cependant, les requêtes utilisant ce filtre effectuent généralement des parcours complets des tables, ce qui peut être lent pour les grandes tables. Dans ces situations, il peut valoir la peine d’utiliser les outils dédiés d’indexation plein texte.

Back to Top