大家一定不會多搜索引擎感到陌生,搜索引擎是互聯(lián)網(wǎng)發(fā)展的最直接的產(chǎn)物,它可以幫助我們從海量的互聯(lián)網(wǎng)資料中找到我們查詢的內(nèi)容,也是我們?nèi)粘W習、工作和娛樂不可或缺的查詢工具。
之前本人也是經(jīng)常使用Google和Baidu搜索,而對搜索引擎的知識架構沒有一個整體的概念。前一陣子的實習,使我有機會全面的了解了搜索引擎,感覺還是蠻有意思。所以,即使在面臨找工作的高壓下,也一定要抽時間來總結和回顧一下學到的知識,以便以后查閱,如果能給其他人帶來幫助,那最好不過了。
搜索引擎的標準定義:搜索引擎(Search Engine)是指根據(jù)一定的策略、運用特定的計算機程序從互聯(lián)網(wǎng)上搜集信息,在對信息進行組織和處理后,為用戶提供檢索服務,將用戶檢索相關的信息展示給用戶的系統(tǒng)。從上述定義中我們可以獲得幾個有關搜索引擎的關鍵步驟,分別為:搜集信息;組織和處理信息;展示信息。其實,真正的搜索引擎架構也正是根據(jù)這三大塊進行構建的。
1. 搜索引擎分類
搜索引擎多種多樣,類別繁多,其中根據(jù)工作方式可以分為如下幾類:
1)全文搜索引擎
全文搜索引擎可以說是真正的搜索引擎,包括我們身邊的Goggle、Baidu等耳熟能詳?shù)拇笏阉饕?,其都屬于是全文搜索引擎。全文搜索引擎是從網(wǎng)站提取信息從而構建網(wǎng)頁數(shù)據(jù)庫的。
全文搜索引擎的是如何搜集網(wǎng)站的呢?其實這里一般有兩種方法:
1> 搜索引擎定期派出網(wǎng)絡爬蟲(也成為是蜘蛛或者機器人),對互聯(lián)網(wǎng)中的網(wǎng)站進行檢索,一旦發(fā)現(xiàn)有新的網(wǎng)站就會自動抽取其信息,然后加入到自己的數(shù)據(jù)庫中;
2> 網(wǎng)站擁有者主動向搜索引擎提交自己的網(wǎng)站信息,但是主動提交網(wǎng)站并不能一定確保自己的網(wǎng)站會被搜索引擎收錄,網(wǎng)站擁有者可以通過外鏈來提升自己網(wǎng)站的受關注度(這屬于SEO的知識了)。
全文搜索引擎如何展示查詢結果?
當用戶輸入查詢詞(query)查詢時,搜索引擎會在數(shù)據(jù)庫中進行搜尋,如果找到與用戶要求內(nèi)容相符的網(wǎng)站,便采用特殊的算法——通常根據(jù)網(wǎng)頁中關鍵詞的匹配程度、出現(xiàn)的位置、頻次、鏈接質(zhì)量——計算出各網(wǎng)頁的相關度及排名等級,然后根據(jù)關聯(lián)度高低,按順序?qū)⑦@些網(wǎng)頁鏈接返回給用戶。
我們可以看到,全文搜索引擎的特點就是搜全率比較高。
2)目錄搜索引擎
目錄搜索引擎主要是按類目對網(wǎng)站進行收錄,而且在查詢時也不需要輸入關鍵詞,最為典型的目錄搜索引擎就是Sina、Yahoo等。
目錄索引無需輸入任何文字,只要根據(jù)網(wǎng)站提供的主題分類目錄,層層點擊進入,便可查到所需的網(wǎng)絡信息資源。雖然有搜索功能,但嚴格意義上不能稱為真正的搜索引擎,只是按目錄分類的網(wǎng)站鏈接列表而已。用戶完全可以按照分類目錄找到所需要的信息,不依靠關鍵詞(Keywords)進行查詢。如果把書比作是網(wǎng)站,它就像是我們?nèi)D書館一級一級地按區(qū)域?qū)ふ椅覀冃枰臅粯樱院苄蜗蟮乇环Q為是目錄搜索引擎。
3)元搜索引擎
元搜索引擎(META Search Engine)接受用戶查詢請求后,同時在多個搜索引擎上搜索,并將結果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索結果排列方面,有的直接按來源排列搜索結果,如Dogpile;有的則按自定的規(guī)則將結果重新排列組合,如Vivisimo。
4)垂直搜索引擎
在介紹垂直搜索引擎之前,我們先解釋一下橫向行業(yè)和垂直行業(yè)的含義。
橫向行業(yè)一般指跨行業(yè),包含有多個領域或行業(yè);而垂直行業(yè)特指某個行業(yè)或者某個領域。
理解了垂直行業(yè),我們就不難理解垂直搜索引擎了。垂直搜索引擎是近年來新興起的一種搜索引擎,不同于通用的網(wǎng)頁搜索引擎,垂直搜索專注于特定的搜索領域和搜索需求(例如:機票搜索、旅游搜索、生活搜索、小說搜索、視頻搜索、購物搜索等等),在其特定的搜索領域有更好的用戶體驗。相比通用搜索動輒數(shù)千臺檢索服務器,垂直搜索需要的硬件成本低、用戶需求特定、查詢的方式多樣。比較典型的垂直搜索引擎代表有,去哪兒網(wǎng)、攜程等。
5)其他類目的搜索引擎
除了上述四類搜索引擎以外,還有集合式搜索引擎、門戶搜索引擎以及免費鏈接式搜索引擎,這里就不一一詳細介紹了。
2. 搜索引擎的基礎架構
一個優(yōu)秀的搜索引擎需要復雜的架構和算法,以此來支撐對海量數(shù)據(jù)的獲取、存儲,以及對用戶查詢的快速而準確地響應。從架構層面,搜索引擎需要能夠?qū)σ园賰|計的海量網(wǎng)頁進行獲取、存儲、處理的能力,同時要保證搜索結果的質(zhì)量。
構建一個搜索引擎的基礎架構,要考慮如下三個問題:
如何獲取、存儲并計算如此海量的數(shù)據(jù)?
如何快速響應用戶的査詢?
如何使得搜索結果能夠滿足用戶的信息需求?
下圖是一個通用的搜索引笨架構示意圖:
從上述的搜索引擎架構圖中,我們可以看出一個完整搜索引擎架構(全文搜索引擎為例)需要包含的三大塊(我們一開始就說到的):
1)搜集信息:這一階段是基本的數(shù)據(jù)收錄階段,主要任務就是構建網(wǎng)頁數(shù)據(jù)庫。該階段主要依靠網(wǎng)絡爬蟲技術搜集全網(wǎng)的數(shù)據(jù),并進行收錄,這一階段還包括網(wǎng)頁去重的過程,主要利用dedup技術。
2)組織和處理信息:這里最為重要的一個環(huán)節(jié)就是構建索引,其主要的技術為倒排索引技術。當然,該階段還有建立連接關系和防作弊技術。
3)展示信息:搜索引擎根據(jù)用戶的查詢詞(query)來進行數(shù)據(jù)庫檢索,然后根據(jù)內(nèi)容、鏈接匹配度和特定的排序算法將結果展示給用戶。目前常用的排序算法主要為Learn2Rank的排序方法以及GBRank算法。
下面我們針對每一個環(huán)節(jié)進行具體的闡述。
1)網(wǎng)頁爬取和收錄
網(wǎng)絡爬蟲技術是網(wǎng)頁爬取的核心技術,我們可以通過編寫一定的程序或者腳本來對互聯(lián)網(wǎng)的信息進行抓取。網(wǎng)絡爬蟲技術的詳細介紹會在之后的博文中具體呈現(xiàn),這里不再細述。在網(wǎng)頁抓取之后,我們要構建相應的數(shù)據(jù)庫來存儲我們爬取的網(wǎng)頁信息。但是互聯(lián)網(wǎng)的信息具有冗余性,主要原因是各大網(wǎng)站也都會在后臺進行爬蟲爬取,他們也會通過爬蟲來檢測一些熱點的內(nèi)容或者文章,然后爬取其信息并對格式進行重新的組織,但其實網(wǎng)頁的內(nèi)容幾乎都是一致的。所以在收錄爬蟲爬取的網(wǎng)頁信息之前,我們還要加入一個關鍵的環(huán)節(jié)——網(wǎng)頁去重,來確保我們數(shù)據(jù)庫中網(wǎng)頁的唯一性。
2)建立索引
在抓取了網(wǎng)頁的信息之后,我們需要對網(wǎng)頁的信息進行解析,抽取到網(wǎng)頁的主題內(nèi)容和類別信息。這就是我們通常所說的網(wǎng)頁解析,其主要涉及的技術為文本識別和文本分類技術。網(wǎng)頁解析后的輸出往往是一些結構化的信息(每個網(wǎng)頁的信息完整度是不同的,我們需要統(tǒng)一對數(shù)據(jù)進行結構化操作),一般的結構化信息包括網(wǎng)頁的URL、網(wǎng)頁編碼、網(wǎng)頁標題、作者、生成時間、類別信息、摘要等等。在獲取了網(wǎng)頁結構化信息后,就要構建相應的索引了。為了加快響應用戶査詢的速度,網(wǎng)頁內(nèi)容通過'倒排索引'這種高效查詢數(shù)據(jù)結構來保存,而網(wǎng)頁之間的鏈接關系也會予以保存。之所以要保存鏈接關系,是因為這種關系 在網(wǎng)F相關性排序階段是可利用的,通過'鏈接分析'可以判斷頁面的相對重要性,對于為用 戶提供準確的搜索結果幫助很大。
由于互聯(lián)網(wǎng)的網(wǎng)頁信息是海量的,所以搜索引擎的構建離不開大數(shù)據(jù)處理平臺和云計算技術,目前較為常用的大數(shù)據(jù)處理平臺為Hadoop生態(tài)架構。
3)查詢詞分析
查詢詞分析我們經(jīng)常稱為是query分析或者query聚類。當搜索引擎接收到用戶的査詢詞后,首先需要對查詢詞進行分析,希望能夠結合查詢詞和用戶信息來正確推導用戶的真正搜索意圖。比如,一個用戶輸入的查詢詞為“養(yǎng)水仙花”,那么除了基本的內(nèi)容匹配外,搜索引擎需要讀懂用戶,其實用戶的查詢詞還可以這樣被理解“水仙花怎么養(yǎng)”,“水仙花好養(yǎng)嗎” 等等近意的查詢詞。在此之后,首先在緩存中査找,搜索引擎的緩存系統(tǒng)存儲了不同的查詢意圖對應的搜索結果,如果能夠在緩存系統(tǒng)找到滿足用戶需求的信息,則可以直接將搜索結果返回給用戶,這樣既省掉了重復計算對資源的消耗,又加快了響應速度。
4)搜索排序
搜索引擎在分析了用戶的查詢詞以后,如果緩存的信息無法滿足用戶的查詢需求,搜索引擎要根據(jù)索引來查詢數(shù)據(jù)庫的網(wǎng)頁內(nèi)容,并根據(jù)網(wǎng)頁內(nèi)容與用戶需求來進行網(wǎng)頁排序。網(wǎng)頁排序需要眾多的因素,其中最為主要的兩方面因素為:
1> 網(wǎng)頁內(nèi)容與用戶查詢內(nèi)容的相似度(匹配度):這個不難理解,搜索引擎的基本功能就是查詢,如果一個搜索引擎無法為用戶提供用戶需要查詢的內(nèi)容,那其也就不能稱為是一個搜索引擎,所以網(wǎng)頁內(nèi)容與用戶查詢內(nèi)容的相似度是網(wǎng)頁排序的一個首要依據(jù);
2> 網(wǎng)頁的重要程度:一個網(wǎng)頁的重要程度關乎了網(wǎng)頁內(nèi)容的質(zhì)量,在滿足用戶需求的基礎之上,用戶更加希望獲得高質(zhì)量的內(nèi)容,這是無可厚非的。
根據(jù)上述因素,搜索引擎對查詢到的結果進行排序,然后展示給用戶。
5)推薦系統(tǒng)
其實從不嚴格的角度來說,整個網(wǎng)頁排序的過程就屬于一種推薦策略。從嚴格意義上來說,推薦系統(tǒng)并不屬于一個搜索引擎架構的必要環(huán)節(jié),而且推薦系統(tǒng)在上述示意圖中并沒有顯示。但是一個優(yōu)秀的搜索引擎不止要能分析出用戶查詢的基本需求,進一步來講,要能了解到或者猜測用戶的可能的下一步需求。目前隨著大數(shù)據(jù)的熱潮,各大互聯(lián)網(wǎng)公司和眾多專家認為推薦系統(tǒng)是解決互聯(lián)網(wǎng)大數(shù)據(jù)的一種有效途徑。而且,最近越來越多個性化推薦知識受到了熱捧。其實推薦系統(tǒng)在搜索引擎中往往是以中間頁的形式展示的,它的主要作用就是為推薦系統(tǒng)進行導流。
聯(lián)系客服