Introduction à la recherche en texte intégral (tsvector, to_tsquery)
Indexez des documents avec tsvector, exécutez des requêtes en langage naturel avec to_tsquery et classez les résultats avec ts_rank.
Introduction à la recherche en texte intégral (tsvector, to_tsquery) est une leçon SQL Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage SQL Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours SQL Academy comprend 4 leçons au total.
Pourquoi utiliser la recherche en texte intégral ?
LIKE/ILIKE recherche des sous-chaînes. La recherche en texte intégral (FTS) comprend les mots : racinisation, mots vides, règles linguistiques et pertinence classée. Elle est intégrée à PostgreSQL — aucune extension n'est nécessaire.
Deux types fondamentaux
FTS repose sur deux types :
tsvector— un document analysé : lexèmes et positionstsquery— une requête analysée : lexèmes et opérateurs booléens
Vous les comparez avec l'opérateur @@.
Analyser un document
Transformer un texte brut en tsvector :
SELECT to_tsvector('english', 'The quick brown foxes jump over the lazy dogs');
-- 'brown':3 'dog':9 'fox':4 'jump':5 'lazi':8 'quick':2
-- Stop words ('the', 'over') dropped; words stemmed (foxes → fox)Analyser une requête
Et la valeur saisie pour la recherche :
SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'Effectuer une comparaison
Utilisez @@ pour vérifier :
SELECT to_tsvector('english', 'The lazy fox')
@@ to_tsquery('english', 'fox'); -- TRUEIndexer une table de documents
Ajoutez une colonne tsvector et un index GIN pour accélérer les requêtes :
CREATE TABLE articles (
id BIGSERIAL PRIMARY KEY,
title TEXT NOT NULL,
body TEXT NOT NULL
);
-- Either keep a generated tsvector column:
ALTER TABLE articles
ADD COLUMN search_doc tsvector
GENERATED ALWAYS AS (
to_tsvector('english',
coalesce(title,'') || ' ' || coalesce(body,'')
)
) STORED;
CREATE INDEX articles_search_idx ON articles USING GIN (search_doc);Rechercher
Avec l'index, les requêtes sont rapides :
SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;Opérateurs booléens dans les requêtes
tsquery prend en charge & (AND), | (OR), ! (NOT) et le regroupement :
to_tsquery('english', '(cat | dog) & !rabbit');Recherche d'expressions
Utilisez <-> pour rechercher des mots adjacents :
to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'Requêtes Web conviviales : websearch_to_tsquery
Accepter des requêtes de style Google :
SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');Classer les résultats
Classez les résultats avec ts_rank ou ts_rank_cd :
SELECT id, title,
ts_rank(search_doc, query) AS rank
FROM articles, to_tsquery('english', 'postgres & json') AS query
WHERE search_doc @@ query
ORDER BY rank DESC
LIMIT 20;Mettre en évidence les résultats
Afficher les extraits correspondants :
SELECT ts_headline('english', body,
to_tsquery('english', 'postgres & json'),
'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');Récapitulatif
FTS est intégré à PostgreSQL.
tsvector+tsquery+@@- Index
GINpour la rapidité websearch_to_tsquerypour les saisies humainests_rankpour classer les résultats par pertinence
Vérification rapide
Quel opérateur compare un tsvector à un tsquery ?
Apprends SQL avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 46
- Leçons
- 183
Questions Fréquemment Posées
La leçon « Introduction à la recherche en texte intégral (tsvector, to_tsquery) » est-elle gratuite ?
Oui — le texte complet de « Introduction à la recherche en texte intégral (tsvector, to_tsquery) » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours SQL Academy, passe à CoddyKit PRO. Le cours SQL Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Introduction à la recherche en texte intégral (tsvector, to_tsquery) » ?
Indexez des documents avec tsvector, exécutez des requêtes en langage naturel avec to_tsquery et classez les résultats avec ts_rank. Tu pratiques SQL Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer SQL Academy ?
Aucune expérience préalable n'est requise. SQL Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Introduction à la recherche en texte intégral (tsvector, to_tsquery) » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon SQL Academy ?
Oui. Chaque leçon SQL Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Concaténation : || et CONCAT
- UPPER, LOWER, SUBSTRING, REPLACE
- TRIM, LPAD, RPAD
- Introduction à la recherche en texte intégral (tsvector, to_tsquery)