什么是倒排索引
先來說說什么事正排索引睬捶,舉個(gè)簡單的例子,常規(guī)的數(shù)據(jù)庫存儲(chǔ)就是正排索引近刘。
以下面的作為例子:
網(wǎng)頁 A 中的內(nèi)容片段:
Tom is a boy.
Tom is a student too.
網(wǎng)頁 B 中的內(nèi)容片段:
Jon works at school.
Tom's teacher is Jon.
構(gòu)建索引時(shí)擒贸,就是在數(shù)據(jù)庫里面存在兩個(gè) doc,每個(gè) doc 記錄下相應(yīng)的索引信息觉渴。
這樣當(dāng)我們要搜索 Tom 這個(gè)關(guān)鍵字介劫,就要遍歷所有的記錄查到索引信息,效率很慢案淋。正排索引也有相應(yīng)的優(yōu)點(diǎn)座韵,就是構(gòu)建索引快,對于新的內(nèi)容只需要增加一條記錄就行了,很方便維護(hù)誉碴。
倒排索引
由于正排的耗時(shí)太長缺點(diǎn)宦棺,倒排就正好相反,是以 word 作為關(guān)鍵索引黔帕。表中關(guān)鍵字所對應(yīng)的記錄表項(xiàng)記錄了出現(xiàn)這個(gè)字或詞的所有文檔代咸,一個(gè)表項(xiàng)就是一個(gè)字表段,它記錄該文檔的 ID 和字符在該文檔中出現(xiàn)的位置情況成黄。
倒排包含兩部分:
1呐芥、由不同的索引詞(index term)組成的索引表,稱為 “詞典”(lexicon)奋岁。其中包含了各種詞匯思瘟,以及這些詞匯的統(tǒng)計(jì)信息(如出現(xiàn)頻率 nDocs),這些統(tǒng)計(jì)信息可以直接用于各種排名算法闻伶。
2潮太、由每個(gè)索引詞出現(xiàn)過的文檔集合,以及命中位置等信息構(gòu)成虾攻。也稱為 “記錄表”铡买。就是正排索引產(chǎn)生的那張表。當(dāng)然這部分可以沒有霎箍。具體看自己的業(yè)務(wù)需求了奇钞。
下面是一個(gè)簡單的倒排索引構(gòu)建,只包含第一部分的漂坏。
倒排的優(yōu)缺點(diǎn)和正排的優(yōu)缺點(diǎn)整好相反景埃。倒排在構(gòu)建索引的時(shí)候較為耗時(shí)且維護(hù)成本較高,但是搜索耗時(shí)短顶别。