Tableau 9.40, « Opérateurs de recherche plein texte », Tableau 9.41, « Fonctions de la recherche plein texte » et Tableau 9.42, « 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.40. Opérateurs de recherche plein texte
Opérateur | Return Type | Description | Exemple | Résultat |
---|---|---|---|---|
@@ | boolean | tsvector correspond à tsquery ? | to_tsvector('fat cats ate rats') @@ to_tsquery('cat & rat') | t |
@@@ | boolean | synonyme obsolète de @@ | to_tsvector('fat cats ate rats') @@@ to_tsquery('cat & rat') | t |
|| | tsvector | concatène tsvectors | 'a:1 b:2'::tsvector || 'c:1 d:2 b:3'::tsvector | 'a':1 'b':2,5 'c':3 'd':4 |
&& | tsquery | ET logique des tsquery | 'fat | rat'::tsquery && 'cat'::tsquery | ( 'fat' | 'rat' ) & 'cat' |
|| | tsquery | OU logique des tsquery | 'fat | rat'::tsquery || 'cat'::tsquery | ( 'fat' | 'rat' ) | 'cat' |
!! | tsquery | inverse une tsquery | !! 'cat'::tsquery | !'cat' |
<-> | tsquery | tsquery suivi par tsquery | to_tsquery('fat') <-> to_tsquery('rat') | 'fat' <-> 'rat' |
@> | boolean | tsquery en contient une autre ? | 'cat'::tsquery @> 'cat & rat'::tsquery | f |
<@ | tsquery est contenu dans ? | 'cat'::tsquery <@ 'cat & rat'::tsquery | t |
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.41. Fonctions de la recherche plein texte
Fonction | Type de retour | Description | Exemple | Résultat | |
---|---|---|---|---|---|
array_to_tsvector(text[]) | tsvector | convertit un tableau de lexèmes en tsvector | array_to_tsvector('{fat,cat,rat}'::text[]) | 'cat' 'fat' 'rat' | |
get_current_ts_config() | regconfig | récupère la configuration par défaut de la recherche plein texte | get_current_ts_config() | english | |
length(tsvector) | integer | nombre de lexemes dans tsvector | length('fat:2,4 cat:3 rat:5A'::tsvector) | 3 | |
numnode(tsquery) | integer | nombre de lexemes et d'opérateurs dans tsquery | numnode('(fat & rat) | cat'::tsquery) | 5 | |
plainto_tsquery([ config regconfig , ] requête text) | tsquery | produit un tsquery en ignorant la ponctuation | plainto_tsquery('english', 'The Fat Rats') | 'fat' & 'rat' | |
phraseto_tsquery([ config regconfig , ] query text) | tsquery | produit un tsquery qui recherche une phrase en ignorant la ponctuation | phraseto_tsquery('english', 'The Fat Rats') | 'fat' <-> 'rat' | |
querytree(requête tsquery) | text | récupère la partie indexable d'un tsquery | querytree('foo & ! bar'::tsquery) | 'foo' | |
setweight(vector tsvector, weight "char") | tsvector | affecte weight à chaque élément de vector | setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A') | 'cat':3A 'fat':2A,4A 'rat':5A | |
setweight(vector tsvector, weight "char", lexemes text[]) | tsvector | affecte weight aux éléments de vector qui sont listés dans lexemes | setweight('fat:2,4 cat:3 rat:5B'::tsvector, 'A', '{cat,rat}') | 'cat':3A 'fat':2,4 '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 , ] requête text) | tsquery | normalise les mots et les convertit en un tsquery | to_tsquery('english', 'The & Fat & Rats') | 'fat' & 'rat' | |
to_tsvector([ config regconfig , ] document text) | tsvector | réduit le texte du document en un tsvector | to_tsvector('english', 'The Fat Rats') | 'fat':2 'rat':3 | |
to_tsvector([ config regconfig , ] document json(b)) | tsvector | réduit chaque valeur texte dans le document à un tsvector, puis les concatène dans l'ordre du document pour produire un seul tsvector | to_tsvector('english', '{"a": "The Fat Rats"}'::json) | 'fat':2 'rat':3 | |
ts_delete(vector tsvector, lexeme text) | tsvector | supprime le lexeme donné à partir de vector | ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, 'fat') | 'cat':3 'rat':5A | |
ts_delete(vector tsvector, lexemes text[]) | tsvector | supprime toute occurrence de lexèmes dans lexemes à partir de vector | ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, ARRAY['fat','rat']) | 'cat':3 | |
ts_filter(vector tsvector, weights "char"[]) | tsvector | sélectionne seulement les éléments du weights indiqué à partir de vector | ts_filter('fat:2,4 cat:3b rat:5A'::tsvector, '{a,b}') | 'cat':3B 'rat':5A | |
ts_headline([ config regconfig, ] document text, requête tsquery [, options text ]) | text | affiche une correspondance avec la requête | ts_headline('x y z', 'z'::tsquery) | x y <b>z</b> | |
ts_headline([ config regconfig, ] document json(b), query tsquery [, options text ]) | text | affiche une correspondance de requête | ts_headline('{"a":"x y z"}'::json, 'z'::tsquery) | {"a":"x y <b>z</b>"} | |
ts_rank([ poids float4[], ] vecteur tsvector, requête tsquery [, normalization integer ]) | float4 | renvoie le score d'un document pour une requête | ts_rank(textsearch, query) | 0.818 | |
ts_rank_cd([ weights float4[], ] vector tsvector, requête tsquery [, normalization 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_rewrite(requête tsquery, cible tsquery, substitution tsquery) | tsquery | remplace target avec substitute dans la requête | ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery) | 'b' & ( 'foo' | 'bar' ) | |
ts_rewrite(requête 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' ) | |
tsquery_phrase(query1 tsquery, query2 tsquery) | tsquery | crée la requête qui recherche query1 suivi par query2 (identique à l'opérateur <->) | tsquery_phrase(to_tsquery('fat'), to_tsquery('cat')) | 'fat' <-> 'cat' | |
tsquery_phrase(query1 tsquery, query2 tsquery, distance integer) | tsquery | crée la requête qui recherche query1 suivi par query2 à une distance maximale de distance | tsquery_phrase(to_tsquery('fat'), to_tsquery('cat'), 10) | 'fat' <10> 'cat' | |
tsvector_to_array(tsvector) | text[] | convertit tsvector en un tableau de lexèmes | tsvector_to_array('fat:2,4 cat:3 rat:5A'::tsvector) | {cat,fat,rat} | |
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) | ||
unnest(tsvector, OUT lexeme text, OUT positions smallint[], OUT weights text) | setof record | étend un tsvector en un ensemble de lignes | unnest('fat:2,4 cat:3 rat:5A'::tsvector) | (cat,{3},{D}) ... |
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.42, « 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.42. 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 token text, OUT dictionaries regdictionary[], OUT dictionary 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 tokid integer, OUT token 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(parser_name text, OUT tokid 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, [ weights text, ] OUT word 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) ... |