作為互聯(lián)網(wǎng)應(yīng)用中最具技術(shù)含量的應(yīng)用之一,優(yōu)秀的搜索引擎需要復(fù)雜的架構(gòu)和算法,以此來支撐對海量數(shù)據(jù)的獲取、存儲,以及對用戶查詢的快速而準(zhǔn)確地響應(yīng)。這節(jié)主要介紹搜索引擎的整體架構(gòu)和各個組成模塊的功能。
從架構(gòu)層面,搜索引擎需要能夠?qū)σ园賰|計的海量網(wǎng)頁進(jìn)行獲取、存儲、處理的能力,同時要保證搜索結(jié)果的質(zhì)量。如何獲取、存儲并計算如此海量的數(shù)據(jù)?如何快速響應(yīng)用戶的查詢?如何 使得搜索結(jié)果能夠滿足用戶的信息需求?這些都是搜索引擎面對的技術(shù)挑戰(zhàn)。
搜索引擎的信息源來自于互聯(lián)網(wǎng)網(wǎng)頁,通過網(wǎng)絡(luò)爬蟲將整個互聯(lián)網(wǎng)的信息獲得到本地,因為互聯(lián)網(wǎng)頁面中有相當(dāng)大比例的內(nèi)容是完全相同或者近似重復(fù)的,“網(wǎng)頁去重”模塊會對此做出檢測,并去除重復(fù)內(nèi)容。
在此之后,搜索引擎會網(wǎng)頁進(jìn)行解析,抽取出網(wǎng)頁主體內(nèi)容,以及頁面中包含的指向其他頁面的鏈接。為了加快響應(yīng)用戶查詢的速度,網(wǎng)頁內(nèi)容通過“倒排索引”這種高效查詢數(shù)據(jù)結(jié)構(gòu)來保存,而網(wǎng)頁之間的鏈接關(guān)系也會予以保存。之所以要保存鏈接關(guān)系,是因為這種關(guān)系在網(wǎng)頁相關(guān)性排序階段是可利用的,通過“鏈接分析”可以判斷頁面的相對重要性,對于為用戶提供準(zhǔn)確的搜索結(jié)果幫助很大。
由于網(wǎng)頁數(shù)量太多,搜索引擎不僅需要保存網(wǎng)頁原始信息,還是存儲一些中間的處理結(jié)果,使用單臺或者少量的機器明顯是不現(xiàn)實的。
除了上述的子功能模塊,搜索引擎的“反作弊”模塊成為日益重要的功能。搜索引擎作為互聯(lián)網(wǎng)用戶的上網(wǎng)入口,對于網(wǎng)絡(luò)流量的引導(dǎo)與分流到頭重要,甚至可以說起了決定性的作用】于是,各種“作弊”方式逐漸流行,通過各種手段將網(wǎng)頁的搜索排名提高到與其網(wǎng)頁質(zhì)量不相稱的位置,這會嚴(yán)重影響用戶的搜索體驗。所以,如何自動發(fā)現(xiàn)作弊網(wǎng)頁并對其處罰,成為搜索引擎非常重要的組成部分。