Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Aug 19, 2026

L'extension RUM ajoute des informations de position et d'horodatage aux index de recherche en texte intégral de PostgreSQL, éliminant ainsi les analyses supplémentaires du tas qui ralentissent le classement, la recherche d'expressions et le tri par horodatage.

Prérequis

Avant de commencer, assurez-vous que :

Limitations de GIN et solutions apportées par RUM

L'index inversé généralisé (GIN) prend en charge la recherche en texte intégral à l'aide des types tsvector et tsquery, mais il ne stocke pas les informations de position ni d'horodatage dans ses index. Cela entraîne trois problèmes de performance :

Limitation de GIN Impact
Les emplacements des mots ne sont pas stockés Le classement nécessite une analyse supplémentaire du tas après l'analyse de l'index pour récupérer les positions des lexèmes.
Les emplacements des mots ne sont pas stockés La recherche d'expressions nécessite une analyse supplémentaire du tas pour vérifier les limites des expressions.
Les informations d'horodatage ne sont pas stockées Le tri par horodatage nécessite une analyse supplémentaire du tas, car les index basés sur les morphèmes ne stockent pas les informations associées.

RUM résout ces trois problèmes en stockant directement les emplacements des mots et les informations d'horodatage dans l'index, ce qui évite toute analyse supplémentaire du tas pour le classement, la recherche d'expressions ou le tri par horodatage.

Remarque

La création et l'insertion des index RUM prennent plus de temps que celles des index GIN. RUM génère des index basés sur la journalisation préalable à l'écriture (WAL) et stocke plus d'informations par entrée que GIN.

Activer ou désactiver l'extension

Activez l'extension :

CREATE EXTENSION rum;

Désactivez l'extension :

DROP EXTENSION rum;

Opérateurs

L'extension RUM fournit les opérateurs suivants :

Opérateur Renvoie Description
tsvector <=> tsquery float4 Renvoie la distance entre une valeur tsvector et une valeur tsquery.
timestamp <=> timestamp float8 Renvoie la distance entre deux horodatages.
`timestamp <= timestamp` float8

Renvoie uniquement la distance vers l'horodatage de gauche.

`timestamp => timestamp` float8

Renvoie uniquement la distance vers l'horodatage de droite.

Remarque

Les trois derniers opérateurs fonctionnent également avec les types suivants : timestamptz, int2, int4, int8, float4, float8, money et oid.

Références

L'extension RUM s'utilise de la même manière que l'extension open source. Pour la référence complète des fonctions et des exemples supplémentaires, consultez la documentation de l'extension RUM.