PostgreSQLLa base de données la plus sophistiquée au monde.

9.13. Fonctions et opérateurs de la recherche plein texte

Tableau 9.35, « Opérateurs de recherche plein texte », Tableau 9.36, « Fonctions de la recherche plein texte » et Tableau 9.37, « Fonctions de débogage de la recherche plein texte » résume les fonctions et les opérateurs fournis pour la recherche plein texte. Voir Chapitre 12, Recherche plein texte pour une explication détaillée sur la fonctionnalité de recherche plein texte de PostgreSQL™.

Tableau 9.35. Opérateurs de recherche plein texte

Opérateur Description Exemple Résultat
@@ tsvector correspond à tsquery ? to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') t
@@@ identique à @@, mais voir Section 12.9, « Types d'index GiST et GIN » to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') t
|| concatène tsvectors 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector 'a':1 'b':2,5 'c':3 'd':4
&& ET logique des tsquery 'fat | rat'::tsquery && 'cat'::tsquery ( 'fat' | 'rat' ) & 'cat'
|| OU logique des tsquery 'fat | rat'::tsquery || 'cat'::tsquery ( 'fat' | 'rat' ) | 'cat'
!! inverse une tsquery !! 'cat'::tsquery !'cat'
@> tsquery en contient une autre ? 'cat'::tsquery @> 'cat & rat'::tsquery f
<@ tsquery est contenu dans ? 'cat'::tsquery <@ 'cat & rat'::tsquery t

[Note]

Note

Les opérateurs de confinement de tsquery considèrent seulement les lexèmes listés dans les deux requêtes, ignorant les opérateurs de combinaison.

En plus des opérateurs présentés dans la table, les opérateurs de comparaison B-tree habituels (=, <, etc) sont définis pour les types tsvector et tsquery. Ils ne sont pas très utiles dans le cadre de la recherche plein texte mais permettent la construction d'index d'unicité sur ces types de colonne.

Tableau 9.36. Fonctions de la recherche plein texte

Fonction Type de retour Description Exemple Résultat
to_tsvector([ config regconfig , ] document text) tsvector réduire le texte du document en un tsvector to_tsvector('english', 'The Fat Rats') 'fat':2 'rat':3
length(tsvector) integer nombre de lexemes dans tsvector length('fat:2,4 cat:3 rat:5A'::tsvector) 3
setweight(tsvector, "char") tsvector affecte un poids à chaque élément d'un tsvector setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A') 'cat':3A 'fat':2A,4A 'rat':5A
strip(tsvector) tsvector supprime les positions et les poids du tsvector strip('fat:2,4 cat:3 rat:5A'::tsvector) 'cat' 'fat' 'rat'
to_tsquery([ config regconfig , ] requete text) tsquery normalise les mots et les convertit en un tsquery to_tsquery('english', 'The & Fat & Rats') 'fat' & 'rat'
plainto_tsquery([ config regconfig , ] requete text) tsquery crée un tsquery en ignorant la ponctuation plainto_tsquery('english', 'The Fat Rats') 'fat' & 'rat'
numnode(tsquery) integer nombre de lexèmes et d'opérateurs dans tsquery numnode('(fat & rat) | cat'::tsquery) 5
querytree(requete tsquery) text récupère la partie indexable d'un tsquery querytree('foo & ! bar'::tsquery) 'foo'
ts_rank([ poids float4[], ] vecteur tsvector, requete tsquery [, normalisation integer ]) float4 renvoie le score d'un document pour une requête ts_rank(textsearch, query) 0.818
ts_rank_cd([ poids float4[], ] vecteur tsvector, requete tsquery [, normalisation integer ]) float4 renvoie le score d'un document pour une requête en utilisant une densité personnalisée ts_rank_cd('{0.1, 0.2, 0.4, 1.0}', textsearch, query) 2.01317
ts_headline([ config regconfig, ] document text, requete tsquery [, options text ]) text affiche la correspondance d'une requête dans un document ts_headline('x y z', 'z'::tsquery) x y <b>z</b>
ts_rewrite(requete tsquery, cible tsquery, substitution tsquery) tsquery remplace la cible avec la substitution à l'intérieur de la requête ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery) 'b' & ( 'foo' | 'bar' )
ts_rewrite(requete tsquery, select text) tsquery remplace en utilisant les cibles et substitutions à partir d'une commande SELECT SELECT ts_rewrite('a & b'::tsquery, 'SELECT t,s FROM aliases') 'b' & ( 'foo' | 'bar' )
get_current_ts_config() regconfig récupère la configuration par défaut de la recherche plein texte get_current_ts_config() english
tsvector_update_trigger() trigger fonction déclencheur pour la mise à jour automatique de colonne tsvector CREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.swedish', title, body)
tsvector_update_trigger_column() trigger fonction déclencheur pour la mise à jour automatique de colonne tsvector CREATE TRIGGER ... tsvector_update_trigger_column(tsvcol, configcol, title, body)

[Note]

Note

Toutes les fonctions de recherche plein texte qui acceptent un argument regconfig optionel utilisent la configuration indiqée par default_text_search_config en cas d'omission de cet argument.

Les fonctions de Tableau 9.37, « Fonctions de débogage de la recherche plein texte » sont listées séparément, car elles ne font pas partie des fonctions utilisées dans les opérations de recherche plein texte de tous les jours. Elles sont utiles pour le développement et le débogage de nouvelles configurations de recherche plein texte.

Tableau 9.37. Fonctions de débogage de la recherche plein texte

Fonction Type de retour Description Exemple Résultat
ts_debug([ config regconfig, ] document text, OUT alias text, OUT description text, OUT jeton text, OUT dictionnaires regdictionary[], OUT dictionnaire regdictionary, OUT lexemes text[]) setof record teste une configuration ts_debug('english', 'The Brightest supernovaes') (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) ...
ts_lexize(dict regdictionary, jeton text) text[] teste un dictionnaire ts_lexize('english_stem', 'stars') {star}
ts_parse(nom_analyseur text, document text, OUT id_jeton integer, OUT jeton text) setof record teste un analyseur ts_parse('default', 'foo - bar') (1,foo) ...
ts_parse(oid_analyseur oid, document text, OUT id_jeton integer, OUT jeton text) setof record teste un analyseur ts_parse(3722, 'foo - bar') (1,foo) ...
ts_token_type(nom_analyseur text, OUT id_jeton integer, OUT alias text, OUT description text) setof record obtient les types de jeton définis par l'analyseur ts_token_type('default') (1,asciiword,"Word, all ASCII") ...
ts_token_type(oid_analyseur oid, OUT id_jeton integer, OUT alias text, OUT description text) setof record obtient les types de jeton définis par l'analyseur ts_token_type(3722) (1,asciiword,"Word, all ASCII") ...
ts_stat(sqlquery text, [ poids text, ] OUT mot text, OUT ndoc integer, OUT nentry integer) setof record obtient des statistiques sur une colonne tsvector ts_stat('SELECT vector from apod') (foo,10,15) ...