本節(jié)簡單介紹了PostgreSQL中的RUM索引,包括RUM索引的基礎(chǔ)知識(shí)和結(jié)構(gòu)等.
RUM索引是GIN索引的增強(qiáng)版.GIN索引一是只存儲(chǔ)詞素沒有存儲(chǔ)分詞后的詞素的位置信息,因此在Recheck(掃描驗(yàn)證詞素是否滿足查詢條件)的時(shí)候效率相對(duì)較低,二是搜索通常會(huì)按相關(guān)性的強(qiáng)弱排序返回,但GIN沒有這些信息,只能通過計(jì)算后返回.
RUM索引可以避免上述2個(gè)問題.
簡介
相對(duì)于GIN索引,RUM索引,每個(gè)詞素不僅僅引用表中的行(TIDs),還包括詞素在文檔中出現(xiàn)的位置鏈表.
看下面的例子:
testdb=# create extension rum;
CREATE EXTENSION
testdb=# create index on ts using rum(doc_tsv);
CREATE INDEX
testdb=# select ctid, left(doc,20), doc_tsv from ts;
ctid | left | doc_tsv
--------+----------------------+---------------------------------------------------------
(0,10) | Can a sheet slitter | 'sheet':3,6 'slit':5 'slitter':4
(0,11) | How many sheets coul | 'could':4 'mani':2 'sheet':3,6 'slit':8 'slitter':7
(0,12) | I slit a sheet, a sh | 'sheet':4,6 'slit':2,8
(0,13) | Upon a slitted sheet | 'sheet':4 'sit':6 'slit':3 'upon':1
(0,14) | Whoever slit the she | 'good':7 'sheet':4,8 'slit':2 'slitter':9 'whoever':1
(0,15) | I am a sheet slitter | 'sheet':4 'slitter':5
(0,16) | I slit sheets. | 'sheet':3 'slit':2
(0,17) | I am the sleekest sh | 'ever':8 'sheet':5,10 'sleekest':4 'slit':9 'slitter':6
(0,18) | She slits the sheet | 'sheet':4 'sit':6 'slit':2
(9 rows)
其結(jié)構(gòu)如下:
TODO
我們提供的服務(wù)有:網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、衡水ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的衡水網(wǎng)站制作公司
參考資料
Indexes in PostgreSQL — 8 (RUM)
RUM