RDS PostgreSQL提供RUM外掛程式,實現高速全文檢索索引。
前提條件
RDS PostgreSQL執行個體滿足以下要求:
執行個體大版本 | 核心小版本 |
PostgreSQL 17 | 20250430或以上 |
PostgreSQL 14、15 | 20221030或以上 |
PostgreSQL 10、11、13、16 | 無小版本限制 |
PostgreSQL 12 | 20201230或以上 |
如何查看和升級核心小版本,請參見升級核心小版本。
背景資訊
GIN索引(通用倒排索引)支援通過tsvector和tsquery兩種資料類型進行全文檢索索引,但是有如下幾個問題:
排序慢
需要有關詞彙的位置資訊才能進行排序。GIN索引不儲存詞彙的位置,因此在索引掃描之後,需要額外的掃描來檢索詞彙位置。
短語查詢慢
GIN索引需要位置資訊來執行短語搜尋。
時間戳記排序慢
GIN索引無法在帶有詞素的索引中儲存一些相關資訊,因此需要執行額外的掃描。
基於GIN索引,RDS PostgreSQL提供RUM外掛程式,在RUM索引中儲存額外的資訊(詞彙位置或時間戳記的位置資訊)來解決以上問題。
RUM索引的缺點是構建和插入時間比GIN索引慢。 這是因為需要儲存除密鑰之外的其他資訊,並且RUM使用通用WAL記錄。
外掛程式開啟與關閉
開啟外掛程式
CREATE EXTENSION rum;關閉外掛程式
DROP EXTENSION rum;
通用的操作符
RUM模組提供以下操作符。
操作符 | 傳回值資料類型 | 描述 |
tsvector <=> tsquery | float4 | 返回tsvector與tsquery之間的距離。 |
timestamp <=> timestamp | float8 | 返回兩個時間戳記之間的距離。 |
timestamp <=| timestamp | float8 | 只返回左側時間戳記的距離。 |
timestamp |=> timestamp | float8 | 只返回右側時間戳記的距離。 |
後三種操作符也適用於這些資料類型:timestamptz、int2、int4、int8、float4、float8、money、oid。
RUM的更多函數介紹,請參見官方網站。
使用方法
RUM的使用方法與開源方法一致,請參見官方網站。