Projet

Général

Profil

Development #13061

api de recherche d'utilisateurs: gérer les accents

Ajouté par Thomas Noël il y a plus de 7 ans. Mis à jour il y a plus de 5 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
-
Version cible:
-
Début:
05 septembre 2016
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

Description

Actuellement l'API de recherche des utilisateurs impose une égalité de recherche, accents compris (noel et noël ne sont pas équivalents). Il faudrait rendre le système de recherche plus souple et permettre de retourner les utilisateurs correspondants, accents ou non.

Piste : utilisation de l'extension pg_trgm https://www.postgresql.org/docs/9.1/static/pgtrgm.html


Fichiers


Demandes liées

Lié à Publik - Development #14159: système de recherche central (utilisateurs, demandes, base de connaissance)Fermé29 novembre 2016

Actions

Révisions associées

Révision 1f1ebe03 (diff)
Ajouté par Frédéric Péters il y a environ 7 ans

general: search for users without looking at accents (#13061)

Historique

#1

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

C'est pas plutôt unaccent1 qu'on voudrait utiliser ? Les trigrames ou levensthein c'est plus pour de la recherche approchée.

1 https://www.postgresql.org/docs/9.1/static/unaccent.html

#2

Mis à jour par Frédéric Péters il y a plus de 7 ans

Thomas souhaitait également faire de la recherche approchée sur le nom.

#3

Mis à jour par Benjamin Dauvergne il y a plus de 7 ans

create extension unaccent;
create extension pg_trgm;
-- unaccent ne peut pas être utilisé directement dans un index parce que pas 'immutable'
CREATE OR REPLACE FUNCTION myunaccent(varchar) RETURNS varchar AS $$ select unaccent('unaccent',$1::text); $$ LANGUAGE 'sql' IMMUTABLE;
create table test (t text);
CREATE INDEX trgm_idx ON test USING gist (lower(myunaccent(t)) gist_trgm_ops);

insert INTO test (t) VALUES ('Thomas Noël'), ('Noël Graët'), ('Noëlle Pernat');

select t, similarity(t, 'noiel thomas') from test order by similarity(t, 'noiel thomas') desc limit 3;
       t       | similarity 
---------------+------------
 Thomas Noël   |     0.5625
 Noël Graët    |  0.0909091
 Noëlle Pernat |       0.08
(3 lignes)

À tester avec une plus grosse liste de noms mais c'est déjà pas mal.

#5

Mis à jour par Frédéric Péters il y a plus de 7 ans

Avant de partir sur tout ça, il faut assurer que nos db sont dans les bonnes locales.

Genre :

 wcs_demarches_alfortville_fr           | wcs-au-quotidien | UTF8     | en_US.UTF-8     | en_US.UTF-8  | 

(c'est connu de Thomas et moi mais je ne sais pas s'il y a un ticket).

#6

Mis à jour par Thomas Noël il y a plus de 7 ans

  • Lié à Development #14159: système de recherche central (utilisateurs, demandes, base de connaissance) ajouté
#7

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

Proposition de passer outre postgresql et simplement lors de la création des chaines à indexer d'aussi en ajouter des versions sans accent. (et le faire pour la recherche fts sur les formdata aussi).

#8

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

#9

Mis à jour par Thomas Noël il y a environ 7 ans

Ack

#10

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

  • Statut changé de En cours à Résolu (à déployer)
commit 1f1ebe035f7e20ef36c2ac216fa9087f9f15a264
Author: Frédéric Péters <fpeters@entrouvert.com>
Date:   Fri Mar 31 14:42:38 2017 +0200

    general: search for users without looking at accents (#13061)
#11

Mis à jour par Frédéric Péters il y a plus de 5 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF