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