Development #34191
Ne pas tenir compte des accents dans la recherche sur le portail agents
0%
Description
Une demande émanant de Chambéry :
N'est-il pas possible de paramétrer le moteur de recherche pour qu'il ne prenne pas en compte les accents ?
Fichiers
Révisions associées
Historique
Mis à jour par Stéphane Laget il y a plus de 4 ans
et permettre également les recherches partielles (demandes de Vaulx-en-Velin et Chambéry)
Mis à jour par Frédéric Péters il y a plus de 4 ans
Une recherche partielle c'est une recherche qui retourne un résultat sur deux ? (i.e. qu'est-ce qui est entendu par là, exactement ?).
Mis à jour par Stéphane Laget il y a plus de 4 ans
- tu peux avoir des résultats qui correspondent à "déchets", "déchetterie" (tu cherches sur une partie du mot, c'est ce que je voulais dire avec "recherche partielle")
- ou "dechets" (une recherche qui ne tient pas compte des accents)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Fichier 0001-search-create-and-use-unaccentuated-dictionary-34191.patch 0001-search-create-and-use-unaccentuated-dictionary-34191.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Dans #33632#note-14 il est noté que la nouvelle recherche marche avec ou sans accents mais ce n'est pas mon expérience, de mon côté il y a de la configuration postgresql nécessaire; ce patch pour la mettre en place automatiquement.
Mis à jour par Thomas Noël il y a environ 4 ans
Pour l'installation de l'extension french_unaccent je regarde comment sont installées habituellement les extensions, et il y a quelques opérations peut-être utiles/nécessaires autour du CREATE EXTENSION : https://docs.djangoproject.com/en/2.2/_modules/django/contrib/postgres/operations/
Pour profiter de ça gratuitement, on pourrait décomposer la migration avec d'abord l'installation de l'extension (UnaccentExtension), puis sa configuration... Genre
… from django.contrib.postgres.operations import UnaccentExtension … operations = [ UnaccentExtension(), TextSearchConfiguration(), ]
Mis à jour par Frédéric Péters il y a environ 4 ans
Ça existe mais ça ne fonctionne pas pour nous, ça crée l'extension dans le schéma et ça fait du coup que dans le schéma d'après elle est déjà, ne peut pas être chargée et le
schema_editor.execute( 'ALTER TEXT SEARCH CONFIGURATION french_unaccent ' 'ALTER MAPPING FOR hword, hword_part, word ' 'WITH public.unaccent, french_stem')
devrait référencer le "premier" schéma plutôt que public.
Mis à jour par Thomas Noël il y a environ 4 ans
Ok pour ça. Mais donc, sans vraiment savoir l'impact, je me posais la question de cette fin de database_forwards dans les django.contrib.postgres.operations :
def database_forwards(self, ...) ... # Registering new type handlers cannot be done before the extension is # installed, otherwise a subsequent data migration would use the same # connection. register_type_handlers(schema_editor.connection)
On devrait aussi l'ajouter (regardé le code, ça lance des opérations SQL
Il y a aussi depuis Django 2.2 :
# Clear cached, stale oids. get_hstore_oids.cache_clear() get_citext_oids.cache_clear()
qu'on pourrait lancer aussi s'ils existent, genre :
try: from django.contrib.postgres.signals import get_citext_oids, get_hstore_oids except: except ImportError: # django < 2.0 get_citext_oids = get_hstore_oids = None ... # Clear cached, stale oids. if get_hstore_oids is not None: get_hstore_oids.cache_clear() if get_citext_oids is not None: get_citext_oids.cache_clear()
(Tout cela est sans doute du pinaillage, parce que je pense qu'on ne joue pas avec des oids ou des citext, mais je n'aimerai pas que lors d'un upgrade d'un jeudi soir, combo casse des choses sur un postgresql lointain)
Mis à jour par Frédéric Péters il y a environ 4 ans
C'est pertinent uniquement pour CITextExtension/HStoreExtension, ici on n'ajoute pas de type.
Mis à jour par Thomas Noël il y a environ 4 ans
- Statut changé de Solution proposée à Solution validée
Ok désolé pour la perte de temps, je découvre ces trucs.
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Solution validée à Résolu (à déployer)
Pas de soucis j'ai découvert ces opérations tout à l'heure donc c'est frais de mon côté.
commit e2348d69771cc1e046518a42418b8a60259d7b4a Author: Frédéric Péters <fpeters@entrouvert.com> Date: Wed Feb 19 10:10:52 2020 +0100 search: create and use unaccentuated dictionary (#34191)
Mis à jour par Frédéric Péters il y a environ 4 ans
- Statut changé de Résolu (à déployer) à Solution déployée
search: create and use unaccentuated dictionary (#34191)