一、索引:在談這個(gè)過(guò)程前,我們首先要理清搜索引擎索引數據表與信息數據表之間的關(guān)系,其實(shí)搜索引擎底層的數據存儲本身就是一個(gè)關(guān)系數據庫,索引數據表和信息數據表是兩個(gè)獨立的表,只是索引數據表和信息數據表是一對多的關(guān)系,這樣或許更好理解。那么搜索引擎為什么需要索引數據表呢?我們不妨從信息量這個(gè)角度分析一下,就目前來(lái)看,搜索引擎的信息量在百億級,而用戶(hù)搜索某個(gè)關(guān)鍵字時(shí)響應速度在短短的2、3秒內,在這短短的2、3內不僅僅要完成數據的查詢(xún),而且還要完成數據的排序(關(guān)鍵詞排名)。如果每次都要從這百億級的數據中查詢(xún)用戶(hù)請求并處理排序,不僅減慢響應速度,而且還浪費了大量的計算資源,對服務(wù)器的壓力也會(huì )更大。這個(gè)時(shí)候,搜索引擎就迫切希望將用戶(hù)查詢(xún)的信息鎖定在一個(gè)范圍,這個(gè)范圍的信息量或許只有幾千條、幾百條,計算處理起來(lái),效率要高很多,而索引數據表就是為解決這一問(wèn)題出現的。
根據統計,漢語(yǔ)詞語(yǔ)大約有9萬(wàn)多個(gè),聽(tīng)起來(lái)很龐大,但對于計算機來(lái)講處理起來(lái)恐怕會(huì )很輕松,而中文用戶(hù)的搜索無(wú)外乎就是這幾萬(wàn)個(gè)詞語(yǔ)的組合(英文就更簡(jiǎn)單了,26個(gè)字母的組合)。如果用戶(hù)搜索的是一連串兒的句子,那么要先經(jīng)過(guò)搜索引擎的分詞處理,比如 搜索:華普筆記本電腦,分詞技術(shù)首先會(huì )按照漢語(yǔ)習慣進(jìn)行劃分,劃分為:華普、筆記本、電腦,那么這三個(gè)常見(jiàn)詞語(yǔ)在搜索引擎索引數據庫表中都有對應的詞條,此時(shí)搜索引擎將從信息數據表中篩選出關(guān)聯(lián)索引數據表中3個(gè)詞語(yǔ)的全部詞條并取其交集詞條展現給用戶(hù),如果用戶(hù)單一搜索一個(gè)詞語(yǔ),那搜索引擎處理起來(lái)就更為簡(jiǎn)單,直接從信息數據表中篩選出索引數據表中該詞所對應的詞條即可。
二、抓。浩鋵(shí)在抓取前面還有一個(gè)過(guò)程沒(méi)有描述在內,那就是爬行,也就是搜索引擎程序發(fā)現新網(wǎng)址的過(guò)程,只是這個(gè)過(guò)程大多伴隨著(zhù)抓取,除非你的這個(gè)URL上的內容沒(méi)有什么價(jià)值(垃圾內容、重復內容、文字過(guò)少內容等)而被搜索引擎抓取程序直接跳過(guò)。搜索引擎爬行程序以數據表中已存在或新提交的鏈接順藤摸瓜式地進(jìn)行爬行以不斷發(fā)現新的URL,抓取程序在分析并確定該URL的頁(yè)面內容有價(jià)值后,便將其整個(gè)頁(yè)面抓取下來(lái)放入到龐大的信息數據表中。新抓取的內容在進(jìn)入信息數據表時(shí),并不是一股腦地堆積在那,而是按照信息數據庫中表的字段(如:網(wǎng)頁(yè)URL、title、描述、正文內容、抓取時(shí)間、導出鏈接等)分門(mén)別類(lèi)地將信息存儲起來(lái),以便滿(mǎn)足后期的數據索引操作。
三、排名:闡述這一原理,不得不說(shuō)下搜索引擎爬行、抓取過(guò)程,影響關(guān)鍵詞排名的因素很多,如:站內優(yōu)化情況、外鏈質(zhì)量及數量、pr等,那么這些排名因素搜索引擎也必須抓入數據庫,納入數據表作為特定URL的排名依據,其實(shí)影響網(wǎng)頁(yè)排名指標的獲取過(guò)程就是搜索引擎爬行、抓取的過(guò)程。最難理解的可能就是外鏈這一塊兒,因為在抓取網(wǎng)頁(yè)時(shí),搜索引擎是捕捉不到他的導入鏈接的,其實(shí)搜索引擎在抓取一個(gè)頁(yè)面時(shí),已經(jīng)將該頁(yè)面的導出鏈接投票計算到了相應的頁(yè)面,并將這一有效投票寫(xiě)入到了所指向的URL字段中(比如:votes字段),便于排名程序加以計算。當然,影響排名的因素很多,排名計算的具體方式我們也無(wú)從得知,因此這些不在我們的討論之列。關(guān)于排名,大家可能還有一個(gè)問(wèn)題,就是每個(gè)詞語(yǔ)的排名是事先排序好了,還是當用戶(hù)搜索時(shí)才進(jìn)行排序,筆者給出的答案是后者,或許這一個(gè)現象可以揭秘筆者的答案:每一天甚至每一小時(shí)關(guān)鍵字排名都會(huì )出現波動(dòng)。