搜索引擎的工作機制[圖]

轉自:http://news.xinhuanet.com/newmedia/2006-07/10/content_4813163.htm

搜索引擎是一種依靠技術取勝的產品,搜索引擎的各個組成部分,包括頁面蒐集器、索引器、檢索器等,都是搜索引擎產品提供商進行比拼的着力點。

    近幾年,搜索引擎的商業化取得了巨大的成功,如著名搜索引擎公司Google、Yahoo(本文中提到Yahoo時,特指英文Yahoo)、百度等紛紛成功上市,引發了衆多公司涉足於該領域,帶動了人力、資本的大量投入,連軟件巨人Microsoft公司也禁不住誘惑積極打造自己的搜索引擎。但是,從性能上來說,目前的搜索引擎還不盡如人意,搜索返回的結果往往與用戶的檢索要求相去甚遠,有效性還不是很高。本文將對搜索引擎的工作原理及其實現技術進行分析,從中可以瞭解限制搜索引擎用戶體驗改善的因素到底有哪些。

搜索引擎的工作過程

    大型互聯網搜索引擎的數據中心一般運行數千臺甚至數十萬臺計算機,而且每天向計算機集羣裏添加數十臺機器,以保持與網絡發展的同步。蒐集機器自動蒐集網頁信息,平均速度每秒數十個網頁,檢索機器則提供容錯的可縮放的體系架構以應對每天數千萬甚至數億的用戶查詢請求。企業搜索引擎可根據不同的應用規模,從單臺計算機到計算機集羣都可以進行部署。

    搜索引擎一般的工作過程是: 首先對互聯網上的網頁進行蒐集,然後對蒐集來的網頁進行預處理,建立網頁索引庫,實時響應用戶的查詢請求,並對查找到的結果按某種規則進行排序後返回給用戶。搜索引擎的重要功能是能夠對互聯網上的文本信息提供全文檢索。

圖1 搜索引擎的工作流程

    搜索引擎通過客戶端程序接收來自用戶的檢索請求,現在最常見的客戶端程序就是瀏覽器,實際上它也可以是一個用戶開發的簡單得多的網絡應用程序。用戶輸入的檢索請求一般是關鍵詞或者是用邏輯符號連接的多個關鍵詞,搜索服務器根據系統關鍵詞字典,把搜索關鍵詞轉化爲wordID,然後在標引庫(倒排文件)中得到docID列表,對docID列表中的對象進行掃描並與wordID進行匹配,提取滿足條件的網頁,然後計算網頁和關鍵詞的相關度,並根據相關度的數值將前K篇結果(不同的搜索引擎每頁的搜索結果數不同)返回給用戶,其處理流程如圖1所示。

    圖2描述了一般搜索引擎的系統架構,其中包括頁面蒐集器、索引器、檢索器、索引文件等部分,下面對其中的主要部分的功能實現進行了介紹。

圖2 搜索引擎各個組成部分的關係

    蒐集器

    蒐集器的功能是在互聯網中漫遊,發現並蒐集信息,它蒐集的信息類型多種多樣,包括HTML頁面、XML文檔、Newsgroup文章、FTP文件、字處理文檔、多媒體信息等。搜索器是一個計算機程序,其實現常常採用分佈式和並行處理技術,以提高信息發現和更新的效率。商業搜索引擎的蒐集器每天可以蒐集幾百萬甚至更多的網頁。搜索器一般要不停地運行,要儘可能多、儘可能快地蒐集互聯網上的各種類型的新信息。因爲互聯網上的信息更新很快,所以還要定期更新已經蒐集過的舊信息,以避免死鏈接和無效鏈接。另外,因爲Web信息是動態變化的,因此蒐集器、分析器和索引器要定期更新數據庫,更新週期通常約爲幾周甚至幾個月。索引數據庫越大,更新也越困難。

    互聯網上的信息太多,即使功能強大的蒐集器也不可能蒐集互聯網上的全部信息。因此,蒐集器採用一定的搜索策略對互聯網進行遍歷並下載文檔,例如,一般採用以寬度優先搜索策略爲主、線性搜索策略爲輔的搜索策略。

    在蒐集器實現時,系統中維護一個超鏈隊列,或者堆棧,其中包含一些起始URL,蒐集器從這些URL出發,下載相應的頁面,並從中抽取出新的超鏈加入到隊列或者堆棧中,上述過程不斷重複隊列直到堆棧爲空。爲提高效率,搜索引擎將Web空間按照域名、IP地址或國家域名進行劃分,使用多個蒐集器並行工作,讓每個搜索器負責一個子空間的搜索。爲了便於將來擴展服務,蒐集器應能改變搜索範圍。

    1.線性蒐集策略

    線形搜索策略的基本思想是從一個起始的IP地址出發,按IP地址遞增的方式搜索後續的每一個IP地址中的信息,完全不考慮各站點的HTML文件中指向其他Web站點的超鏈地址。此策略不適用於大規模的搜索(主要原因在於IP可能是動態的),但可以用於小範圍的全面搜索,利用此種策略的蒐集器可以發現被引用較少或者還沒有被其他HTML文件引用的新HTML文件信息源。

    2. 深度優先蒐集策略

    深度優先蒐集策略是早期開發蒐集器使用較多的一種方法,它的目的是要達到被搜索結構的葉結點。深度優先搜索順着HTML文件上的超鏈走到不能再深入爲止,然後返回到上一個接點的HTML文件,再繼續選擇該HTML文件中的其他超鏈。當不再有其他超鏈可選擇時,說明搜索已經結束。深度優先搜索適宜遍歷一個指定的站點或者深層嵌套的HTML文件集,但對於大規模的搜索,由於Web結構相當深,也許永遠也出不來了。

    3. 寬度優先蒐集策略

    寬度優先蒐集策略是先搜索同一層中的內容,然後再繼續搜索下一層。假如一個HTML文件中有三個超鏈,選擇其中之一併處理相應的HTML文件,然後返回並選擇剛纔第一個網頁的第二個超鏈,處理相應的HTML文件,再返回。一旦同一層上的所有超鏈都已被處理過,就可以開始在剛纔處理過的HTML文件中搜索其餘的超鏈。這樣保證了對淺層的首先處理,當遇到一個無窮盡的深層分支時,也就不會再陷進去。寬度優先蒐集策略容易實現並被廣泛採用,但是需要花費比較長的時間才能到達深層的HTML文件。

    4. 收錄蒐集策略

    有些網頁可以通過用戶提交的方式進行蒐集,例如某些商業網站向搜索引擎發出收錄申請,蒐集器就可以定向蒐集提交申請網站的網頁信息並加入到搜索引擎的索引數據庫中。

    分析器

    對蒐集器蒐集來的網頁信息或者下載的文檔一般要首先進行分析,以用於建立索引,文檔分析技術一般包括: 分詞(有些僅從文檔某些部分抽詞,如Altavista)、過濾(使用停用詞表stoplist)、轉換(有些對詞條進行單複數轉換、詞綴去除、同義詞轉換等工作),這些技術往往與具體的語言以及系統的索引模型密切相關。

    索引器

    索引器的功能是對搜索器所搜索的信息進行分析處理,從中抽取出索引項,用於表示文檔以及生成文檔庫的索引表。索引項有元數據索引項和內容索引項兩種: 元數據索引項與文檔的語意內容無關,如作者名、URL、更新時間、編碼、長度、鏈接流行度等等; 內容索引項是用來反映文檔內容的,如關鍵詞及其權重、短語、單字等等。內容索引項可以分爲單索引項和多索引項(或稱短語索引項)兩種。單索引項對於英文來講是英語單詞,比較容易提取,因爲單詞之間有天然的分隔符(空格); 對於中文等連續書寫的語言,必須進行詞語的切分。在搜索引擎中,一般要給單索引項賦予一個權值,以表示該索引項對文檔的區分度,同時用來計算查詢結果的相關度。使用的方法一般有統計法、信息論法和概率法。短語索引項的提取方法有統計法、概率法和語言學法。

    爲了快速查找到特定的信息,建立索引數據庫是一個常用的方法,即將文檔表示爲一種便於檢索的方式並存儲在索引數據庫中。索引數據庫的格式是一種依賴於索引機制和算法的特殊數據存儲格式。索引的質量是Web信息檢索系統成功的關鍵因素之一。一個好的索引模型應該易於實現和維護、檢索速度快、空間需求低。搜索引擎普遍借鑑了傳統信息檢索中的索引模型,包括倒排文檔、矢量空間模型、概率模型等。例如在矢量空間索引模型中,每個文檔d都表示爲一個範化矢量V(d)=(t1,w1 (d)…ti,w1(d)…tn,wn(d))。其中ti爲詞條項,wi(d)爲ti在d中的權值,一般被定義爲ti在d中出現頻率tfi(d)的函數。

    索引器的輸出是索引表,它一般使用倒排形式(Inversion List),即由索引項查找相應的文檔。索引表也可能記錄索引項在文檔中出現的位置,以便檢索器計算索引項之間的相鄰或接近關係(proximity)。索引器可以使用集中式索引算法或分佈式索引算法。當數據量很大時,必須實現實時索引(Instant Indexing),否則就無法跟上信息量急劇增加的速度。索引算法對索引器的性能(如大規模峯值查詢時的響應速度)有很大的影響。一個搜索引擎的有效性在很大程度上取決於索引的質量。

    檢索器

    檢索器的功能是根據用戶的查詢在索引庫中快速檢出文檔,進行文檔與查詢的相關度評價,對將要輸出的結果進行排序,並實現某種用戶相關性反饋機制。檢索器常用的信息檢索模型有集合理論模型、代數模型、概率模型和混合模型等多種,可以查詢到文本信息中的任意字詞,無論出現在標題還是正文中。

    檢索器從索引中找出與用戶查詢請求相關的文檔,採用與分析索引文檔相識的方法來處理用戶查詢請求。如在矢量空間索引模型中,用戶查詢q首先被表示爲一個範化矢量V(q)=(t1,w1(q); …; ti,wi(q); …; tn,wn(q)),然後按照某種方法來計算用戶查詢與索引數據庫中每個文檔之間的相關度,而相關度可以表示爲查詢矢量V(q)與文檔矢量V(d)之間的夾角餘弦,最後將相關度大於閥值的所有文檔按照相關度遞減的順序排列並返還給用戶。當然搜索引擎的相關度判斷並不一定與用戶的需求完全吻合。

    用戶接口

    用戶接口的作用是爲用戶提供可視化的查詢輸入和結果輸出界面,方便用戶輸入查詢條件、顯示查詢結果、提供用戶相關性反饋機制等,其主要目的是方便用戶使用搜索引擎,高效率、多方式地從搜索引擎中得到有效的信息。用戶接口的設計和實現必須基於人機交互的理論和方法,以適應人類的思維和使用習慣。

    在查詢界面中,用戶按照搜索引擎的查詢語法制定待檢索詞條及各種簡單或高級檢索條件。簡單接口只提供用戶輸入查詢串的文本框,複雜接口可以讓用戶對查詢條件進行限制,如邏輯運算(與、或、非)、相近關係(相鄰、NEAR)、域名範圍(如edu、com)、出現位置(如標題、內容)、時間信息、長度信息等等。目前一些公司和機構正在考慮制定查詢選項的標準。

    在查詢輸出界面中,搜索引擎將檢索結果展現爲一個線性的文檔列表,其中包含了文檔的標題、摘要、快照和超鏈等信息。由於檢索結果中相關文檔和不相關文檔相互混雜,用戶需要逐個瀏覽以找出所需文檔。

搜索引擎的中文分詞技術

    中文自動分詞是網頁分析的基礎。在網頁分析的過程中,中文與英文的處理方式是不同的,這是因爲中文信息與英文信息有一個明顯的差別: 英文單詞之間有空格,而中文文本中詞與詞之間沒有分割符。這就要求在對中文網頁進行分析之前,先要將網頁中的句子切割成一個個的詞的序列,這就是中文分詞。中文自動分詞涉及到許多自然語言處理技術和評價標準,在搜索引擎中,我們主要關心中文自動分詞的速度和準確度。分詞準確性對搜索引擎來說十分重要,但如果分詞速度太慢,即使準確性再高,對於搜索引擎來說也是不可用的,因爲搜索引擎需要處理數以億計的網頁,如果分詞耗用的時間過長,會嚴重影響搜索引擎內容更新的速度。因此,搜索引擎對分詞的準確性和速度都提出了很高的要求。

    目前,中文自動分詞比較成熟的技術是基於分詞詞典的機械分詞方法。這種方法是按照一定的策略將要分析的漢字串與詞典中的詞條進行匹配。根據匹配策略的不同,機械分詞方法又有如下幾種算法: 正向最大匹配算法、逆向最大匹配算法、最少分詞算法等。這種方法的優點是分詞的速度快,準確度有一定的保證,但對未登錄詞的處理效果較差。實驗結果表明: 正向最大匹配的錯誤率爲1/169左右,逆向最大匹配的錯誤率爲1/245左右。另一種比較常用的中文自動分詞方法是基於統計的分詞方法,這種方法是對語料中的字組頻度進行統計,不需要切分詞典,因此也稱爲無詞典分詞方法。但該方法經常把不是詞的常用字組當成詞,對常用詞的識別精度較差,時空開銷也比較大。在搜索引擎領域的實際應用中,一般將機械分詞方法與統計分詞方法相結合,先進行串匹配分詞,然後使用統計方法識別一些未登錄的新詞,這樣既發揮了匹配分詞速度快、效率高的優勢,又利用了統計分詞中新詞自動識別和自動消除分詞歧義的特點。

    分詞詞典是影響中文自動分詞的一個重要因素,其規模一般在6萬條詞左右,詞典太大或太小都是不合適的; 辭典太小,有些詞切分不出來,辭典太大,切分過程中起義現象將大大增加,同樣影響分詞的精度。因此,分詞詞典中詞條的選擇是非常嚴格的。對於不斷出現新詞的網絡領域,僅僅使用6萬條詞左右的分詞詞典是不夠的,但隨意向分詞詞典中加入新詞將導致分詞精度下降,一般的解決方法是使用輔助詞典,其規模在50萬詞條左右。另外,中文自動分詞的難點在於分詞歧義的處理和未登錄詞的識別,如何處理這兩個問題一直是該領域研究的熱點。

    1. 歧義處理

    歧義是指可能有兩種或者更多的切分方法。例如: “表面的”這個詞組,因爲“表面”和“面的”都是詞,那麼這個短語就可以分成“表面+的”和“表+面的”。這種稱爲交叉歧義。像這種交叉歧義十分常見,“化妝和服裝”可以分成“化妝+和+服裝”或者“化妝+和服+裝”。由於沒有人的知識去理解,計算機很難知道到底哪個方案正確。

    交叉歧義相對組合歧義來說是還算比較容易處理,組合歧義就必須根據整個句子來判斷了。

    例如,在句子“這個門把手壞了”中,“把手”是個詞,但在句子“請把手拿開”中,“把手”就不是一個詞; 在句子“將軍任命了一名中將”中,“中將”是個詞,但在句子“產量三年中將增長兩倍”中,“中將”就不再是詞。這些詞計算機又如何去識別?

    即使交叉歧義和組合歧義計算機都能解決的話,在歧義中還有一個難題,是真歧義。真歧義意思是給出一句話,由人去判斷也不知道哪個應該是詞、哪個應該不是詞。例如: “乒乓球拍賣完了”,可以切分成“乒乓+球拍+賣+完+了”、也可切分成“乒乓球+拍賣+完+了”,如果沒有上下文其他的句子,恐怕誰也不知道“拍賣”在這裏算不算一個詞。

    對歧義現象的處理方法一般採用類似於動態規劃的算法將歧義問題的求解轉化爲一個優化問題的求解。在求解過程中,一般使用詞頻或概率等輔助信息求得一個最大可能的分詞結果,這個結果在某種意義下是最佳的。

    2. 未登錄詞處理

    未登錄詞就是分詞詞典中沒有的詞,也稱爲新詞。最典型的是人名、地名、專業術語等。例如,人可以很容易理解句子“王軍虎去廣州了”中,“王軍虎”是個詞,因爲是一個人的名字,但要是讓計算機去識別就困難了。如果把“王軍虎”作爲一個詞收錄到字典中去,全世界有那麼多名字,而且每時每刻都有新增的人名,收錄這些人名本身就是一項巨大的工程。即使這項工作可以完成,還是會存在問題,例如: 在句子“王軍虎頭虎腦”中的,“王軍虎”還能不能算詞?

    未登錄詞中除了人名以外,還有機構名、地名、產品名、商標名、簡稱、省略語等都是很難處理的問題,而且這些又正好是人們經常使用的詞,因此對於搜索引擎來說,分詞系統中的新詞識別十分重要。目前,對未登錄詞的處理一般採用統計的方法,首先從語料中統計出出現頻率較高的字組,然後按照某種規則把它們作爲新詞添加到輔助詞典中。

    目前,中文自動分詞技術在搜索引擎中已經得到廣泛應用,分詞準確度已經達到96%以上,但是在對大規模網頁進行分析處理的時候,現有的中文自動分詞技術還存在許多不足,例如上面提到的歧義問題和未登錄詞的處理問題等。因此,國內外的科研院校,如北大、清華、中科院、北京語言學院、東北大學、IBM研究院、微軟中國研究院等都一直關注並研究中文自動分詞技術,這主要是因爲網絡上的中文信息越來越多,對網絡上的中文信息的處理必將成爲一個巨大的產業和廣闊的市場,存在無限的商機。但是,中文自動分詞技術要想更好地服務於網絡中文信息的處理並形成產品,還要在基礎研究方面和系統的集成方面做許多工作。

搜索引擎面臨的挑戰

    目前的搜索引擎不可能做到“博大精深”,這是因爲它們是矛盾的兩個方面,不可兼得。隨着互聯網信息的急劇增長,關於搜索引擎的“博大”越來越難實現,從利用信息的角度也完全沒有必要,“精深”反而是人們越來越重視並追求的指標。另外,多層次的搜索服務體系遠遠沒有建立起來,傳統搜索重導航作用、輕精準信息服務,就像行人問路,行人需要的不僅僅是方向,還要知道具體的路標指示。

    現在人們經常談論下一代搜索引擎,那麼,下一代搜索引擎與第二代搜索引擎有什麼不同?又有什麼關係?它應該包括哪些功能?這些都是應該回答的問題,但答案是衆說紛紜。也許下一代搜索引擎融入了更強勁的智能化、人機交互等方法來改善相關度的計算,也許下一代搜索引擎不僅僅運行在大規模服務器上,更有可能的是運行在共享計算資源的個人電腦集羣上,或者植入“搜索芯片”中,也許其索引庫的邊界已經模糊、也許更加清晰,也許當下搜索巨頭通過資金、品牌等人爲地不斷樹立的商業壁壘,終究抵擋不住創新搜索技術的顛覆,正如當初Google將Altavista無聲地瓦解一樣。

——————————————————————————

 [相關鏈接]

    搜索引擎的技術流派

    搜索引擎的技術流派可以分爲三類:第一類是利用計算機程序自動進行信息處理的自動化派,其典型代表是Google以及Ghunt等;第二類是以人工進行信息分類處理爲主的人力加工派,這方面的典型代表是早期的Yahoo,正在興起的Web 2.0、網摘等社區化搜索是這一流派的新發展;第三類是強調智能化人機交互、協同的融合派,目前英文Yahoo的搜索引擎在發展這方面的技術,MSN Live也顯示出其更加重視融合性的技術,聯索IFACE專業搜索融入了用戶知識和機器學習方法,可以看做是融合派在中文搜索引擎方面的典型代表。

    如果按照網頁庫的容量、相關度計算技術、用戶搜索體驗以及商業模式等方面來劃分,到目前爲止,搜索引擎的發展大約經歷了兩代。第一代搜索引擎(1994年~1997年)的索引網頁量一般都在數百萬量級左右,採用全文檢索技術和分佈式並行運算技術,但極少重新蒐集網頁並去刷新索引,而且其檢索速度較慢,一般都要等待10秒甚至更長的時間,同時承受的檢索請求也受到很大限制,商業模式處於探索期並且尚未成型。

    第二代搜索引擎(1998年至今)大多采用分佈式協同處理方案,其網頁索引庫一般都在數千萬個網頁量級甚至更多,採用可伸縮的索引庫架構,每天能夠響應數千萬次甚至數以億計的用戶檢索請求。1997年11月,當時最先進的幾個搜索引擎宣稱能建立1億數量級的網頁索引。以Google爲代表的第二代搜索引擎通過鏈接分析和點擊分析(網頁流行度)方法來計算(網頁權威性)相關度取得了巨大的成功。另外,以自然語言進行問題解答的搜索引擎在某種程度上改善了用戶體驗,更重要的是第二代搜索引擎奠定了目前搜索引擎普遍採用的成熟商業模式,如Google、Overture、百度等收費搜索服務均受益於此商業模式。

    相關名詞解釋

  全文搜索引擎 是由一個稱爲蜘蛛(Spider)的機器人程序以某種策略自動地在互聯網中搜集和發現信息,由索引器爲蒐集到的信息建立網頁索引數據庫,由檢索器根據用戶輸入的查詢條件檢索索引庫,並將查詢結果返回給用戶。服務方式是面向網頁的全文檢索服務。

    目錄索引搜索引擎 主要以人工方式蒐集信息,由編輯人員查看信息之後,人工形成信息摘要,並將信息置於事先確定的分類框架中。信息大多面向網站,提供目錄瀏覽服務和直接檢索服務。用戶完全可以不用關鍵詞(Keywords)進行查詢,僅靠分類目錄也可找到需要的信息。

    元搜索引擎 是指在統一的用戶查詢界面與信息反饋的形式下,共享多個搜索引擎的資源庫爲用戶提供信息服務的系統。元搜索引擎是藉助於其他搜索引擎進行工作,沒有自己的索引庫,它是將用戶的查詢請求同時向多個搜索引擎遞交,將返回的結果進行重複排除、重新排序等處理後,作爲自己的結果返回給用戶。

  自動分類技術 是計算機根據分類標準自動將文檔歸類到已經存在的類別體系(或者主題)下的某一個具體類別中。目前自動分類並不能完全代替人工所做的相關工作,只是提供了一個花費較少的可選擇方法。

    文本聚類技術 是利用計算機將已經存在的大量文本(很多文檔)進行分組的全自動處理過程。聚類可以提供對一個大的文本集內容的概況瞭解,可以識別隱藏的共同點,可以便捷地瀏覽相近或相關的文本。

    網文摘錄 又稱網摘,它具有對內容頁的收藏、分類、摘錄、加註標籤、保存到信息庫、信息庫共享等功能,主要是爲了滿足用戶閱讀網絡內容和信息知識積累的需要。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章