第一節 搜尋引擎的基本工作機制
大型互連網搜尋引擎的資料中心一般運行數千台甚至數十萬台電腦,而且每天向電腦叢集裡添加數十台機器,以保持與網路發展的同步。搜集機器自動搜集網頁資訊,平均速度每秒數十個網頁,檢索機器則提供容錯的可縮放的體系架構以應對每天數千萬甚至數億的使用者查詢請求。企業搜尋引擎可根據不同的應用規模,從單台電腦到電腦叢集都可以進行部署。
搜尋引擎一般的工作過程是:首先對互連網上的網頁進行搜集,然後對搜集來的網頁進行預先處理,建立網頁索引庫,即時響應使用者的查詢請求,並對尋找到的結果按某種規則進行排序後返回給使用者。搜尋引擎的重要功能是能夠對互連網上的文本資訊提供全文檢索索引。
圖1 搜尋引擎的工作流程
搜尋引擎通過用戶端程式接收來自使用者的檢索請求,現在最常見的用戶端程式就是瀏覽器,實際上它也可以是一個使用者開發的簡單得多的網路應用程式。使用者輸入的檢索請求一般是關鍵詞或者是用邏輯符號串連的多個關鍵詞,搜尋伺服器根據系統關鍵詞字典,把搜尋關鍵詞轉化為wordID,然後在標引庫(倒排檔案)中得到docID列表,對docID列表中的對象進行掃描並與wordID進行匹配,提取滿足條件的網頁,然後計算網頁與關鍵詞的相關度,並根據相關度的數值將前K篇結果(不同的搜尋引擎每頁的搜尋結果數不同)返回給使用者,其處理流程1所示。
圖2描述了一般搜尋引擎的系統架構,其中包括頁面搜集器、索引器、檢索器、索引檔案等部分,下面對其中的主要部分的功能實現進行了介紹。
圖2 搜尋引擎各個組成部分的關係
圖3搜尋引擎抓取網頁過程
一、搜集器
搜尋引擎通過一種程式robot(又稱spider),搜集器的功能是在互連網中漫遊,發現並搜集資訊,它搜集的資訊類型多種多樣,包括HTML頁面、XML文檔、Newsgroup文章、FTP檔案、文書處理文檔、多媒體資訊等。搜尋器是一個電腦程式,其實現常常採用分布式和平行處理技術,以提高資訊發現和更新的效率。商業搜尋引擎的搜集器每天可以搜集幾百萬甚至更多的網頁。搜尋器一般要不停地運行,要儘可能多、儘可能快地搜集互連網上的各種類型的新資訊。因為互連網上的資訊更新很快,所以還要定期更新已經搜集過的舊資訊,以避免死連結和無效連結。另外,因為Web資訊是動態變化的,因此搜集器、分析器和索引器要定期更新資料庫,更新周期通常約為幾周甚至幾個月。索引資料庫越大,更新也越困難。
互連網上的資訊太多,即使功能強大的搜集器也不可能搜集互連網上的全部資訊。因此,搜集器採用一定的搜尋策略對互連網進行遍曆並下載文檔,例如,一般採用以廣度優先搜尋策略為主、線性搜尋策略為輔的搜尋策略。
在搜集器實現時,系統中維護一個超鏈隊列,或者堆棧,其中包含一些起始URL(
理解成像DMOZ、Yahoo目錄Google sitemap等),搜集器從這些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)、出現位置(如標題、內容)、時間資訊、長度資訊等等。目前一些公司和機構正在考慮制定查詢選項的標準。
在查詢輸出介面中,搜尋引擎將檢索結果展現為一個線性文檔列表,其中包含了文檔的標題、摘要、快照和超鏈等資訊。由於檢索結果中相關文檔和不相關文檔相互混雜,使用者需要逐個瀏覽以找出所需文檔。