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