Projet

Général

Profil

Development #34191

Ne pas tenir compte des accents dans la recherche sur le portail agents

Ajouté par Stéphane Laget il y a plus de 4 ans. Mis à jour il y a environ 4 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Début:
20 juin 2019
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

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

Révision e2348d69 (diff)
Ajouté par Frédéric Péters il y a environ 4 ans

search: create and use unaccentuated dictionary (#34191)

Historique

#2

Mis à jour par Stéphane Laget il y a plus de 4 ans

  • Version cible mis à Wishlist
#3

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)

#5

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 ?).

#6

Mis à jour par Stéphane Laget il y a plus de 4 ans

Quand tu cherches "déchet" :
  • 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)
#7

Mis à jour par Frédéric Péters il y a environ 4 ans

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.

#8

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(),
    ]
#9

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.

#10

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)

#11

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.

#12

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.

#13

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)
#14

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

Formats disponibles : Atom PDF