すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:高速全文検索 (RUM)

最終更新日:Mar 29, 2026

RUM 拡張は、PostgreSQL の全文検索インデックスに位置情報とタイムスタンプ情報を追加します。これにより、ランキング、フレーズ検索、およびタイムスタンプによる順序付けを遅くする余分なヒープスキャンが不要になります。

前提条件

開始する前に、以下を確認してください。

GIN の制約と RUM ソリューション

Generalized Inverted Index (GIN) は、tsvector および tsquery 型を使用した全文検索をサポートしていますが、そのインデックスには位置情報やタイムスタンプ情報が保存されません。これにより、3つのパフォーマンスの問題が発生します。

GIN の制約影響
単語の位置が保存されないランキングには、字句の位置を取得するためにインデックススキャン後に余分なヒープスキャンが必要
単語の位置が保存されないフレーズ検索には、フレーズ境界を検証するために余分なヒープスキャンが必要
タイムスタンプ情報が保存されないタイムスタンプによる順序付けには、形態素を持つインデックスが関連情報を保存しないため、余分なヒープスキャンが必要

RUM は、単語の位置とタイムスタンプ情報をインデックスに直接保存することで、これら3つの問題をすべて解決します。そのため、ランキング、フレーズ検索、またはタイムスタンプによる順序付けに追加のヒープスキャンは不要です。

説明

RUM インデックスは、GIN インデックスよりも構築と挿入に時間がかかります。RUM は先行書き込みログ (WAL) に基づいてインデックスを生成し、GIN よりもエントリごとに多くの情報を保存します。

拡張の有効化または無効化

拡張を有効化します。

CREATE EXTENSION rum;

拡張を無効化します。

DROP EXTENSION rum;

演算子

RUM 拡張は、以下の演算子を提供します。

演算子戻り値説明
tsvector <=> tsqueryfloat4tsvector 値と tsquery 値の間の距離を返します。
timestamp <=> timestampfloat82つのタイムスタンプ間の距離を返します。
timestamp <=| timestampfloat8左側のタイムスタンプまでの距離のみを返します。
timestamp |=> timestampfloat8右側のタイムスタンプまでの距離のみを返します。
説明

最後の3つの演算子は、timestamptzint2int4int8float4float8money、および oid の各型でも機能します。

関連ドキュメント

RUM 拡張は、オープンソース拡張と同じ使用方法に従います。完全な関数リファレンスと追加の例については、「RUM 拡張ドキュメント」をご参照ください。