高速全文檢索(rum)
 
                  更新時間 2024-05-31 18:52:36
                    
 
                    最近更新時間: 2024-05-31 18:52:36
                  
   分享文章 
本小節主要介紹RDS-PostgreSQL的rum插件使用方法。
 操作場景
RDS-PostgreSQL支持 rum插件,RUM索引作為一個全文索引類型,是GIN全文索引的擴展。與內建的GIN和GiST全文索引的區別是它是以插件包的形式存在。
前提條件
- 請確保您的實例內核大版本滿足,本插件所支持的內核版本,請參考支持的版本插件列表。
注意事項
- 由于與 smlar插件存在相同運維符號%,因此無法與其共同創建并使用。
插件使用
- 安裝插件
CREATE EXTENSION IF NOT EXISTS rum;
- 卸載插件
DROP EXTENSION IF EXISTS rum;
使用示例
RUM模塊提供以下操作符。
| 操作符 | 返回值數據類型 | 描述 | 
|---|---|---|
| tsvector <=> tsquery | float4 | 返回tsvector與tsquery之間的距離。 | 
| timestamp <=> timestamp | float8 | 返回兩個時間戳之間的距離。 | 
| timestamp <= | timestamp | float8 | 
| timestamp | => timestamp | float8 | 
示例
-- 1.創建表。
CREATE TABLE test_rum(t text, a tsvector);
  
CREATE TRIGGER tsvectorupdate
BEFORE UPDATE OR INSERT ON test_rum
FOR EACH ROW EXECUTE PROCEDURE tsvector_update_trigger('a', 'pg_catalog.english', 't');
  
INSERT INTO test_rum(t) VALUES ('The situation is most beautiful');
INSERT INTO test_rum(t) VALUES ('It is a beautiful');
INSERT INTO test_rum(t) VALUES ('It looks like a beautiful place');
  
--2.創建rum索引。
CREATE INDEX rumidx ON test_rum USING rum (a rum_tsvector_ops);
  
--3.執行run查詢。
SELECT t, a <=> to_tsquery('english', 'beautiful | place') AS rank
   ?FROM test_rum
   ?WHERE a @@ to_tsquery('english', 'beautiful | place')
   ?ORDER BY a <=> to_tsquery('english', 'beautiful | place');
   ? ?
SELECT t, a <=> to_tsquery('english', 'place | situation') AS rank
   ?FROM test_rum
   ?WHERE a @@ to_tsquery('english', 'place | situation')
   ?ORDER BY a <=> to_tsquery('english', 'place | situation');
常見問題
此插件使用方法與開源方法一致,請詳見rum開源社區。
