先上圖來(lái)簡(jiǎn)單看下搜索引擎的“三板斧”:數(shù)據(jù)搜集—>預(yù)處理【索引】—>排名。
數(shù)據(jù)搜集
即數(shù)據(jù)的搜集階段,將網(wǎng)頁(yè)從浩如瀚海的互聯(lián)網(wǎng)世界搜集到自己的數(shù)據(jù)庫(kù)中進(jìn)行存儲(chǔ)。
1、抓取維護(hù)策略
面對(duì)大量需要處理的數(shù)據(jù),很多問題需要事先考慮好。比如是“即時(shí)抓取”數(shù)據(jù)還是“事先抓取”?在對(duì)數(shù)據(jù)進(jìn)行維護(hù)時(shí)是“定期抓取”(定期一次深度大抓取,替代原有的數(shù)據(jù))還是“增量抓取”(以原有數(shù)據(jù)為根基,進(jìn)行新舊交替)?
2、鏈接跟蹤
我們都知道,蜘蛛是順著鏈接爬行和抓取頁(yè)面的。如何快速抓取到對(duì)用戶來(lái)說(shuō)相對(duì)重要的信息以及達(dá)到廣闊的覆蓋無(wú)疑是搜索引擎需要重點(diǎn)考慮的問題。
先來(lái)說(shuō)第一個(gè),怎么抓取到重要的信息。
想要知道這個(gè),首頁(yè)要明白人們是怎么樣主觀去判斷一個(gè)頁(yè)面是否重要的(自己先思考下)。其實(shí)無(wú)外乎以下幾種情況:
網(wǎng)頁(yè)有歷史權(quán)重積累(域名等時(shí)間較長(zhǎng)、質(zhì)量高、資格老)、很多人會(huì)提到這個(gè)頁(yè)面(外鏈指向)、很多人會(huì)引用這個(gè)頁(yè)面(轉(zhuǎn)載或者鏡像)、這個(gè)頁(yè)面便于用戶快速瀏覽(層級(jí)較淺)、經(jīng)常有新的內(nèi)容出現(xiàn)(更新)等等。
而在鏈接跟蹤階段,其實(shí)能得到的信息只有“這個(gè)頁(yè)面便于用戶快速瀏覽(層級(jí)較淺)”,其它信息還未獲取。
對(duì)于信息的覆蓋,其實(shí)就是蜘蛛在跟蹤鏈接時(shí)的兩個(gè)策略:深度抓取與廣度抓取。
用屁股想一下也知道,廣度抓取有助于獲取到更多的信息,深度抓取有助于得到更全面的信息。搜索引擎蜘蛛在抓取數(shù)據(jù)時(shí),通常會(huì)兩種方式都采用,但是相比較來(lái)說(shuō),廣度抓取要多于深度抓取。
3、地址庫(kù)
搜索引擎在建立初期,必須是要有一個(gè)人工錄入的種子庫(kù)的,否則蜘蛛將會(huì)在進(jìn)行連接跟蹤時(shí)無(wú)從下手。順著這些種子庫(kù),蜘蛛可以發(fā)現(xiàn)更多的鏈接。
當(dāng)然,多個(gè)搜索引擎都會(huì)放出一個(gè)頁(yè)面的提交入口,以便于站長(zhǎng)將站點(diǎn)進(jìn)行提交。
不過(guò)值得一提的是,搜索引擎更喜歡自己發(fā)現(xiàn)的鏈接。
4、文件存儲(chǔ)
鏈接跟蹤完畢,需要將跟蹤到的信息進(jìn)行存儲(chǔ)。存儲(chǔ)的對(duì)象,第一是url,第二是頁(yè)面內(nèi)容(文件大小、最后一次更新時(shí)間、http狀態(tài)碼、頁(yè)面源代碼等等)。
關(guān)于url,由于上次看到一個(gè)泛端口作弊的站點(diǎn),這里簡(jiǎn)單的提一下。一個(gè)url是由傳輸協(xié)議、域名、端口、路徑、文件名等幾部分組成的。
預(yù)處理【索引】
數(shù)據(jù)抓取完畢,就需要進(jìn)行預(yù)處理了(也有很多人喜歡把這一步叫做索引)。主要會(huì)從提取文字、分詞,建立索引,鏈接分析等幾個(gè)方面來(lái)進(jìn)行。
1、提取文字
很好理解的一部,將源代碼中的文字提取出來(lái)。當(dāng)然需要注意的是,這里面會(huì)包括meta信息以及一些替代文字(例如alt標(biāo)簽)。
2、分詞
每到這一步,總是想感嘆下漢字的博大精深。!!!
感嘆完畢,繼續(xù)走起。
分詞是中文特有的一個(gè)步驟,即根據(jù)句子說(shuō)要表達(dá)的意思將正文進(jìn)行拆分。通常情況下,分詞會(huì)有基于詞典以及統(tǒng)計(jì)學(xué)兩種方式。
為了更加有效的進(jìn)行機(jī)器分詞,通常會(huì)采用“正向匹配”與“逆向匹配”兩種思路來(lái)進(jìn)行。值得一提的是,“逆向匹配”的方式更容易獲得更多有價(jià)值的信息(想想為什么)。
需要強(qiáng)調(diào)的一點(diǎn)是,為了便于分詞之后的詞組可以更好的表達(dá)文章的核心意思,會(huì)進(jìn)行去停頓詞(的、啊、嗯之類的詞)以及去噪(導(dǎo)航、版權(quán)、分類等對(duì)主體意思表達(dá)木有影響分的內(nèi)容)的處理。
3、去重
經(jīng)過(guò)去停頓,去噪之后剩下的詞組,已經(jīng)可以很好的表達(dá)出頁(yè)面的主體意思了。為了便于使得內(nèi)容不被搜索引擎重復(fù)收錄,搜索引擎需要一個(gè)算法來(lái)進(jìn)行去重處理。
比如比較知名且常用的為MD5算法,請(qǐng)點(diǎn)擊鏈接到百度百科自行腦補(bǔ)。
4、建立索引
去重完畢,便是一個(gè)大家經(jīng)常說(shuō)起的正向索引與倒排索引。
5、鏈接算法
排名
索引文件建立完畢,離排名就不遠(yuǎn)了。
1、搜索詞的處理
搜素引擎會(huì)對(duì)搜索詞同樣進(jìn)行分詞處理(想想為什么),說(shuō)到這里,又不禁想感慨下漢字的博大精深之處。
針對(duì)這里,想補(bǔ)充的是一個(gè)叫做文本粒度的概念。額,為了避免誤認(rèn)子弟,還是給出百度官方關(guān)于此處的解釋。
2、文件匹配與子集選擇
按照百度官方的說(shuō)法,將用戶搜索的詞進(jìn)行分詞處理之后,便可以對(duì)索引庫(kù)進(jìn)行召回了。這里需要考慮到的一點(diǎn)是,用戶查看的往往會(huì)是前幾頁(yè)的搜索結(jié)果。所以為了資源計(jì),搜索引擎往往會(huì)只返回部分的結(jié)果(百度顯示76頁(yè),谷歌100頁(yè)),即召回的索引庫(kù)中的子集文件。
3、相關(guān)性計(jì)算
通常情況下,會(huì)有五種因素會(huì)影響到相關(guān)系。
關(guān)于此部分,也就是大家經(jīng)常說(shuō)到的SEO優(yōu)化手段與方法,這里就不再贅述了。
4、排名過(guò)濾與調(diào)整
其實(shí)經(jīng)過(guò)相關(guān)性計(jì)算,結(jié)果已經(jīng)大體確定了。只是為了懲罰一些有作弊嫌疑的站點(diǎn),搜索引擎會(huì)在此部分進(jìn)行結(jié)果的微調(diào)。
比如百度的11位機(jī)制。
5、結(jié)果的顯示
深喘一口氣,終于可以看到顯示的結(jié)果了。
返回的結(jié)果會(huì)包含title、描述、快照入口、快照日期、url等幾個(gè)方面。
這里值得一提的是,不只是描述搜索引擎可以動(dòng)態(tài)抓取,或許在不久的將來(lái),title也會(huì)進(jìn)行動(dòng)態(tài)抓取。
轉(zhuǎn)載請(qǐng)保留原文地址: http://onedealspecials.com/show-540.html