Project

General

Profile

Développement #34191

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

Added by Stéphane Laget almost 6 years ago. Updated about 5 years ago.

Status:
Fermé
Priority:
Normal
Assignee:
-
Start date:
20 June 2019
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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 ?


Files

Associated revisions

Revision e2348d69 (diff)
Added by Frédéric Péters about 5 years ago

search: create and use unaccentuated dictionary (#34191)

History

#2

Updated by Stéphane Laget almost 6 years ago

  • Target version set to Wishlist
#3

Updated by Stéphane Laget over 5 years ago

et permettre également les recherches partielles (demandes de Vaulx-en-Velin et Chambéry)

#5

Updated by Frédéric Péters over 5 years ago

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

Updated by Stéphane Laget over 5 years ago

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

Updated by Frédéric Péters about 5 years ago

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

Updated by Thomas Noël about 5 years ago

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

Updated by Frédéric Péters about 5 years ago

Ç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

Updated by Thomas Noël about 5 years ago

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

Updated by Frédéric Péters about 5 years ago

C'est pertinent uniquement pour CITextExtension/HStoreExtension, ici on n'ajoute pas de type.

#12

Updated by Thomas Noël about 5 years ago

  • Status changed from Solution proposée to Solution validée

Ok désolé pour la perte de temps, je découvre ces trucs.

#13

Updated by Frédéric Péters about 5 years ago

  • Status changed from Solution validée to 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

Updated by Frédéric Péters about 5 years ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF