Introduzione alla ricerca full-text (tsvector, to_tsquery)
Indicizzi i documenti con tsvector, esegua query in linguaggio naturale con to_tsquery e ordini i risultati con ts_rank
Introduzione alla ricerca full-text (tsvector, to_tsquery) è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Perché usare la ricerca full-text?
LIKE/ILIKE trovano sottostringhe. La ricerca full-text comprende le parole: stemming, stop word, regole linguistiche e rilevanza ordinata. È integrata in PostgreSQL: non serve alcuna estensione.
Due tipi fondamentali
La ricerca full-text si basa su due tipi:
tsvector— un documento analizzato: lessemi + posizionitsquery— una query analizzata: lessemi + operatori booleani
Li si confronta con l'operatore @@.
Analizzare un documento
Trasformare il testo non elaborato in un 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)Analizzare una query
E l'input di ricerca:
SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'Confrontare
Usi @@ per verificare:
SELECT to_tsvector('english', 'The lazy fox')
@@ to_tsquery('english', 'fox'); -- TRUEIndicizzare una tabella di documenti
Aggiunga una colonna tsvector e un indice GIN per eseguire rapidamente le query:
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);Cercare
Con l'indice, le query sono veloci:
SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;Operatori booleani nelle query
tsquery supporta & (AND), | (OR), ! (NOT) e il raggruppamento:
to_tsquery('english', '(cat | dog) & !rabbit');Ricerca di frasi
Usi <-> per cercare parole adiacenti:
to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'Query web intuitive: websearch_to_tsquery
Accettare query in stile Google:
SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');Ordinare i risultati per rilevanza
Calcoli il punteggio con ts_rank o 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;Evidenziare i risultati
Mostrare estratti del testo corrispondenti:
SELECT ts_headline('english', body,
to_tsquery('english', 'postgres & json'),
'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');Riepilogo
La ricerca full-text è integrata in PostgreSQL.
tsvector+tsquery+@@- Indice GIN per la velocità
- websearch_to_tsquery per l'input dell'utente
- ts_rank per ordinare in base alla rilevanza
Verifica rapida
Quale operatore confronta un tsvector con una tsquery?
Domande Frequenti
La lezione «Introduzione alla ricerca full-text (tsvector, to_tsquery)» è gratuita?
Sì — il testo completo di «Introduzione alla ricerca full-text (tsvector, to_tsquery)» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Introduzione alla ricerca full-text (tsvector, to_tsquery)»?
Indicizzi i documenti con tsvector, esegua query in linguaggio naturale con to_tsquery e ordini i risultati con ts_rank Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Introduzione alla ricerca full-text (tsvector, to_tsquery)»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Concatenazione: || e CONCAT
- UPPER, LOWER, SUBSTRING, REPLACE
- TRIM, LPAD, RPAD
- Introduzione alla ricerca full-text (tsvector, to_tsquery)