中文搜索引擎四大技術揭密:系統架構
 
  互聯網發展的今天,一方面離不開其開放、共享的特性帶給人們的全新體驗,另一方面也離不開數以億計的為其提供各類豐富內容的網絡節點。互聯網被普及前,人們查閱資料第一想到的便是擁有大量書籍資料的圖書館,到了今天你怎么想?或許今天的很多人都會選擇一種更方便、快捷、全面、準確的方式——互聯網。你可以坐在家里輕點幾下鼠標就查到想要的各類信息,這在互聯網沒有被普及之前,還都僅是一個夢而已,但如今這一切已成為了可能。
 
  而幫助你通過整個互聯網快速查找到目標信息的就是越來越被重視的搜索引擎。有關搜索引擎的技術資料網絡上已經很多,關于搜索引擎經濟的多方面報道各大媒體也都已經鋪天蓋地,因此在這里小編并不想過多的談論這些方面的感受,只想在本次“中文搜索引擎技術揭密”系列文章全部完成之際來聊一下搜索引擎對小編的深遠影響。
 
  記得2000年左右網絡上開始大量出現免費個人主頁空間,當時的小編還只是一個剛剛進入IT圈的小朋友,看著這些空間那叫一個口水橫流,于是乎立刻申請了一個。又經過了一個多月的刻苦修煉和先后三次的改版,自己有生以來的第一個個人主頁誕生了。可看著每天寥寥無幾的訪問量,心里那叫一個難受,可一時間也想不到好辦法解決問題。突然有天發現一篇介紹如何在搜索引擎注冊自己個人網站的文章,于是小編就照著文章所講的分別在SOHU、網易等搜索引擎的相關分類目錄下注冊了自己的個人主頁。直至今日,小編才確切的知道了當時盛行的搜索引擎都屬“目錄搜索引擎”。這實際上是小編第一次使用、認識搜索引擎,再后來通過每天個人主頁不斷上升的數字小編感覺到了搜索引擎的神奇。
 
  其實正是由于搜索引擎,才使小編的個人主頁被更多的人所熟識,以至于后來有多份工作都是因為這個個人主頁所帶來的機會。其實這些經歷或許很多人都有切身的體會,同樣也有很多人因此去全身投入到互聯網工作中。這正像那句話講的“世界真奇妙,不看不知道”,小編在此多加一句“到底怎么看,搜索引擎幫你忙!”
 
  互聯網在近10年的得到飛速發展,互聯網正在逐漸深入人們的生活,改變人們的生活。互聯網經濟也經歷了風風雨雨,從緩慢起步到急速膨脹,從泡沫破滅到逐步回暖;從“網絡廣告”到“拇指經濟”,從“網絡游戲”到“搜索力經濟”。目前,搜索引擎成為最受人們關注的焦點之一,也成為億萬富翁的制造搖籃。越來越多的公司都希望在搜索引擎這座金礦中挖到筐金子,其中許多人會選擇擁有自己的搜索引擎。國內著名搜索引擎公司百度(http://www.baidu.com)總裁李彥宏說:搜索引擎不是人人都能做的領域,進入的門檻比較高。
中文搜索引擎四大技術揭密:系統架構
 
  搜索引擎的門檻到底有多高?搜索引擎的門檻主要是技術門檻,包括網頁數據的快速采集、海量數據的索引和存儲、搜索結果的相關性排序、搜索效率的毫秒級要求、分布式處理和負載均衡、自然語言的理解技術等等,這些都是搜索引擎的門檻。對于一個復雜的系統來說,各方面的技術固然重要,但整個系統的架構設計也同樣不可忽視,搜索引擎也不例外。
 
  搜索引擎技術和分類
 
  搜索引擎的技術基礎是全文檢索技術,從20世紀60年代,國外對全文檢索技術就開始有研究。全文檢索通常指文本全文檢索,包括信息的存儲、組織、表現、查詢、存取等各個方面,其核心為文本信息的索引和檢索,一般用于企事業單位。隨著互聯網信息的發展,搜索引擎在全文檢索技術上逐漸發展起來,并得到廣泛的應用,但搜索引擎還是不同于全文檢索。搜索引擎和常規意義上的全文檢索主要區別有以下幾點:
 
  1、數據量
 
  傳統全文檢索系統面向的是企業本身的數據或者和企業相關的數據,一般索引庫規模多在GB級,數據量大的也只有幾百萬條;但互聯網網頁搜索需要處理幾十億的網頁,搜索引擎的策略都是采用服務器群集和分布式計算技術。
 
  2、內容相關性
 
  信息太多,查準和排序就特別重要,Google等搜索引擎采用網頁鏈接分析技術,根據互聯網上網頁被鏈接次數作為重要性評判的依據;但全文檢索的數據源中相互鏈接的程度并不高,不能作為判別重要性的依據,只能基于內容的相關性排序。
 
  3、安全性
 
  互聯網搜索引擎的數據來源都是互聯網上公開的信息,而且除了文本正文以外,其它信息都不太重要;但企業全文檢索的數據源都是企業內部的信息,有等級、權限等限制,對查詢方式也有更嚴格的要求,因此其數據一般會安全和集中地存放在數據倉庫中以保證數據安全和管理的要求。
 
  4、個性化和智能化
 
  搜索引擎面向的是互聯網訪問者,由于其數據量和客戶數量的限制,自然語言處理技術、知識檢索、知識挖掘等計算密集的智能計算技術很難應用,這也是目前搜索引擎技術努力的方向;而全文檢索數據量小,檢索需求明確,客戶量少,在智能化和個性可走得更遠。
 
  搜索引擎與全文檢索除了以上的區別外,還結合互聯網信息的特點形成了三個不同的類型:
 
  全文檢索搜索引擎:全文搜索引擎是名副其實的搜索引擎,國外具代表性的有Google、yahoo、AllTheWeb 等,國內著名的有百度(http://www.Baidu.com)、中搜、360、搜狗等。它們都是通過從互聯網上提取的各個網站的信息(以網頁文字為主)而建立的數據庫,檢索與用戶查詢條件匹配的相關記錄,然后按一定的排列順序將結果返回給用戶,也是目前常規意義上的搜索引擎。
 
  目錄搜索引擎:目錄索引雖然有搜索功能,但在嚴格意義上算不上是真正的搜索引擎,僅僅是按目錄分類的網站鏈接列表而已。用戶完全可以不用進行關鍵詞查詢,僅靠分類目錄也可找到需要的信息。國外比較著名的目錄索引搜索引擎有yahoo Open Directory Project(DMOZ)、LookSmart等。國內的搜狐、新浪、網易搜索也都具有這一類功能。
 
  元搜索引擎:元搜索引擎在接受用戶查詢請求時,同時在其它多個引擎上進行搜索,并將結果返回給用戶。著名的元搜索引擎有Dogpile、Vivisimo等,國內元搜索引擎中具代表性的有搜星搜索引擎,優客搜索。在搜索結果排列方面,有的直接按來源引擎排列搜索結果,如Dogpile,有的則按自定的規則將結果重新排列組合,如Vivisimo。
 
  其他的像新浪、網易、A9等搜索引擎都是調用其它全文檢索搜索引擎,或者在其搜索結果的基礎上做了二次開發。
 
  搜索引擎的系統架構
 
  這里主要針對全文檢索搜索引擎的系統架構進行說明,下文中提到的搜索引擎如果沒有特殊說明也是指全文檢索搜索引擎。搜索引擎的實現原理,可以看作四步:從互聯網上抓取網頁→建立索引數據庫→在索引數據庫中搜索→對搜索結果進行處理和排序。
 
  1、從互聯網上抓取網頁
 
  利用能夠從互聯網上自動收集網頁的網絡蜘蛛程序,自動訪問互聯網,并沿著任何網頁中的所有URL爬到其它網頁,重復這過程,并把爬過的所有網頁收集到服務器中。
 
  2、建立索引數據庫
 
  由索引系統程序對收集回來的網頁進行分析,提取相關網頁信息(包括網頁所在URL、編碼類型、頁面內容包含的關鍵詞、關鍵詞位置、生成時間、大小、與其它網頁的鏈接關系等),根據一定的相關度算法進行大量復雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度(或重要性),然后用這些相關信息建立網頁索引數據庫。
 
  3、在索引數據庫中搜索
 
  當用戶輸入關鍵詞搜索后,分解搜索請求,由搜索系統程序從網頁索引數據庫中找到符合該關鍵詞的所有相關網頁。
 
  4、對搜索結果進行處理排序
 
  所有相關網頁針對該關鍵詞的相關信息在索引庫中都有記錄,只需綜合相關信息和網頁級別形成相關度數值,然后進行排序,相關度越高,排名越靠前。最后由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。
 
 
  “網絡蜘蛛”從互聯網上抓取網頁,把網頁送入“網頁數據庫”,從網頁中“提取URL”,把URL送入“URL數據庫”,“蜘蛛控制”得到網頁的URL,控制“網絡蜘蛛”抓取其它網頁,反復循環直到把所有的網頁抓取完成。
 
  系統從“網頁數據庫”中得到文本信息,送入“文本索引”模塊建立索引,形成“索引數據庫”。同時進行“鏈接信息提取”,把鏈接信息(包括錨文本、鏈接本身等信息)送入“鏈接數據庫”,為“網頁評級”提供依據。
 
  “用戶”通過提交查詢請求給“查詢服務器”,服務器在“索引數據庫”中進行相關網頁的查找,同時“網頁評級”把查詢請求和鏈接信息結合起來對搜索結果進行相關度的評價,通過“查詢服務器”按照相關度進行排序,并提取關鍵詞的內容摘要,組織最后的頁面返回給“用戶”。
 
  搜索引擎的索引和搜索
 
  對于網絡蜘蛛技術和排序技術請參考作者其它文章,這里以Google搜索引擎為例主要介紹搜索引擎的數據索引和搜索過程。
 
  數據的索引分為三個步驟:網頁內容的提取、詞的識別、標引庫的建立。
 
  互聯網上大部分信息都是以HTML格式存在,對于索引來說,只處理文本信息。因此需要把網頁中文本內容提取出來,過濾掉一些腳本標示符和一些無用的廣告信息,同時記錄文本的版面格式信息[1]。詞的識別是搜索引擎中非常關鍵的一部分,通過字典文件對網頁內的詞進行識別。對于西文信息來說,需要識別詞的不同形式,例如:單復數、過去式、組合詞、詞根等,對于一些亞洲語言(中文、日文、韓文等)需要進行分詞處理[3]。識別出網頁中的每個詞,并分配唯一的wordID號,用于為數據索引中的標引模塊服務。
 
  標引庫的建立是數據索引中結構最復雜的一部分。一般需要建立兩種標引:文檔標引和關鍵詞標引。文檔標引分配每個網頁一個唯一的docID號,根據docID標引出在這個網頁中出現過多少過wordID,每個wordID出現的次數、位置、大小寫格式等,形成docID對應wordID的數據列表;關鍵詞標引其實是對文檔標引的逆標引,根據wordID標引出這個詞出現在那些網頁(用wordID表示),出現在每個網頁的次數、位置、大小寫格式等,形成wordID對應docID的列表。
 
  關于索引數據的詳細數據結構,有興趣的朋友可以參看文獻[4]。
 
  搜索的處理過程是對用戶的搜索請求進行滿足的過程,通過用戶輸入搜索關鍵字,搜索服務器對應關鍵詞字典,把搜索關鍵詞轉化為wordID,然后在標引庫中得到docID列表,對docID列表進行掃描和wordID的匹配,提取滿足條件的網頁,然后計算網頁和關鍵詞的相關度,根據相關度的數值返回前K篇結果(不同的搜索引擎每頁的搜索結果數不同)返回給用戶。如果用戶查看的第二頁或者第多少頁,重新進行搜索,把排序結果中在第K+1到2*K的網頁組織返回給用戶。
 
  搜索引擎細化趨勢
 
  隨著搜索引擎市場空間越來越大,搜索引擎也分得越來越細。互聯網沒有國界,百度總裁李彥宏所講:搜索引擎市場是贏家通吃的市場。如果一個搜索引擎要想在搜索市場上有自己的一席之地,必須擁有自己的特色。而且,數以億計的網民,搜索需求不可能都一樣,不同類型的用戶需要不同類型的搜索引擎,網頁搜索只是搜索需求中的一種,這就決定了搜索引擎會不斷細化,各具特色的搜索引擎也陸續出現。
 
  從技術上講,各種搜索引擎都具有類似的系統架構,其不同在于搜索的數據源的不同。除了上面提到的網頁搜索引擎以外,下面列舉幾個典型的搜索引擎:
 
  新聞搜索引擎
 
  看新聞是許多網民上網的主要目的,新聞搜索也就成了查看新聞的重要工具。新聞搜索引擎實現的過程比較簡單,一般是掃描國內外有名的新聞網站,抓取新聞網頁,建立自己的新聞數據庫,然后提供搜索,只是對新聞網頁抓取的頻率要求很高,有的需要做到幾分鐘掃描一次。現在許多大型的網頁搜索引擎都提供相應的新聞搜索功能,如:Google新聞搜索,中搜新聞搜索,百度新聞搜索等。
 
  音樂搜索引擎
 
  有了互聯網以后,音樂得到了廣泛的傳播,對于喜歡音樂的網民來說,音樂搜索引擎成了最鐘愛的工具。音樂搜索引擎需要監控互聯網上大型的音樂網站,抓取其音樂數據的描述信息,形成自己的數據庫,音樂的下載和試聽都會在其原來的音樂網站上進行。目前有:搜刮網,百度mp3搜索,1234567搜索等。
 
  圖像搜索引擎
 
  通過圖像搜索引擎可以找到自己感興趣的圖片鏈接,各大搜索引擎也提供了圖像搜索功能。圖像文件本身不能夠被搜索引擎索引,但搜索引擎可以通過鏈接文本分析和圖片注解等得到圖片的信息。目前有:Google圖像搜索,VisionNext搜索,百度圖像搜索等。
 
  商機搜索引擎
 
  電子商務一直是互聯網的熱點,商機搜索對電子商務的發展也起到了巨大的推動作用,商機搜索讓互聯網經濟和傳統經營緊密結合在一起,給傳統的企業提供了一個新的銷售模式。商機搜索引擎,通過抓取電子商務網站的商品信息和其他商業信息,給訪問者提供統一的搜索平臺。目前有:soaso價格搜索引擎,8848購物搜索,阿里巴巴商機搜索等。
 
  其他特色的搜索引擎還有專利搜索、軟件搜索、ftp搜索、游戲搜索、法律搜索等等。