搜索引擎告訴你如何“論資排輩”
在前文「??搜索引擎告訴你如何大海撈針??」中,我們簡(jiǎn)要的描述了搜索引擎是如何從成百上千億的網(wǎng)站中,快速的搜索到我們要找的內(nèi)容。但能夠搜索到結(jié)果只是搜索流程中的一部分,還有另一個(gè)很重要組成部分 —— 排序。
現(xiàn)在我們隨便搜索一些數(shù)據(jù)可能都會(huì)找到幾十、甚至上百萬條結(jié)果,如果是較為熱門的內(nèi)容甚至?xí)猩锨f條。那如何從這上千萬個(gè)網(wǎng)頁中,找到用戶最想要的、或者說是跟用戶搜索的關(guān)鍵詞最相關(guān)的網(wǎng)頁呢?這就是我們本章要探索的內(nèi)容。
如何對(duì)相關(guān)的結(jié)果排序
“相關(guān)”這個(gè)詞其實(shí)并不是一個(gè)非黑即白的量化指標(biāo),例如大家去搜索「XXX 車測(cè)評(píng)」或者「XXX 車怎么樣」的關(guān)鍵字時(shí),假設(shè)搜索到了兩篇文章:
張三、李四對(duì)XXX車的測(cè)評(píng)
其文章內(nèi)容都是在描述這款車,只是角度不同。那這兩篇文章都是符合「相關(guān)」的。
接下來我們思考一個(gè)問題:
既然兩個(gè)網(wǎng)頁都相關(guān),那誰該排在前面、誰該排在后面呢?這個(gè)排序的評(píng)判標(biāo)準(zhǔn)是啥呢?
我們可以通過“鏈接”的方式來實(shí)現(xiàn)。舉例說明,現(xiàn)在有另外的 4 個(gè)用戶 A、B、C、D,他們?cè)谀承┚W(wǎng)頁里貼了張三、李四車評(píng)網(wǎng)頁的鏈接,通過他們的鏈接,其他的用戶可以跳轉(zhuǎn)到張三、李四的網(wǎng)頁:
用戶A、B、C、D貼了張三、李四的網(wǎng)頁鏈接
可以看到,用戶 A 鏈接到了張三的網(wǎng)頁,而 B、C、D 鏈接到了李四的網(wǎng)頁,張三和李四的鏈接比例為 1:3,單從鏈接的數(shù)量這個(gè)緯度來看,搜索引擎就可以認(rèn)為李四的網(wǎng)頁應(yīng)該擁有更高的排名。
大家覺得這樣合理嗎?
可能大家還沒發(fā)現(xiàn)問題在哪兒,我把上面的圖換一下內(nèi)容,大家應(yīng)該就懂了:
用戶A、B、C、D的鏈接內(nèi)容是負(fù)面的
可以看到,雖然從鏈接數(shù)量上來看,李四更多一些,但這些內(nèi)容都是負(fù)面(咱們先善意假設(shè)這些負(fù)面內(nèi)容大概也許可能是真的)。張三雖然只有 1 個(gè)鏈接,但對(duì)其評(píng)價(jià)確實(shí)積極正面的。這個(gè)時(shí)候如果搜索引擎把李四的網(wǎng)頁排在前面肯定顯的不合適。(當(dāng)然,這里不考慮張三的網(wǎng)頁內(nèi)容質(zhì)量也很垃圾,只是找的水軍去給的好評(píng))
雖然如此,上面通過鏈接的方式也仍然有效,因?yàn)橘N鏈接更多的還是用于推薦。但用戶 A、B、C、D 卻沒有上圖中那么理想。因?yàn)楝F(xiàn)實(shí)中,用戶其實(shí)是有權(quán)重的。
引入權(quán)重
怎么個(gè)權(quán)重法呢?
舉個(gè)例子,當(dāng)一個(gè)網(wǎng)絡(luò)上的普通用戶告訴你,有個(gè)護(hù)膚的產(chǎn)品巨好用,你的內(nèi)心 OS Be like:呵呵,用你告訴我?但要是 XX琦直播間 告訴你,這個(gè)護(hù)膚的產(chǎn)品巨好用,你可能就會(huì):買它!
這就是體現(xiàn)權(quán)重對(duì)我們決策影響的一個(gè)很好的例子,把這個(gè)實(shí)例代入到上面的圖中,假設(shè)用戶 A 是類似于 XX琦直播間 的一個(gè)很資深的、廣受好評(píng)、廣受信任的車評(píng)人,那他的建議權(quán)重肯定會(huì)大于其他的普通用戶。
但,計(jì)算機(jī)并不能像人腦一樣判斷某某用戶是個(gè)大 V,他的推薦要排在前面,總歸還是需要一個(gè)量化的過程,那到底該如何量化呢?底層其實(shí)還是鏈接那一套邏輯。
假設(shè)用戶 A 是個(gè)大 V,他的主頁被很多網(wǎng)頁給鏈接了,我們假設(shè)這些“很多”網(wǎng)頁都是一些普通的網(wǎng)頁,沒有其他任何鏈接指向他們,那么這些網(wǎng)頁的權(quán)重值就是 1,那么如果有 100 個(gè)這樣的網(wǎng)頁都貼了大 V 的主頁,那么大 V 的主頁權(quán)重值就是 100,如下圖所示:
在鏈接的數(shù)量模型中加上了權(quán)重值
通過對(duì)權(quán)重值的計(jì)算我們得出,張三網(wǎng)頁的排序優(yōu)先級(jí)應(yīng)該高于李四,因?yàn)闄?quán)重值 100 > 3。
看到這里,大家是不是覺得這樣已經(jīng)能解決我們開篇的問題了。通過鏈接 + 權(quán)重的方式,能夠?qū)⑾嚓P(guān)度較高的網(wǎng)頁排在前面。
不過很遺憾,這套邏輯有個(gè)非常大的問題。
鏈接的循環(huán)引用
實(shí)際的網(wǎng)頁依賴情況可不會(huì)像上圖這么的理想、清晰、層次分明,很多的網(wǎng)頁可能會(huì)存在循環(huán)依賴的情況,比如:
網(wǎng)頁在實(shí)際的環(huán)境中可能存在循環(huán)引用
碰上這種循環(huán)我們都知道會(huì)發(fā)生什么,部分網(wǎng)頁的權(quán)重值會(huì)不停的循環(huán)、不停的增加,而這顯然是不合理的。
隨機(jī)訪問
為了解決這個(gè)問題,我們需要使用“隨機(jī)訪問”。
簡(jiǎn)要描述就是:從網(wǎng)上隨便找個(gè)網(wǎng)頁開始訪問,然后隨機(jī)點(diǎn)一個(gè)鏈接,然后跳到下一個(gè)網(wǎng)頁再執(zhí)行同樣的操作。除此之外,“隨機(jī)訪問”還有一個(gè)機(jī)制:由 15% 的概率不隨機(jī)從當(dāng)前網(wǎng)頁點(diǎn)鏈接了,而是直接跳到已經(jīng)訪問過的頁面。
麻瓜描述就是:跟我們平時(shí)“網(wǎng)上沖浪“干的事差不多,就好像大家在手機(jī)上刷 B 站,點(diǎn)一個(gè)首頁推薦視頻,然后這個(gè)視頻下面還有推薦,再點(diǎn),然后繼續(xù)看關(guān)聯(lián)的視頻,然后當(dāng)你命中了”15%“的概率,厭倦了,就瘋狂右滑回到首頁,繼續(xù)點(diǎn)其他的視頻,再重復(fù)這個(gè)過程。
然后,這套算法會(huì)記錄每個(gè)網(wǎng)頁被訪問的次數(shù)。因?yàn)槭请S機(jī)訪問,所以當(dāng)某個(gè)網(wǎng)站被其他的網(wǎng)站引用越多,它被訪問到的概率就越大。而這個(gè)被訪問的次數(shù),就是它的權(quán)重了。
由于整套的隨機(jī)訪問是有總次數(shù)的限制,并且即使網(wǎng)頁之間的鏈接依賴存在循環(huán),也不會(huì)導(dǎo)致權(quán)重?zé)o限次的增加,因?yàn)橛?15% 的概率重訪問。這樣一來就能能夠解決上面的死循環(huán)問題。本質(zhì)上,隨機(jī)訪問的底層邏輯還是依賴權(quán)重的思想,只不過權(quán)重的計(jì)算模式稍微換了一下。
總結(jié)
上面這一套算法也叫 PageRank,由 Google 的兩位創(chuàng)始人拉里·佩奇(Larry Page)和謝爾蓋·布林(Sergey Brin)在 1998 年的一篇論文《The Anatomy of a Large-Scale Hypertextual Web Search Engine》中提出。Page 是一語雙關(guān),它既是創(chuàng)始人的名字,也代表網(wǎng)頁的排序。
只不過實(shí)際中的情況肯定只會(huì)更復(fù)雜,所以實(shí)際的隨機(jī)訪問算法和上面描述的略有不同。舉個(gè)例子,我想要推廣我的網(wǎng)頁 XX,那我可以搞一堆其他的無關(guān)緊要的網(wǎng)頁,在里面鏈上網(wǎng)頁 XX 的地址,以此來刷權(quán)重值,而這明顯是不符合預(yù)期的。并且,成百上千億的網(wǎng)頁,如果真的要運(yùn)行隨機(jī)訪問算法,耗時(shí)可想而知,所以 PageRank 并不能被實(shí)際應(yīng)用。并且實(shí)際的生產(chǎn)場(chǎng)景,不可能只通過這一個(gè)緯度來評(píng)判網(wǎng)頁的重要性。
不過,PageRank 的核心思想 —— 網(wǎng)頁權(quán)重值的傳遞仍然是有效的。