Recherche textuelle
La recherche textuelle dans PostgreSQL est un ensemble de fonctions permettant l’analyse et l’indexation de textes en utilisant des racines des mots de ce texte, tout en fournissant des éléments de tris, en fonction de la proximité du résultat avec la recherche.
Contrairement aux expressions régulières ou à l’opérateur LIKE, ce type de recherche permet l’utilisation d’index améliorant les performances et facilite la recherche des racines de mots, en fonction d’une langue, permettant ainsi des recherches sur des mots similaires.
Les mots sont convertis en racines, ou lexèmes, permettant le rapprochement de mots similaires ayant la même racine.
Une recherche dans un texte est la correspondance entre un document de type tsvector, et une requête de type tsquery. Cette correspondance est vraie ou fausse et déterminée par l’opérateur @@.
Recherche dans une table
La recherche sur une ou plusieurs colonnes de type text dans une table passe par la conversion vers un document tsvector, ce qui permet de l’associer à une recherche tsquery. Par exemple, la requête suivante permet de rechercher le mot-clé ’Linux’ dans le champ plandecours de la table formations :
SELECT * FROM formations WHERE to_tsvector(plandecours) @@
to_tsquery( 'Linux');
Afin d’améliorer les performances de cette recherche, il est possible d’indexer ce document tsvector, en utilisant...