搜索引擎的技術架構

文章轉自:http://blog.csdn.net/hguisu/article/details/7955985算法

1. 搜索引擎的分類

搜索引擎按其工做方式主要可分爲三種:數據庫

 

分別是全文搜索引擎(Full Text Search Engine)緩存

目錄索引類搜索引擎(Search Index/Directory)服務器

元搜索引擎(Meta Search Engine)。 

■ 全文搜索引擎
  全文搜索引擎是名副其實的搜索引擎,國外具表明性的有Google、Fast/AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut等,國內著名的有百度(Baidu)。它們都是經過從互聯網上提取的各個網站的信息(以網頁文字爲主)而創建的數據庫中,檢索與用戶查詢條件匹配的相關記錄,而後按必定的排列順序將結果返回給用戶,所以他們是真正的搜索引擎。
  從搜索結果來源的角度,全文搜索引擎又可細分爲兩種,一種是擁有本身的檢索程序(Indexer),俗稱「蜘蛛」(Spider)程序或「機器人」(Robot)程序,並自建網頁數據庫,搜索結果直接從自身的數據庫中調用,如上面提到的7家引擎;另外一種則是租用其餘引擎的數據庫,並按自定的格式排列搜索結果,如Lycos引擎。
      在搜索引擎分類部分提到過全文搜索引擎從網站提取信息創建網頁數據庫的概念。搜索引擎的自動信息蒐集功能分兩種。一種是按期搜索,即每隔一段時間(好比Google通常是28天),  蜘蛛搜索引擎搜索引擎主動派出「蜘蛛」程序,對必定IP地址範圍內的互聯網站進行檢索,一旦發現新的網站,它會自動提取網站的信息和網址加入本身的數據庫。另外一種是提交網站搜索,即網站擁有者主動向搜索引擎提交網址,它在必定時間內(2天到數月不等)定向向你的網站派出「蜘蛛」程序,掃描你的網站並將有關信息存入數據庫,以備用戶查詢。因爲近年來搜索引擎索引規則發生很大變化,主動提交網址並不保證你的網站能進入搜索引擎數據庫,目前最好的辦法是多得到一些外部連接,讓搜索引擎有更多機會找到你並自動將你的網站收錄。
  當用戶以關鍵詞查找信息時,搜索引擎會在數據庫中進行搜尋,若是找到與用戶要求內容相符的網站,便採用特殊的算法——一般根據網頁中關鍵詞的匹配程度、出現的位置、頻次、連接質量——計算出各網頁的相關度及排名等級,而後根據關聯度高低,按順序將這些網頁連接返回給用戶。這種引擎的特色是搜全率比較高。
■ 目錄索引
        雖然有搜索功能,但嚴格意義上不能稱爲真正的搜索引擎,只是按目錄分類的網站連接列表而已。(更簡單說就是網址導航網站)
網絡

       用戶徹底能夠按照分類目錄找到所須要的信息,不依靠關鍵詞(Keywords)進行查詢。目錄索引中最具表明性的莫過於大名鼎鼎的Yahoo、新浪分類目錄搜索。
  與全文搜索引擎相比,目錄索引有許多不一樣之處。
  首先,搜索引擎屬於自動網站檢索,而目錄索引則徹底依賴手工操做。用戶提交網站後,目錄編輯人員會親自瀏覽你的網站,而後根據一套自定的評判標準甚至編輯人員的主觀印象,決定是否接納你的網站。  目錄索引其次,搜索引擎收錄網站時,只要網站自己沒有違反有關的規則,通常都能登陸成功。而目錄索引對網站的要求則高得多,有時即便登陸屢次也不必定成功。尤爲象Yahoo這樣的超級索引,登陸更是困難。
  此外,在登陸搜索引擎時,咱們通常不用考慮網站的分類問題,而登陸目錄索引時則必須將網站放在一個最合適的目錄(Directory)。
  最後,搜索引擎中各網站的有關信息都是從用戶網頁中自動提取的,因此用戶的角度看,咱們擁有更多的自主權;而目錄索引則要求必須手工另外填寫網站信息,並且還有各類各樣的限制。更有甚者,若是工做人員認爲你提交網站的目錄、網站信息不合適,他能夠隨時對其進行調整,固然事先是不會和你商量的。
  目錄索引,顧名思義就是將網站分門別類地存放在相應的目錄中,所以用戶在查詢信息時,可選擇關鍵詞搜索,也可按分類目錄逐層查找。如以關鍵詞搜索,返回的結果跟搜索引擎同樣,也是根據信息關聯程度排列網站,只不過其中人爲因素要多一些。若是按分層目錄查找,某一目錄中網站的排名則是由標題字母的前後順序決定(也有例外)。
  目前,搜索引擎與目錄索引有相互融合滲透的趨勢。原來一些純粹的全文搜索引擎如今也提供目錄搜索,如Google就借用Open Directory目錄提供分類查詢。而象 Yahoo! 這些老牌目錄索引則經過與Google等搜索引擎合做擴大搜索範圍(注)。在默認搜索模式下,一些目錄類搜索引擎首先返回的是本身目錄中匹配的網站,如中國的搜狐、新浪、網易等;而另一些則默認的是網頁搜索,如Yahoo。這種引擎的特色是找的準確率比較高。

■ 元搜索引擎 (META Search Engine)
        元搜索引擎在接受用戶查詢請求時,同時在其餘多個引擎上進行搜索,並將結果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等(元搜索引擎列表),中文元搜索引擎中具表明性的有搜星搜索引擎。在搜索結果排列方面,有的直接按來源引擎排列搜索結果,如Dogpile,有的則按自定的規則將結果從新排列組合,如Vivisimo。
架構


除上述三大類引擎外,還有如下幾種非主流形式:ide

垂直搜索引擎
  垂直搜索引擎爲2006年後逐步興起的一類搜索引擎。不一樣於通用的網頁搜索引擎,垂直搜索專一於特定的搜索領域和搜索需求(例如:機票搜索、旅遊搜索、生活搜索、小說搜索、視頻搜索等等),如國內的酷訊,去哪兒,攜程等。在其特定的搜索領域有更好的用戶體驗。相比通用搜索動輒數千臺檢索服務器,垂直搜索須要的硬件成本低、用戶需求特定、查詢的方式多樣。
集合式搜索引擎
  集合式搜索引擎:該搜索引擎相似元搜索引擎,區別在於它並不是同時調用多個搜索引擎進行搜索,而是由用戶從提供的若干搜索引擎中選擇,如HotBot在2002年末推出的搜索引擎。
門戶搜索引擎
  門戶搜索引擎:AOLSearch、MSNSearch等雖然提供搜索服務,但自身既沒有分類目錄也沒有網頁數據庫,其搜索結果徹底來自其餘搜索引擎。
免費連接列表
  免費連接列表(Free For All Links簡稱FFA):通常只簡單地滾動連接條目,少部分有簡單的分類目錄,不過規模要比Yahoo!等目錄索引小不少。
網站

 

 

2. 搜索引擎的技術架構 

 

       優秀的搜索引擎須要複雜的架構和算法,以 此來支撐對海量數據的獲取、存儲,以及對用戶查詢的快速而準確地響應。
ui

       從架構層面,搜索引擎須要可以對以百億計的海量網頁進行獲取、存儲、處理的能力,同 時要保證搜索結果的質量。搜索引擎

       如何獲取、存儲並計算如此海量的數據?

       如何快速響應用戶的査 詢?

        如何使得搜索結果可以知足用戶的信息需求?

這些都是搜索引擎面對的技術挑戰。 下圖是一個通用的搜索引笨架構示意圖:

 

      

                                             搜索引擎架構

 

       搜索引擎由不少技術模塊構成,各自負責總體 功能的一部分,相互紀合造成了完善的總體架構。

抓取網頁:

       搜索引擎的信息源來自於互聯網網頁,經過網絡爬蟲將互聯網的信息獲取到本地. 因 爲互聯網頁面中有至關大比例的內容是徹底相同或者近似重複的,"網頁去重"模塊會對此作 出檢測,並去除重複內容。

創建索引:

        抓取到網頁後,搜索引擎會對網頁進行解析,抽取出網頁主體內容和相關信息,(包括網頁所在URL、編碼類型、頁面內容包含的關鍵詞、關鍵詞位置、生成時間、大小、與其它網頁的連接關係等)。根據必定的相關度算法進行大量複雜計算,獲得每個網頁針對頁面內容中及超鏈中每個關鍵詞的相關度(或重要性),而後用這些相關信息創建網頁創建索引。爲了加快響應用戶査詢的速度,網頁內容經過"倒排索引"這種高效查詢數據 結構來保存,而網頁之間的連接關係也會予以保存。之因此要保存連接關係,是由於這種關係 在網F相關性排序階段是可利用的,經過"連接分析"能夠判斷頁面的相對重要性,對於爲用 戶提供準確的搜索結果幫助很大。

        因爲網頁數量太多,搜索引擎不只須要保存網頁原始信息,還要存儲一些中間的處理結果 使用單臺或者少許的機器明顯是不現實的。Google等商業搜索引擎爲此開發了一整套雲存儲與 雲計算平臺,使用數以萬計的普通廉價PC搭建了海量信息的可靠存儲與計算架構,以此做爲搜索 引擎及其相關應用的基礎支撐。優秀的雲存儲與雲計算平臺已經成爲大型商業搜索引擎的核心 競爭力。 上面所述是搜索引擎如何獲取並存儲海量的網頁相關信息,這些功能由於不須要實時計 算,因此能夠被看作是搜索弓I擎的後臺計算系統。

查詢詞分析

       搜索引擎的最重要目的是爲用戶提供準確全 面的搜索結果,如何響應用戶査詢並實時地提供準確結果構成了搜索引擎前臺計算系統。 當搜索引擎接收到用戶的査詢詞後,首先須要對查詢詞進行分析,但願可以結合查詢詞和 用戶信息來正確推導用戶的真正搜索意圖。在此以後,首先在緩存中査找,搜索引擎的緩存系 統存儲了不一樣的查詢意圖對應的搜索結果,若是可以在緩存系統找到知足用戶需求的信息,則 能夠直接將搜索結果返回給用戶,這樣既省掉了重複計算對資源的消耗,又加快了響應速度; 

搜索結果排序

        若是保存在緩存的信息沒法知足用戶需求,搜索引擎須要調用"網頁排序"模快功能,根據用 戶的査詢實時計算哪些網頁是知足用戶信息需求的,並排序輸出做爲搜索結果。而網頁排序最 重要的兩個參考因素中,一個是內容類似性因素,即哪些網頁是和用戶查詢密切相關的;另外 一個是網頁重要性因素,即哪些網頁是質量較好或者相對重要的,這點每每能夠從連接分析的 結果得到。結合以上兩個考慮因素,就能夠對網頁進行排序,做爲用戶查詢的搜索結果。

 

 

參考文獻: 

《這就是搜索引擎:核心技術詳解》

《搜索引擎—信息檢索實踐》

相關文章
相關標籤/搜索