為什么需要倒排索引
通過前兩篇的文章介紹,B+樹主要針對(duì)的是讀多寫少的場景,而LSM針對(duì)的是寫多讀少的場景,其實(shí)在日常開發(fā)中,我們會(huì)將數(shù)據(jù)存儲(chǔ)到搜索引擎中,然后進(jìn)行數(shù)據(jù)的搜索,這種場景其實(shí)針對(duì)的是快速根據(jù)關(guān)鍵字查詢。對(duì)于MySQL這種B+樹結(jié)構(gòu)來說,其實(shí)沒有辦法保證快速查詢。要不然都是select * from x where xx like ‘%xxxx%’,這樣的查詢,而這種方式是不支持索引快速查詢的。
倒排索引
正排索引:頁數(shù)到內(nèi)容的關(guān)聯(lián)。而通過關(guān)鍵字查找對(duì)應(yīng)id的關(guān)聯(lián)就是倒排索引。
而這種方式也是利用空間換時(shí)間,將關(guān)鍵字進(jìn)行數(shù)據(jù)的映射,通過關(guān)鍵字就可以快速搜索到。
Elasticsearch就是利用倒排索引進(jìn)行數(shù)據(jù)的查詢,但是對(duì)于像Google這樣的搜索引擎是如何做的呢,雖然ES可以搜索一定的數(shù)據(jù),但是當(dāng)達(dá)到一定的數(shù)量級(jí) 其實(shí)沒有辦法進(jìn)行快速搜索。
PageRank算法
Google的搜索其實(shí)利用PageRank,因?yàn)橄胍诳焖俚臄?shù)據(jù)檢索到對(duì)應(yīng)的內(nèi)容,并且排在TOP10中的數(shù)據(jù),是我們想看的數(shù)據(jù)。
PageRank的核心就是按照頁權(quán)重進(jìn)行分發(fā),權(quán)重越大排名越靠前。
默認(rèn)權(quán)重是1,比如如下B網(wǎng)頁包含A、D網(wǎng)頁,B將自己的權(quán)重分發(fā)為2分 1/2給A 1/2給B。
D網(wǎng)頁包含A網(wǎng)頁,C網(wǎng)頁包含A、B、C 分別是1/3.所以A的權(quán)重就是 1/2+1/3+1 。當(dāng)遞歸計(jì)算所有的網(wǎng)頁之后,就可以得出全部網(wǎng)頁的權(quán)重。
另一種方式是根據(jù)用戶點(diǎn)贊數(shù),比如知乎?;蛘咄ㄟ^文章內(nèi)容包含的詞頻
文章來源:http://www.zghlxwxcb.cn/news/detail-650641.html
小結(jié)
本篇主要介紹搜索引擎中倒排索引的機(jī)制,以及Google搜索中的PageRank算法。文章來源地址http://www.zghlxwxcb.cn/news/detail-650641.html
到了這里,關(guān)于【分布式存儲(chǔ)】數(shù)據(jù)存儲(chǔ)和檢索~倒排索引&pageRank的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!