| Précédent | Niveau supérieur | Suivant |
| 9.12. Fonctions et opérateurs sur les adresses réseau | Sommaire | 9.14. Fonctions XML |
Tableau 9.41, Tableau 9.42 et Tableau 9.43 résument les fonctions et les opérateurs fournis pour la recherche plein texte. Voir Chapitre 12 pour une explication détaillée sur la fonctionnalité de recherche plein texte de PostgreSQL.
Tableau 9.41. 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 colonnes.
Tableau 9.42. Fonctions de la recherche plein texte
| Fonction | Type de retour | Description | Exemple | Résultat |
|---|---|---|---|---|
| tsvector | convertit un tableau de lexèmes en tsvector | array_to_tsvector('{fat,cat,rat}'::text[]) | 'cat' 'fat' 'rat' |
| regconfig | récupère la configuration par défaut de la recherche plein texte | get_current_ts_config() | english |
| integer | nombre de lexèmes dans tsvector | length('fat:2,4 cat:3 rat:5A'::tsvector) | 3 |
| integer | nombre de lexèmes et d'opérateurs dans tsquery | numnode('(fat & rat) | cat'::tsquery) | 5 |
| tsquery | produit un tsquery en ignorant la ponctuation | plainto_tsquery('english', 'The Fat Rats') | 'fat' & 'rat' |
| tsquery | produit un tsquery qui recherche une phrase en
ignorant la ponctuation | phraseto_tsquery('english', 'The Fat Rats') | 'fat' <-> 'rat' |
| tsquery | produit une tsquery à partir d'une requête style recherche web | websearch_to_tsquery('english', '"fat rat" or rat') | 'fat' <-> 'rat' | 'rat' |
| text | récupère la partie indexable d'un tsquery | querytree('foo & ! bar'::tsquery) | 'foo' |
| 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 |
| 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 |
| tsvector | supprime les positions et les poids du tsvector | strip('fat:2,4 cat:3 rat:5A'::tsvector) | 'cat' 'fat' 'rat' |
| tsquery | normalise les mots et les convertit en un tsquery | to_tsquery('english', 'The & Fat & Rats') | 'fat' & 'rat' |
| tsvector | réduit le texte du document en un tsvector | to_tsvector('english', 'The Fat Rats') | 'fat':2 'rat':3 |
| 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 |
| tsvector |
réduit chaque valeur du document, spécifié par filter vers un
tsvector, puis concatène ces derniers dans un document
pour produire un seul tsvector. filter est un tableau
jsonb qui énumère le type d'éléments à inclure dans le
tsvector en résultat. Les valeurs possibles pour
filter sont
"string" (pour inclure toutes les valeurs de type
chaîne de caractères), "numeric" (pour inclure
toutes les valeurs numériques dans le format chaîne),
"boolean" (pour inclure toutes les valeurs
booléennes dans le format chaîne
"true"/"false"),
"key" (pour inclure toutes les clés) ou
"all" (pour les inclure toutes). Ces valeurs
peuvent être combinées ensemble pour inclure, par exemple, toutes
les valeurs de type chaînes de caractères et numériques.
| json_to_tsvector('english', '{"a": "The Fat Rats", "b": 123}'::json, '["string", "numeric"]') | '123':5 'fat':2 'rat':3 |
| tsvector | supprime le lexeme
donné à partir de vector | ts_delete('fat:2,4 cat:3 rat:5A'::tsvector, 'fat') | 'cat':3 'rat':5A |
| 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 |
| 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 |
| text | affiche une correspondance avec la requête | ts_headline('x y z', 'z'::tsquery) | x y <b>z</b> |
| text | affiche une correspondance de requête | ts_headline('{"a":"x y z"}'::json, 'z'::tsquery) | {"a":"x y <b>z</b>"} |
| float4 | renvoie le score d'un document pour une requête | ts_rank(textsearch, query) | 0.818 |
| 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 |
| tsquery | remplace target avec
substitute dans la requête | ts_rewrite('a & b'::tsquery, 'a'::tsquery, 'foo|bar'::tsquery) | 'b' & ( 'foo' | 'bar' ) |
| 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 | 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 | 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' |
| text[] | convertit tsvector en un tableau de lexèmes | tsvector_to_array('fat:2,4 cat:3 rat:5A'::tsvector) | {cat,fat,rat} |
| trigger | fonction déclencheur pour la mise à jour automatique de colonne tsvector | CREATE TRIGGER ... tsvector_update_trigger(tsvcol, 'pg_catalog.swedish', title, body) | |
| trigger | fonction déclencheur pour la mise à jour automatique de colonne tsvector | CREATE TRIGGER ... tsvector_update_trigger_column(tsvcol, configcol, title, body) | |
| 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 optionnel utilisent la configuration indiquée par
default_text_search_config en cas d'omission de cet
argument.
Les fonctions de Tableau 9.43 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.43. Fonctions de débogage de la recherche plein texte
| Fonction | Type de retour | Description | Exemple | Résultat |
|---|---|---|---|---|
| setof record | teste une configuration | ts_debug('english', 'The Brightest supernovaes') | (asciiword,"Word, all ASCII",The,{english_stem},english_stem,{}) ... |
| text[] | teste un dictionnaire | ts_lexize('english_stem', 'stars') | {star} |
| setof record | teste un analyseur | ts_parse('default', 'foo - bar') | (1,foo) ... |
| setof record | teste un analyseur | ts_parse(3722, 'foo - bar') | (1,foo) ... |
| setof record | obtient les types de jeton définis par l'analyseur | ts_token_type('default') | (1,asciiword,"Word, all ASCII") ... |
| setof record | obtient les types de jeton définis par l'analyseur | ts_token_type(3722) | (1,asciiword,"Word, all ASCII") ... |
| setof record | obtient des statistiques sur une colonne tsvector | ts_stat('SELECT vector from apod') | (foo,10,15) ... |