All Products
Search
Document Center

ApsaraDB RDS:Pencarian teks lengkap berkecepatan tinggi (RUM)

Last Updated:Mar 29, 2026

Ekstensi RUM menambahkan informasi posisi dan timestamp ke indeks pencarian teks lengkap PostgreSQL, sehingga menghilangkan pemindaian heap tambahan yang memperlambat peringkat, pencarian frasa, dan pengurutan berbasis timestamp.

Prasyarat

Sebelum memulai, pastikan bahwa:

Keterbatasan GIN dan solusi RUM

Generalized Inverted Index (GIN) mendukung pencarian teks lengkap menggunakan tipe tsvector dan tsquery, tetapi tidak menyimpan informasi posisi atau timestamp dalam indeksnya. Hal ini menyebabkan tiga masalah kinerja:

Keterbatasan GINDampak
Lokasi kata tidak disimpanPeringkat memerlukan pemindaian heap tambahan setelah pemindaian indeks untuk mengambil posisi leksem
Lokasi kata tidak disimpanPencarian frasa memerlukan pemindaian heap tambahan untuk memverifikasi batas frasa
Informasi timestamp tidak disimpanPengurutan berdasarkan timestamp memerlukan pemindaian heap tambahan karena indeks dengan morfem tidak menyimpan informasi terkait

RUM mengatasi ketiganya dengan menyimpan lokasi kata dan informasi timestamp langsung di dalam indeks, sehingga tidak diperlukan pemindaian heap tambahan untuk peringkat, pencarian frasa, maupun pengurutan berdasarkan timestamp.

Catatan

Indeks RUM membutuhkan waktu lebih lama untuk dibuat dan dimasukkan dibandingkan indeks GIN. RUM menghasilkan indeks berdasarkan write-ahead logging (WAL) dan menyimpan lebih banyak informasi per entri dibandingkan GIN.

Aktifkan atau nonaktifkan ekstensi

Aktifkan ekstensi:

CREATE EXTENSION rum;

Nonaktifkan ekstensi:

DROP EXTENSION rum;

Operator

Ekstensi RUM menyediakan operator-operator berikut:

OperatorMengembalikanDeskripsi
tsvector <=> tsqueryfloat4Mengembalikan jarak antara nilai tsvector dan nilai tsquery.
timestamp <=> timestampfloat8Mengembalikan jarak antara dua timestamp.
timestamp <=| timestampfloat8Mengembalikan jarak hanya ke timestamp sisi kiri.
timestamp |=> timestampfloat8Mengembalikan jarak hanya ke timestamp sisi kanan.
Catatan

Tiga operator terakhir juga berfungsi dengan tipe-tipe berikut: timestamptz, int2, int4, int8, float4, float8, money, dan oid.

Referensi

Ekstensi RUM mengikuti metode penggunaan yang sama seperti ekstensi open source-nya. Untuk referensi fungsi lengkap dan contoh tambahan, lihat dokumentasi ekstensi RUM.