0Pricing
SQL Academy · Aula

Introdução à pesquisa de texto completo (tsvector, to_tsquery)

Crie índices de documentos com tsvector, execute consultas em linguagem natural com to_tsquery e classifique os resultados com ts_rank.

Introdução à pesquisa de texto completo (tsvector, to_tsquery) é uma aula grátis de SQL Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de SQL Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de SQL Academy inclui 4 aulas no total.

Por que usar pesquisa de texto completo?

LIKE/ILIKE encontra substrings. A pesquisa de texto completo (FTS) entende palavras: radicalização, palavras irrelevantes, regras de idioma e relevância ordenada. Está incorporada ao PostgreSQL — nenhuma extensão é necessária.

Dois tipos fundamentais

FTS se apoia em dois tipos:

  • tsvector — um documento analisado: lexemas + posições
  • tsquery — uma consulta analisada: lexemas + operadores booleanos

Você os compara com o operador @@.

Analisando um documento

Transforme texto bruto em um 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)

Analisando uma consulta

E a entrada da pesquisa:

SELECT to_tsquery('english', 'foxes & dogs');
-- 'fox' & 'dog'

Comparação

Use @@ para testar:

SELECT to_tsvector('english', 'The lazy fox')
        @@ to_tsquery('english', 'fox');    -- TRUE

Indexando uma tabela de documentos

Adicione uma coluna tsvector e um índice GIN para consultas rápidas:

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);

Pesquisando

Com o índice, as consultas são rápidas:

SELECT id, title
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json')
ORDER BY id DESC;

Operadores booleanos em consultas

tsquery oferece suporte a & (AND), | (OR), ! (NOT) e agrupamento:

to_tsquery('english', '(cat | dog) & !rabbit');

Pesquisa por frase

Use <-> para palavras adjacentes:

to_tsquery('english', 'postgres <-> performance');
-- finds 'postgres performance', not 'postgres is great for performance'

Consultas web amigáveis: websearch_to_tsquery

Aceite consultas no estilo do Google:

SELECT websearch_to_tsquery('english', 'postgres "json indexing" -mongo');

Classificando resultados

Classifique com 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;

Realçando resultados

Mostre trechos correspondentes:

SELECT ts_headline('english', body,
  to_tsquery('english', 'postgres & json'),
  'StartSel=<mark>,StopSel=</mark>')
FROM articles
WHERE search_doc @@ to_tsquery('english', 'postgres & json');

Revisão

FTS está incorporada ao PostgreSQL.

  • tsvector + tsquery + @@
  • Índice GIN para obter velocidade
  • websearch_to_tsquery para entrada humana
  • ts_rank para ordenar por relevância

Verificação rápida

Qual operador compara um tsvector com uma tsquery?

Perguntas Frequentes

A aula “Introdução à pesquisa de texto completo (tsvector, to_tsquery)” é grátis?

Sim — o texto completo de “Introdução à pesquisa de texto completo (tsvector, to_tsquery)” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de SQL Academy, atualize para CoddyKit PRO. O curso de SQL Academy inclui 4 aulas no total.

O que vou aprender em “Introdução à pesquisa de texto completo (tsvector, to_tsquery)”?

Crie índices de documentos com tsvector, execute consultas em linguagem natural com to_tsquery e classifique os resultados com ts_rank. Você pratica SQL Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar SQL Academy?

Nenhuma experiência prévia é necessária. SQL Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “Introdução à pesquisa de texto completo (tsvector, to_tsquery)”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de SQL Academy?

Sim. Cada aula de SQL Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Concatenação: || e CONCAT
  2. UPPER, LOWER, SUBSTRING, REPLACE
  3. TRIM, LPAD, RPAD
  4. Introdução à pesquisa de texto completo (tsvector, to_tsquery)
← Voltar para SQL Academy