Todos os produtos
Search
Central de documentação

ApsaraDB RDS:High-speed full-text search (RUM)

Última atualização: Jun 29, 2026

A extensão RUM adiciona informações de posição e timestamp aos índices de busca de texto completo do PostgreSQL. Isso elimina as varreduras extras no heap que tornam lentas a classificação, a busca por frases e a ordenação baseada em timestamp.

Pré-requisitos

Antes de começar, verifique se:

Limitações do GIN e soluções do RUM

O Generalized Inverted Index (GIN) oferece suporte à busca de texto completo com os tipos tsvector e tsquery, mas não armazena informações de posição ou timestamp em seus índices. Esse comportamento gera três problemas de desempenho:

Limitação do GIN

Impacto

Posições das palavras não armazenadas

A classificação exige uma varredura extra no heap após a varredura do índice para recuperar as posições dos lexemas

Posições das palavras não armazenadas

A busca por frases requer uma varredura adicional no heap para validar os limites da frase

Informações de timestamp não armazenadas

A ordenação por timestamp demanda uma varredura extra no heap, pois índices com morfemas não guardam esses dados

O RUM resolve todos esses pontos ao armazenar as posições das palavras e as informações de timestamp diretamente no índice. Dessa forma, não é necessária nenhuma varredura extra no heap para classificação, busca por frases ou ordenação por timestamp.

Nota

Os índices RUM demoram mais para serem criados e preenchidos do que os índices GIN. O RUM gera índices com base em write-ahead logging (WAL) e armazena mais informações por entrada em comparação ao GIN.

Ative ou desative a extensão

Ative a extensão:

CREATE EXTENSION rum;

Desative a extensão:

DROP EXTENSION rum;

Operadores

A extensão RUM fornece os seguintes operadores:

Operador

Retorno

Descrição

tsvector <=> tsquery

float4

Retorna a distância entre um valor tsvector e um valor tsquery.

timestamp <=> timestamp

float8

Calcula a distância entre dois timestamps.

`timestamp <=

timestamp`

float8

Fornece a distância apenas para o timestamp à esquerda.

`timestamp

=> timestamp`

float8

Indica a distância apenas para o timestamp à direita.

Nota

Os três últimos operadores também funcionam com estes tipos: timestamptz, int2, int4, int8, float4, float8, money e oid.

Referências

A extensão RUM segue o mesmo método de uso da versão open source. Para obter a referência completa de funções e exemplos adicionais, consulte a documentação da extensão RUM.