SQL Academy · Leçon

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.

Leçon 4 sur 414 étapes

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 positions
  • tsquery — 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');    -- TRUE

Indexer 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 GIN pour la rapidité
  • websearch_to_tsquery pour les saisies humaines
  • ts_rank pour classer les résultats par pertinence

Vérification rapide

Quel opérateur compare un tsvector à un tsquery ?

Gratuit pour commencer

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

  1. Concaténation : || et CONCAT
  2. UPPER, LOWER, SUBSTRING, REPLACE
  3. TRIM, LPAD, RPAD
  4. Introduction à la recherche en texte intégral (tsvector, to_tsquery)
← Retour à SQL Academy