眾所周知,搜索引擎的主要工作過(guò)程包括:抓取、存儲(chǔ)、頁(yè)面分析、索引、檢索等幾個(gè)主要過(guò)程。上一章我們主要介紹了部分抓取存儲(chǔ)環(huán)節(jié)中的內(nèi)容,此章簡(jiǎn)要介紹一下索引系統(tǒng)。
在以億為單位的網(wǎng)頁(yè)庫(kù)中查找特定的某些關(guān)鍵詞猶如大海里面撈針,也許一定的時(shí)間內(nèi)可以完成查找,但是用戶等不起,從用戶體驗(yàn)角度我們必須在毫秒級(jí)別給予用戶滿意的結(jié)果,否則用戶只能流失。怎樣才能達(dá)到這種要求呢?
如果能知道用戶查找的關(guān)鍵詞(query切詞后)都出現(xiàn)在哪些頁(yè)面中,那么用戶檢索的處理過(guò)程即可以想象為包含了query中切詞后不同部分的頁(yè)面集合求交的過(guò)程,而檢索即變成了頁(yè)面名稱之間的比較、求交。這樣,在毫秒內(nèi)以億為單位的檢索成為了可能。這就是通常所說(shuō)的倒排索引及求交檢索的過(guò)程。如下為建立倒排索引的基本過(guò)程:
1,頁(yè)面分析的過(guò)程實(shí)際上是將原始頁(yè)面的不同部分進(jìn)行識(shí)別并標(biāo)記,例如:title、keywords、content、link、anchor、評(píng)論、其他非重要區(qū)域等等;
2,分詞的過(guò)程實(shí)際上包括了切詞分詞同義詞轉(zhuǎn)換同義詞替換等等,以對(duì)某頁(yè)面title分詞為例,得到的將是這樣的數(shù)據(jù):term文本、termid、詞類、詞性等等;
3,之前的準(zhǔn)備工作完成后,接下來(lái)即是建立倒排索引,形成{termàdoc},下圖即是索引系統(tǒng)中的倒排索引過(guò)程。

倒排索引是搜索引擎實(shí)現(xiàn)毫秒級(jí)檢索非常重要的一個(gè)環(huán)節(jié),下面我們要重要介紹一下索引系統(tǒng)建立倒排索引的重要過(guò)程——入庫(kù)寫庫(kù)。
倒排索引的重要過(guò)程——入庫(kù)寫庫(kù)
索引系統(tǒng)在建立倒排索引的最后還需要有一個(gè)入庫(kù)寫庫(kù)的過(guò)程,而為了提高效率這個(gè)過(guò)程還需要將全部term以及偏移量保存在文件頭部,并且對(duì)數(shù)據(jù)進(jìn)行壓縮,這涉及到的過(guò)于技術(shù)化在此就不多提了。在此簡(jiǎn)要給大家介紹一下索引之后的檢索系統(tǒng)。
檢索系統(tǒng)主要包含了五個(gè)部分,如下圖所示:

(1)Query串切詞分詞即將用戶的查詢?cè)~進(jìn)行分詞,對(duì)之后的查詢做準(zhǔn)備,以“10號(hào)線地鐵故障”為例,可能的分詞如下(同義詞問(wèn)題暫時(shí)略過(guò)):
10 0x123abc
號(hào) 0x13445d
線 0x234d
地鐵 0x145cf
故障 0x354df
(2)查出含每個(gè)term的文檔集合,即找出待選集合,如下:
0x123abc 1 2 3 4 7 9…..
0x13445d 2 5 8 9 10 11……
……
……
(3)求交,上述求交,文檔2和文檔9可能是我們需要找的,整個(gè)求交過(guò)程實(shí)際上關(guān)系著整個(gè)系統(tǒng)的性能,這里面包含了使用緩存等等手段進(jìn)行性能優(yōu)化;
(4)各種過(guò)濾,舉例可能包含過(guò)濾掉死鏈、重復(fù)數(shù)據(jù)、色情、垃圾結(jié)果以及你懂的;
(5)最終排序,將最能滿足用戶需求的結(jié)果排序在最前,可能包括的有用信息如:網(wǎng)站的整體評(píng)價(jià)、網(wǎng)頁(yè)質(zhì)量、內(nèi)容質(zhì)量、資源質(zhì)量、匹配程度、分散度、時(shí)效性等等
影響搜索結(jié)果排序的因素
上面的內(nèi)容好象有些深?yuàn)W,因?yàn)樯婕按罅考夹g(shù)細(xì)節(jié),我們只能說(shuō)到這兒了。那下面我們說(shuō)說(shuō)大家最感興趣的排序問(wèn)題吧。用戶輸入關(guān)鍵詞進(jìn)行檢索,百度搜索引擎在排序環(huán)節(jié)要做兩方面的事情,第一是把相關(guān)的網(wǎng)頁(yè)從索引庫(kù)中提取出來(lái),第二是把提取出來(lái)的網(wǎng)頁(yè)按照不同維度的得分進(jìn)行綜合排序。“不同維度”包括:
1,相關(guān)性:網(wǎng)頁(yè)內(nèi)容與用戶檢索需求的匹配程度,比如網(wǎng)頁(yè)包含的用戶檢查關(guān)鍵詞的個(gè)數(shù),以及這些關(guān)鍵詞出現(xiàn)的位置;外部網(wǎng)頁(yè)指向該頁(yè)面所用的錨文本等
2,權(quán)威性:用戶喜歡有一定權(quán)威性網(wǎng)站提供的內(nèi)容,相應(yīng)的,百度搜索引擎也更相信優(yōu)質(zhì)權(quán)威站點(diǎn)提供的內(nèi)容。
3,時(shí)效性:時(shí)效性結(jié)果指的是新出現(xiàn)的網(wǎng)頁(yè),且網(wǎng)頁(yè)內(nèi)承載了新鮮的內(nèi)容。目前時(shí)效性結(jié)果在搜索引擎中日趨重要。
4,重要性:網(wǎng)頁(yè)內(nèi)容與用戶檢查需求匹配的重要程度或受歡迎程度
5,豐富度:豐富度看似簡(jiǎn)單卻是一個(gè)覆蓋范圍非常廣的命題?梢岳斫鉃榫W(wǎng)頁(yè)內(nèi)容豐富,可以完全滿足用戶需求;不僅可以滿足用戶單一需求,還可以滿足用戶的延展需求。
6,受歡迎程度:指該網(wǎng)頁(yè)是不是受歡迎。
以上便是百度搜索引擎決定搜索結(jié)果排序時(shí)考慮的六大原則,那么六大原則的側(cè)重點(diǎn)是怎樣的呢?哪個(gè)原則在實(shí)際應(yīng)用時(shí)占比最大呢?其實(shí)在這里沒(méi)有一個(gè)確切的答案。在百度搜索引擎早期,這些閾值的確是相對(duì)固定的,比如“相關(guān)性”在整體排序中的重量可以占到七成。但隨著互聯(lián)網(wǎng)的不斷發(fā)展,檢索技術(shù)的進(jìn)步,網(wǎng)頁(yè)數(shù)量的爆發(fā)式增長(zhǎng),相關(guān)性已經(jīng)不是難題。于是百度搜索引擎引入了機(jī)器學(xué)習(xí)機(jī)制,讓程序自動(dòng)產(chǎn)出計(jì)算公式,推進(jìn)排序策略更加合理。
低質(zhì)網(wǎng)頁(yè)狙擊策略——石榴算法
我們理解網(wǎng)站生存發(fā)展需要資金支持,從來(lái)不反對(duì)網(wǎng)站添加各種合法廣告,不要再問(wèn)我們“我們網(wǎng)站加了XX聯(lián)盟的廣告會(huì)不會(huì)被處罰”這類問(wèn)題。有些站點(diǎn)好不容易在百度有了比較好的排位,卻在頁(yè)面上放置大量有損訪問(wèn)用戶體驗(yàn)的廣告,已經(jīng)嚴(yán)重影響到百度搜索引擎用戶的使用感受。為此,百度質(zhì)量團(tuán)隊(duì)2013年5月17日發(fā)布公告:針對(duì)低質(zhì)量網(wǎng)頁(yè)推出了石榴算法,旨在打擊含有大量妨礙用戶正常瀏覽的惡劣廣告的頁(yè)面,尤其是彈出大量低質(zhì)廣告、存在混淆頁(yè)面主體內(nèi)容的垃圾廣告的頁(yè)面。
如以下網(wǎng)頁(yè)截圖,用戶要花很長(zhǎng)時(shí)間去尋找真正的下載地址,是百度無(wú)法接受容忍的。
百度質(zhì)量團(tuán)隊(duì)希望站長(zhǎng)能夠多從用戶角度出發(fā),朝著長(zhǎng)遠(yuǎn)發(fā)展考慮,在不影響用戶體驗(yàn)的前提下合理地放置廣告,贏得用戶的長(zhǎng)期青睞才是一個(gè)網(wǎng)站發(fā)展壯大的基礎(chǔ)。