PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 19/12/2018 10:36:01

fabrice_as
Membre

Caractères spéciaux dans les recherches full text

Bonjour,

Le moteur full text de PostgreSQL est vraiment super et relativement facile à implémenter avec les différents tutos que vous avez réalisé.

J'indexe le contenu de document et globalement cela se passe bien.
En revanche je rencontre des problèmes avec certaines termes comme C++ ou C# ou autre termes contenant des caractères spéciaux qui ne sont pas inclus dans les texte vectorisés.
Y-a-t-il un moyen d'intégrer ces mots dans les recherches ?

Merci d'avance

Fabrice

Hors ligne

#2 19/12/2018 11:31:51

gleu
Administrateur

Re : Caractères spéciaux dans les recherches full text

Avez-vous essayé de créer un dictionnaire des synonymes pour transformer C++ en cplusplus par exemple ? (jamais essayé, mais ce serait le premier test que je ferais)

Hors ligne

#3 19/12/2018 11:51:22

fabrice_as
Membre

Re : Caractères spéciaux dans les recherches full text

Je n'ai pas essayé de dictionnaire de synonyme, il faut que je regarde comment ça marche

Hors ligne

#4 19/12/2018 13:02:50

fabrice_as
Membre

Re : Caractères spéciaux dans les recherches full text

Je viens d'essayer il semblerait que le parser agisse en premier en retirant les caractères spéciaux pour générer les tokens avant d'utiliser les dictionnaires

Hors ligne

#5 20/12/2018 14:05:00

dverite
Membre

Re : Caractères spéciaux dans les recherches full text

Effectivement il faudrait mettre un analyseur lexical alternatif, sans quoi dans  "C++" par exemple les + produisent le même lexème qu'un espace:

=# select ts_debug('C++');
                           ts_debug                           
--------------------------------------------------------------
(asciiword,"Word, all ASCII",C,{french_stem},french_stem,{})
(blank,"Space symbols",+,{},,)
(blank,"Space symbols",+,{},,)

Il est possible de faire une configuration texte avec son propre analyseur lexical, mais il faut l'écrire en C.
Un exemple ici: https://github.com/postgrespro/pg_tsparser

Hors ligne

Pied de page des forums