Bonjour,
J'ai tenté d'installer le module T-search 2 de PostgreSQL avec le dictionnaire français mais je rencontre un problème avec les mots accentués. Je voudrais que "lycée" et "lycee" ("société"-"societe", "accentué"-"accentue"...) soit considéré comme étant le même mot, qu'il n'y ait pas de distinction. Ceci permettrait d'avoir des résultats pertinents, y compris pour les personnes qui ne tapent pas les caratères accentués.
Ma configuration est la suivante :
- dans la table pg_ts_dict :
dict_name
fr_ispell
dict_initoption
Dict_File=/usr/share/dict/french.dict,AffFile=/usr/lib/ispell/french.aff,StopFile=/usr/share/postgresql/contrib/french.stop
french.dict contient des lignes du genre (S précise que c'est un mot singulier, F précise que c'est un mot féminin) :
lycopode/S
lycose/S
lycra
lycène/S
lycée/S
lycéenne/F
lyddite/S
french.aff permet de décoder les mots
french.stop contient des petits mots non inclus dans la recherche (le, la, les...)
- dans la table pg_ts_cfg :
ts_name prs_name locale
fr default fr_FR
- dans la table pg_ts_cfgmap
ts_name tok_alias dict_name
fr email {simple}
fr file {simple}
fr float {simple}
fr host {simple}
fr hword {fr_ispell,simple}
fr int {simple}
fr lhword {fr_ispell,simple}
fr lpart_hword {fr_ispell,simple}
fr lword {fr_ispell,simple}
fr nlhword {fr_ispell,simple}
fr nlpart_hword {fr_ispell,simple}
fr nlword {fr_ispell,simple}
fr part_hword {simple}
fr sfloat {simple}
fr uint {simple}
fr uri {simple}
fr url {simple}
fr version {simple}
fr word {fr_ispell,simple}
J'ai ensuite une table t_avis, qui contient un champ avis et un vecteur de cet avis, renseigné avec :
update t_avis set vectors=to_tsvector('fr',avis).
C'est donc sur cette table que survient mon problème.
Ma question est donc : est-il possible que, lorsqu'une personne tape "lycee", on recherche dans le champ vectors comme si la personne avait tapé "lycée" ? Ou inversement, on recherche "lycee" dans le vecteur qui au préalable contient des mots non accentués.
Merci beaucoup pour votre aide.
Partager