1.搜索引擎的概念
在浩瀚的網絡資源中,搜素引擎(Search Engine)是一種網上信息檢索工具,它能幫助用戶迅速而全面地找到所需要的信息。我們這樣對搜索引擎進行定義:搜索引擎是一種能夠通過因特網接受用戶的查詢命令,并向用戶提供符合其查詢要求的信息資源網址的系統。據統計,搜索引擎搜索僅次于電子郵件的應用。目前網上比較有影響的中文搜索工具有:google、百度、北大天網、愛問(iask)、雅虎(yahoo?。?、搜狗(sogou)、搜搜(soso)等搜索引擎。英文的有:Yahoo! 、AltaVista、Excite、Infoseek、Lycos、Aol等。另外還有專用搜索引擎,例如專門搜索歌曲和音樂的;專門搜索電子郵件地址、電話與地址及公眾信息的;專門搜索各種文件的FTP搜索引擎等。
搜索引擎是指根據一定的策略,運用特定的計算機程序搜集互聯網上的信息,在對信息進行組織和處理后,為用戶提供檢索服務的系統。搜索引擎并不是真正的互聯網,它搜索的實際上是預先整理好的網頁索引數據庫。真正意義上的搜索引擎,通常指的是收集了互聯網上幾千萬到幾十億個網頁并對我那個也中的每一個詞(即關鍵詞)進行索引。建立索引數據庫的全文搜索引擎?,F在的搜索引擎已普遍使用超鏈分析技術,除了分析索引網頁本身的內容,還分析索引所有指向該網頁的鏈接的URL、Anchor、Text,甚至鏈接周圍的文字。所以,有時候,即使某個網頁A中并沒有出現某個詞,比如
“信息檢索”,但如果有網頁B用鏈接“信息檢索”指向這個網頁A,那么用戶搜索“信息檢索”時也能找到網頁A。而且,如果有越多的網頁的“信息檢索”鏈接指向網頁A,那么網頁A在用戶搜索“信息檢索”時也會被認為更相關,排序也會越靠前。
搜索引擎的原理,可以分為四步:從互聯網上抓取網頁、建立索引數據庫、在索引數據庫中搜索排序、對搜索結果進行處理和排序。
(1)、從互聯網上抓取網頁:利用能夠從互聯網上自動收集網頁的蜘蛛系統程序,自動訪問互聯網,并沿著任何網頁中所有URL爬到其他網頁,重復這個過程,并把爬過的所有網頁收集回來。
(2)、建立索引數據庫:由分析索引系統程序對收集回來的網頁進行分析,提取相關網頁信息(包括網頁所在URL、編碼類型、頁面內容包含的關鍵詞、關鍵詞位置、生成時間、大小、與其他網頁的鏈接關系等),并根據一定的相關度算法進行大量的復雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度(或重要性),然后利用這些相關信息建立網頁索引數據庫。
(3)、在索引數據庫中搜索排序:當用戶輸入關鍵詞后,由搜索系統程序從網頁索引數據庫中找到符合該關鍵詞的所有相關網頁。因為所用相關網頁針對該關鍵詞的相關度早已計算好,所以只需按照現成的相關數值排序,相關度越高,排名越靠前。最后由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。
(4)、對搜索結果進行處理排序:所有相關網頁針對該關鍵詞的相關信息在索引庫中都有記錄,只需綜合相關信息和網頁級別形成相關數值度,然后進行排序,相關度越高,排名越靠前。最后由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。
搜索引擎的分類
搜索引擎的技術基礎是全文檢索技術。全文檢索通常指文本全文檢索,包括信息的儲存、組織、表現、查詢、存取等各個方面,其核心為文本信息的索引和檢索,一般用于企事業單位。隨著互聯網信息的發展,搜索引擎在全文檢索技術上逐漸發展起來,并得到廣泛的應用,但搜索引擎還是不同于全文檢索。搜索引擎和常規意義上的全文檢索主要區別有以下幾點。
(1)、數據量。
傳統全文檢索系統面向的是企業本身的數據或者和企業相關的數據,一般索引數據庫的規模多在GB級,數據量大的也只有幾百萬條;但互聯網網頁搜索需要處理幾十億的網頁,搜索引擎的策略都是采用服務器群集和分布式據算技術。
(2)、內容相關性。
信息太多,差準和排序就是特別重要,Google等搜索引擎采用網頁鏈接分析技術,根據互聯網上網頁被鏈接的次數作為重要性評判的依據;但全文檢索的數據源中相互鏈接的程度并不高,不能作為判別重要性的依據,只能基于內容的相關性排序。
(3)、安全性。
互聯網信息是公開的,除了文本內容外,其他信息都不太重要;而企業全文檢索的數據源都是企業內部的信息,有等級、權限等限制,對查詢方式也有更嚴格的要求,因此其數據一般會安全和集中地存放在數據庫倉庫中以保證數據安全和管理的要求。
(4)、個性化和智能化。
搜索引擎面向的是互聯網的訪問者,由于其數據量和客戶數量的限制,自然語言處理技術、知識檢索、知識挖掘等計算密集的智能計算技術很難應用,這也是目前搜索引擎技術努力的方向。而全文檢索數據量小,檢索需求明確,客戶量少,在智能化和個性上更具有優勢。
除了與全文檢索系統有上述區別之外,搜索引擎按其工作方式主要可以分為3種,分別是全文搜索引擎(Full Text Search Engine)、目錄索引類(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
一、全文搜索引擎。
全文搜索引擎是名副其實的搜索引擎(google、AllTheWeb、AltaVista、Inktomi、Teoma、WiseNut、百度、中文搜索、北大天網等),他們都是通過從互聯網上提取的各個網站的信息(以網頁文字為主)而建立的數據庫中,檢索與用戶查詢條件匹配的相關記錄,然后按一定的排列順序將結果返回給用戶,因此它們是真正的的搜索引擎。從搜索結果來源的角度,全文搜索引擎又可以細分為兩種:一種是擁有自己的檢索程序,俗稱機器人程序或蜘蛛程序,并自建網頁數據庫,搜索結果直接從自身的數據庫中調用,如上面提到的搜索引擎;另一種則是租用其他引擎的數據庫,并按自定的格式排列搜索結果,如Lycos引擎。
全文搜索引擎有全文搜索、檢索功能強、信息更新速度快等優點。但同時也有其不足之處,提供的信息雖然多而全,但可供選擇的信息太多反而降低相應的命中率,并且提供的查詢結果重復鏈接較多,層次結構不清晰,給人一種繁多雜亂的感覺。
二、目錄索引類搜索引擎。
目錄索引雖然有搜索功能,但在嚴格意義上算不上是真正的搜索引擎,僅僅是按目錄分類的網站鏈接列表而已。用戶完全可以不用進行關鍵詞(keywords)查詢,僅靠分類目錄也可找到需要的信息。目錄索引中最具代表性的莫過于大名鼎鼎的Yahoo!,其他的還有Open Directory Project(DMOZ)、LookSmart、About等。國內的搜狐、新浪、網易搜索也都屬于這一類。
目錄索引與全文搜索引擎的區別在于它是由人工建立的,通過“人工方式”將站點進行了分類,不像全文搜索引擎那樣,將網站上的所有文中和信息都收錄進去,而是首先將該網站劃分到某個分類下,再記錄一些摘要信息,對該網站進行概述性的簡要介紹,用戶提出搜索要求時,搜索引擎只在網站的簡介中搜索。它的主要優點有:層次、結構清晰、易于查找;多級類目,便于查詢到具體明確的主題;在內容提要、分類目錄下有簡明扼要的內容,方便使用戶一目了然。其缺點是搜索范圍較小、更新速度慢、查詢交叉類目時容易遺漏。
三、元搜索引擎。
元搜索引擎在接受用戶查詢請求時,同時在其他多個搜索引擎上進行搜索,并將結果返回給用戶。著名的元搜索引擎有InfoSpace、 Dogpile、Vivisimo等,中文元搜索引擎中具代表性的有北斗搜索。在搜索結果排列方面,有的直接按來源搜索引擎排列搜索結果,如 Dogpile,有的則按自定的規則將結果重新排列組合,如Vivisimo。
除上述三大類搜索引擎外,還有以下集中非主流形式。
(1)、集合式搜索引擎:如HotBot在2002年底推出的引擎。該搜索引擎類似于元搜索引擎,但區別在于不是同時調用多個搜索引擎,而是由用戶從提供的4個引擎之中選擇,因此他叫集合式搜索引擎更確切些。
(2)、門戶搜索引擎:如Aol Search、Msn Search等雖然提供搜索服務,但自身既沒有分類目錄也沒有網頁數據庫,其搜索結果完全來自于其他引擎。
(3)、免費鏈接目錄(Free For ALL links,FFA):這類網站一般只簡單地的滾動排列鏈接條目,少部分有簡單的分類目錄,不過規模比起Yahoo!等目錄索引要小得多。
除了上面的分類,搜索引擎還應具有以下功能:
A、網頁搜索功能
B、網站搜索功能
C、圖片搜索功能
D、新聞搜索功能
E、字典搜索功能
F、功能搜索功能
搜索引擎的關鍵技術
1、信息收集和存儲技術。
網上信息收集和存儲一般分為人工和自動兩種方式。
人工方式采用傳統信息收集、分類、存儲、組織和檢索的方法。研究人員對網站進行調查、篩選、分類、存儲。由專業人員手工建立關鍵字索引,再將索引信息存入計算機相應的數據庫中。
自動方式通常是由網絡機器人來完成的?!熬W絡機器人”是一種自動運行的軟件,其功能是搜索因特網上的網站和網頁。這種軟件定期在因特網上漫游,通過網頁間鏈接順序地搜索新的地址,當遇到新的網頁的時,就給該網頁上的某些字或全部字做上索引并把它們加入到搜索引擎的數據庫中,由此搜索引擎的數據庫得以定期更新。
一般來說,人工方式收集信息的準確性要遠優于“網絡機器人”,但其收集信息的效率及全面性低于“網絡機器人”。
2、信息預處理技術。
信息預處理包括信息格式支持與轉換及信息過濾。目前因特網上的信息發布格式多種多樣,這就要求搜索引擎支持多種文件格式。從實際情況來看,所有的搜索引擎都支持HTML格式,而對于其他文件格式的支持則不同的搜索引擎有不同的規定,最多的能支持200多種文件格式。一般地說,一個企業級的公用Web站點起碼應該支持40~60種文件格式。同時搜索引擎還應具備信息格式轉換功能,以保證不同格式的數據數據均能在網絡流通。信息過濾也是搜索引擎的一項重要技術。在因特網中,存在大量的無用信息,一個好的搜索引擎應當盡量減少垃圾站點的數量,這是信息過濾要著重解決的問題。
3、信息索引技術。
信息索引就是創建文檔信息的特征記錄,以使用戶能夠快速地檢索到所需信息。建立索引主要涉及以下幾個問題。
(1)、信息語詞切分和語詞詞法分析:語詞是信息表達的最小單位,由于語詞切分中存在切分歧義,切分需要充分利用各種上下文知識。語詞詞法分析是指識別出各個語詞的詞干,以便根據詞干建立信息索引。
(2)、進行詞性標注及相關的自然語言處理:詞性標注是指利用基于規則和統計(馬爾科夫鏈)的科學方法對語詞進行標注,基于馬爾科夫鏈隨即過程的n元語法統計分析方法在詞性標注中能達到較高的精度??衫枚喾N語法規則識別出重要的短語結構。自然語言處理是運用計算機對自然語言進行分析和理解,從而使計算機在某種程度上具有人的語言能力。將自然語言處理應用在信息檢索中,可以提高信息檢索的精度和相關性。
(3)、建立檢索項索引:使用倒排文件的方式建立檢索項索引,一般包括“檢索項”、“檢索項所在文件位置信息”以及“檢索項權重”。
(4)、檢索結果處理技術:搜索引擎的檢索結果通常包含大量文件,用戶不可能一一瀏覽。搜索引擎一般應按與查詢的相關程度對檢索結果進行排列,最相關的文件通常放在最前面。搜索引擎確定相關性的方法有概率方法、位置方法、摘要方法、分類或聚類方法等。
a、概率方法:根據關鍵詞在文中出現的頻率來判定文件的相關性。這種方法對關鍵詞出現的次數進行統計,關鍵詞出現的次數越多,該文件與查詢的相關程度就越高。
b、位置方法:根據關鍵詞在文中出現的位置來判定文件的相關性。關鍵詞在文件中出現的越早,文件的相關程度就越高。
c、摘要方法:搜索引擎自動地為每個文件生成一份摘要,讓用戶自己判斷結果的相關性
,以使用戶進行選擇。
d、分類或聚類方法:搜索引擎采用分類或聚類技術,自動把查詢結果歸入到不同的類別中。
搜索引擎的體系結構
搜索引擎是指以一定的策略搜集互聯網上的信息,在對信息進行組織和處理后,為用戶提供檢索服務的系統。
搜索引擎主要由搜索器、索引器、檢索器和用戶接口構成。
一、搜索器。
A、網絡蜘蛛:搜索引擎系統結構的搜索器(Spider)俗稱網絡蜘蛛或網絡爬蟲,十億個自動收集網頁的系統程序,其功能是日夜不停地在互聯網中漫游,搜集信息。它要盡可能多、盡可能快地搜集各種類型的新信息,還要定期更新已經搜索過的舊信息,以避免出現死鏈接。目前有兩種搜集信息的策略:
a、從一個其實URL開始,順著這些URL中的超鏈接(Hyperlink),以寬度優先、深度優先或啟發式方式循環在互聯網中發現信息。起始URL使一些非常流行,包含很多鏈接的站點(如Yahoo?。?br style="margin: 0px; padding: 0px;"/>
b、將Web空間按照域名、IP地址或國家劃分,每個搜索器負責一個子空間的窮盡搜索。搜索器將搜索回來的每個文檔過濾掉格式符,提取文本數據 Fulltext。每個文檔對應著一個Fulltext文件,內容包括網頁標題、網頁URL、大小、時間、類型、分類等屬性及文本內容,所有生成的這些文件交給索引器進行索引處理。搜索器的實現常用分布式并行計算技術,以提高信息發現和更新的速度。
B、內容提?。ㄎ谋疚募?。
對網頁內容的提取,一直是網絡蜘蛛重要的技術。整個系統一般采用插件的形式,通過一個插件管理服務程序,遇到不同格式的網頁采用不同的插件機處理,搜索引擎建立索引、處理的對象是文本文件。
C、定期更新策略。
由于網站的內容經常在變化,因此網絡蜘蛛也不斷地更新其抓取網頁的內容,這就需要網絡蜘蛛按照一定的周期去掃描網站,查找哪些頁面是需要更新的頁面,哪些頁面是新增頁面,哪些頁面是已經過期的死鏈接。
二、索引器。
索引器(Indexer)的功能是理解搜索器所搜索的信息,由分析索引系統程序對收集回來的網頁進行分析,提取網頁信息(包括網頁所在URL、編碼類型、頁面內容包含的關鍵詞、關鍵詞位置、生成時間、大小、與其他網頁的鏈接關系等),根據一定的相關度算法進行大量復雜計算,得到每一個網頁針對頁面內容中及超鏈接中每一個關鍵詞的相關度(或重要性),然后這些相關信息建立網頁索引數據庫。
索引器的工作過程為:索引器讀入搜索器生成的Fulltext文件,采用基于位置倒排索引與三級n元索引相結合的索引機制。首先進行分詞處理生成索引項,并作歸類排序,生成Index文件和inv文件,inv文件為倒排表(Inversion List),即由索引項查找相對應的文檔,Index文件形成分詞-倒排表對應關系,內容為分詞在倒排表中相應的文檔塊起始地址,含有該詞的文檔數量等信息。索引器可以使用集中式索引算法或分布式索引算法。當數據量很大時,必須實現即時索引,否則不能跟上信息量急劇增加的速度。索引算法對索引器的性能(如大規模峰值查詢時的響應速度)有很大的影響。一個搜索引擎的有效性在很大程度上取決于索引器的質量。
索引項有客觀索引項和內容索引項兩種:客觀索引項與文檔的語義內容無關,如作者名、URL、更新時間、編碼、長度、鏈接流行度(Link Popularity)等;內容索引項是用來反映文檔內容的,如關鍵詞極其權重,短語、單字等。內容索引項可以分為單索引項和多索引項(短語索引項)兩種。單索引項對于英文來講是英語單詞,比較容易提取,因為單詞之間有天然的分隔符(空格);對于中文等連續書寫的語言,必須進行詞語的切分(分詞)。
詞法分析是對自然語言的形態進行分析,判定詞的結構、類別和性質的過程。對于以英文為代表的形態豐富的語言來說,英文的詞法分析的一個重要的過程是形態分析,即將英文詞還原成詞干。而漢語形態變化很少,其主要的問題在于書寫時詞與詞之間沒有空格,所以通常中文詞法分析的關鍵是分詞,分詞往往是后續進一步處理的基礎。
(1)、英語詞法分析:英文的形態分析主要目標是將句子中的詞從詞性還原到詞甚至詞根。英文的形態分析常常也稱為stemming,分析器稱為 stemmer。形態分析常常采用基于自動機的規則方法,即將詞形變化的規律總結成規則,然后通過自動機的方法對詞形進行轉換。轉換的過程當中可以使用或者不使用詞典。
(2)、中文分詞技術:基于機械匹配和機遇概率統計的分詞方法。前者通過對已有詞典的機械匹配來得到分詞結果。后者不需要任何詞典就可以得到粉刺結果,或者對粗切分結果進行基于概率統計后的處理來得到最終分詞結果。
中文分詞技術面臨的兩個最大的問題是切分歧義和未定義詞的問題。前者要解決在上下文環境下不同切分結果的選擇;后者要解決詞典中未收錄詞(如人名、地名、機構名等)的識別??梢栽跈C械匹配的基礎上通過規則的方法來求解上述兩個問題。然而規則方法很難窮盡真實文本的各種現象。目前比較主流的方法是通過對真實文本的概率統計來求解切分歧義和未定義詞問題。
三、檢索器。
檢索器(Searcher)的功能是針對用戶的查詢請求在索引庫中快速檢出文檔,采用一定的信息檢索模型進行文檔與查詢的相關度評價,對將要輸出的結果進行排序、聚類等操作,并實現某用戶相關性反饋機制。信息檢索模型有以下幾種:布爾邏輯模型、模糊邏輯模型、向量空間模型、概率模型及混合模型等。
檢索器的工作過程如下:檢索器對用戶接口(Uesr Interface, UI)提出的查詢要求進行遞歸分析,在UI中一般采用基本語法來組織要檢索的條件。檢索器通常支持多種語法規則,如邏輯操作符AND、OR、NOT,使用 “+、-”連接號和通配符,使用逗號、括號或引號進行詞組查找。對于每個索引項,匹配Index文件,查到倒排表(inv文件)中包含該索引項的文檔,并對所有查找出的文檔進行集合運算,將結果集按照基于內容和基于鏈接分析的方法進行相
關度評價并排序,最大限度地保證檢索出的結果與用戶查詢串有很高的相關性,將最終形成的有序的文檔結果集合返回給用戶。
四、用戶接口。
用戶接口(UI)的作用是輸入用戶查詢,顯示結果查詢結果,提供用戶相關性反饋機制。UI的主要目的是方便用戶使用搜索引擎,高效率、多方式地從搜索引擎中得到有效、及時的信息。UI的實際和實現使用人機交互的理論和方法,以充分適應人類的思維習慣。
用戶輸入接口可以分為簡單接口和復雜接口兩種。簡單接口只提供用戶輸入查詢串的文本框;復雜接口可以讓用戶對查詢進行限制,如邏輯運算(與、或、+、-)、相近關系(相鄰、near)、域名范圍(如edu.com)、出現位置(如標題、內容)、信息時間、長度等。目前一些公司和機構正在考慮制定查詢選項的標準。
當互聯網用戶通過UI提交查詢時,檢索器程序根據用戶輸入的查詢關鍵詞,在已由索引器完成索引和初排序的存儲桶(Barrel)中進行查找,并采用特定的頁面優先度算法對其結果進行最終排序,使之盡可能符合用戶查詢需求。最后UI將最終查詢結果呈現在互聯網用戶面前。
搜索引擎的工作原理(一)
搜索引擎的工作原理可以分為三步:從互聯網上抓取網頁、建立索引數據庫、在索引數據庫中搜索排序。
(1)、從互聯網上抓取網頁,就是利用能夠從互聯網上自動收集網頁的Spider系統程序,自動訪問互聯網,并沿著任何網頁中的所有URL爬到其他網頁,重復這個過程,并把爬過的所有網頁收集回來。
(2)、建立索引數據庫,就是由分析索引系統程序對收集回來的網頁進行分析,提取相關網頁信息,根據一定的相關度算法進行大量復雜計算,得到每一個網頁針對頁面內容中及超鏈中每一個關鍵詞的相關度或重要性,然后利用這些相關信息建立網頁索引數據庫。
(3)、在索引數據庫中搜索排序,就是當用戶輸入關鍵詞搜索后,由搜索系統程序從網頁索引數據庫中找到符合該關鍵詞的所有相關網頁。因為所有相關網頁針對該關鍵詞的相關度早已算好,所以只需按照現成的相關度數值排序,相關度越高,網站排名越靠前。最后,由頁面生成系統將搜索結果的鏈接地址和頁面內容摘要等內容組織起來返回給用戶。
一、網頁搜集。
搜索引擎網頁的搜集過程并不是在用戶提交關鍵詞后進行及時的搜索,而是預先將網頁搜集好并進行相關處理之后等待用戶的查詢。我們知道,在網絡比較暢通的情況下,從網上下載一篇網頁大概需要1秒鐘,因此如果用戶在查詢的時候即時去網上抓來成千上萬的網頁,一個個分析處理后再和用戶的查詢匹配,這樣的查詢時間就會很慢也不可能滿足用戶的需求。有可能多個用戶重復抓取同一個頁面,使系統的效益低下。面對大量的用戶查詢,不可能每來一個查詢,系統就到網上“搜索” 一次。大規模的搜索引擎是將一批預先搜集好的網頁進行管理和維護。如何維護?有兩種基本的方法。
A、定期搜索法:每次搜集替換上一次的內容,我們稱之為“批量搜集”。由于每次都是重新來一次,對于大規模搜索引擎來說,每次搜索的時間都會花費幾周的時間。這樣的開銷比較大,通常兩次搜集的時間間隔也很長(如早期天網的版本大概每3個月搜索一次,google在一段時間曾是每隔28天搜索一次)。這種方法的好處是系統實現比較簡單,缺點是實時性不高,還有重復搜集所帶來的額外寬帶的消耗。
B、增量搜集法:最初時搜集好一批數據,以后只是新出現的網頁和改變的網頁并刪除不再存在的網頁。除了新聞網站外,許多網頁的內容并不是經常變化的,這樣一來每次搜集的網頁量不會很大,于是可以經常去搜集。30萬個網頁,一臺pc機,在一般的網絡條件下,半天也就搜集完了。這樣的系統表現出來的信息實時性就會比較高,主要缺點是系統實現比較復雜。
在具體搜集過程中,如何抓取一篇篇的網頁,可以有不同的考慮。最常見的是一種所謂“爬取”的過程,具體過程是:將Web上的網頁集合看作十億個有向圖,搜集過程從給定的起始URL的集合S(或者說種子)開始,沿著網頁中的鏈接,按照先深、先寬或者別的某種策略遍歷,不停的從S中移除URL,下載相應的網頁,解析出網頁中的超鏈接URL,看是否已經被訪問過,將未訪問的那些URL加入集合S。整個過程可以形象地想象為一個蜘蛛(Spider)在蜘蛛網上(Web)上爬行。一個真正的系統其實是多個“蜘蛛”同時在爬。
這種方法實現起來并不算困難,但需要注意的是在實現過程中通過一定的策略,使收集到的某些網頁相對比較"重要"。我們知道任何搜索引擎是不可能將Web上網頁搜集完全的,通常都是在某些條件的限制下來結束搜集的過程(如磁盤滿,或者搜集時間已經太長了)。因此就有了一個盡量使搜到的網頁比較重要的問題,這對于那些并不追求很大的數量覆蓋率的搜索引擎特別重要。一般情況下按照先款搜索方式得到網頁集合比先深搜索得到的集合重要。
另外一種可能的方式是在第一次全面網頁搜集后,系統維護相應的URL集合S,往后的搜集直接基于這個集合。每搜到一個網頁,如果它發生變化并含有新的 URL,則將它們對應的網頁也抓回來,并將這些新URL也放到集合S中;如果S中某個URL對應的網頁不存在了,則將它從S中刪除。這種方式也可以看成是一種極端的先款搜索,即第一層是一個很大的集合,往下最多只延伸一層。
還有一種方法是讓網站擁有者主動向搜索引擎提交他們的網址,系統在一定時間內向那些網站派出“蜘蛛”程序,掃描該網站的所有網頁并將有關信息存入數據庫中。大型商業搜索引擎一般都提供這種功能。
搜索引擎的工作原理(二)
互聯網上大部分信息都是以HTML格式存在,對于索引來說,只處理文本信息。因此需要把網頁中的文本內容提取出來,過濾掉一些腳本標識符和一些無用的廣告信息,同時記錄文本的版面格式信息。網頁處理主要包括四個方面:關鍵詞的提取、重復或轉載網頁的消除、鏈接分析和網頁重要程度的計算。
一、關鍵詞的提?。河捎贖TML文檔產生來源的多樣性,許多網頁在內容上比較隨意,不僅文字不講究規范、完整,而且還可能包含許多和主要內容無關的信息(如廣告、導航條、版權說明等)。為了支持查詢服務,需要從網頁源文件中提取能夠代表它的內容的一些特征—關鍵詞。
網頁處理階段的一個基本任務,就是要提取出網頁源文件的內容部分所包含的關鍵詞。對于中文來說,就是要根據一個詞典,用一個“切詞軟件”,從網頁文字中切出詞典所含的詞語來。這樣一片網頁就可以由一組詞來近似代表了,p={t1、t2、t3、t4......tn}。一般來講,可能得到很多的詞,同一個詞可能在一篇網頁中多次出現。從效果和效率來考慮,不應該讓所所有的詞都出現在網頁的表示中,要去掉諸如“的”、“在”等沒有內容指示意義的詞,稱為 “停用詞”(Stop Word)。這樣,對一篇網頁來說,有效的詞語數量大約為200。
二、重復或轉載網頁的消除:我們知道Web上的信息存在大量的重復現象。統計分析表明,網頁的重復率平均大約為4。也就是說,當通過一個URL在網上看到一篇網頁的時候,還有另外三個不同的URL也給出相同或者基本相似的內容。這種現象對于搜索引擎來說,它在搜集網頁的時要消耗機器時間和網絡寬帶資源,而且如果在查詢的結果中出現,將消耗查詢者計算機的資源,也會引來用戶的抱怨。因此,消除內容重復或主題重復的網頁是網頁處理階段的一個重要任務。
三、鏈接分析:從信息檢索的角度講,如果系統僅僅面對的是內容的文字,我們能依據關鍵詞和關鍵詞在文檔中集合出現的頻率來統計該詞的相對重要性以及和某些內容的相關性。有了HTML標記后,情況可能進一步改善,例如,在同一篇HTML中,<H1>和</H1>之間的信息很可能就比在<H4>和</H4>之間的信息更重要。尤其HTML文檔中所含的指向其他文檔的鏈接信息是人們特別關注的的對象,認為它們不僅給出了網頁之間的關系,而且還對判斷網頁的內容有很重要的作用。
四、網頁重要度的計算:搜索引擎返回給用戶的,是一個和用戶查詢相關的結果列表。列表中條目的順序是很重要的一個問題。不同的順序到達的結果是不一樣的,因此搜索引擎實際上追求的是一種統計意義上的滿意。例如,人們認為利用google查詢比較好,是因為在多數情況下google返回的內容更要符合用戶的需要。
如何對查詢結果進行排序有很多因素需要考慮,如何理解一篇網頁比另外一篇網頁重要?人們參照科技文檔重要性的評估方式,核心思想就是“被引用的最多的就是最好的”?!耙谩边@個概念恰好可以通過在網頁之間的超鏈進行體現,作為google創立核心技術的Page-Rank就是這種思路的成功體現。除此以外,人們還注意到網頁和文檔的不同特點,即一些網頁主要是大量的對外鏈接,其本身基本沒有一個明確的主題內容,而另外有些網頁則被大量的其他網頁鏈接。從某種意義上講,這形成了一種對偶的關系,這種關系可以使得人們在網頁上建立另外一種重要性指標。這些指標有的可以在網頁處理階段計算,有的則要在查詢階段計算,但都是作為查詢服務階段最終形成結果排序的部分參數。
搜索引擎的工作原理(三)
為了完成查詢服務,需要有相應的元素來進行表達,這些元素主要有:原始網頁文檔、URL和標題、編號、所含重要關鍵詞的集合以及它們在文檔中出現的位置信息、其他一些指標,如重要程度、代碼等。
用戶通過搜索引擎看到的不是一個“集合”,而是一個“列表”。如何從集合產生成一個列表,是服務子系統的主要工作。服務子系統是在服務進行的過程中涉及相關軟件程序,而網頁處理子系統事先為這些軟件程序準備了相應的數據。服務子系統的工作原理,主要有4個方面。
一、查詢方式和匹配。
查詢方式指的是系統允許用戶提交查詢的方式。對于普通用戶來說,最自然的方式就是“需要查詢什么就輸入什么”。例如,用戶輸入“搜索引擎”,可能是他想了解搜索引擎的相關定義、概念和相應的知識;也可能是想了解目前有哪些搜索引擎,如何進行搜索等內容;也有可能是用戶關心的是間接的信息。目前用一個詞或者短語來進行查詢,依然是主流的查詢模式,這種模式比較簡單并且容易實現。
詞的是搜索引擎中非常關鍵的一部分,通過字典文件對網頁內的詞進行識別。對于西文信息來說,需要識別詞的不同形式,例如:單復數、過去式、組合詞、詞根等,對于一些亞洲語言(中文、日文、韓文等)需要進行分詞處理。識別出網頁中的每個詞,并分配唯一的wordID號,用于為數據索引中的索引模塊服務。
例如:當用戶輸入“搜索引擎教程”時,系統首先將這個短語進行分詞處理,將其分為“搜索 引擎 教程”,然后刪除那些沒有查詢意義或者在每篇文檔中都會出現的詞,最后形成一個用于參與匹配的查詢詞表,該詞表的數據結構是一個用對應的分詞作為索引的一個倒排文件,它的每一個元素都對應倒排文件。這樣系統就完成了查詢和文檔的匹配。
二、索引庫的建立。
索引庫的建立是數據索引中結構最復雜的一部分。一般需要建立兩種索引:文檔索引和關鍵詞索引。文檔索引分配給每個網頁唯一的docID號,根據docID 號索引出在這個網頁中出現過多少個wordID,每個wordID出現的次數、位置、大小格式等,形成docID對應wordID的數據列表;關鍵詞索引其實是對文檔索引的的逆索引,根據wordID索引出這個詞出現在哪些網頁(用wordID表示),出現在每個網頁的次數、位置、大小寫格式等,形成 wordID對應docID的列表。
三、結果排序。
結果就是將查詢的結果的集合以列表的方式顯示出來。所謂列表,就是按照某種評價方式,確定出查詢結果集合中元素的順序,讓這些元素以某種順序呈現出來,這就是相關性。相關性是形成這種查詢順序的的基本因素,有效地定義相關性本身是很難的,從原理上講它不僅和查詢詞有關,而且還和用戶的查詢背景,以及用戶的查詢歷史有關。不同需求的用戶可能輸入同一個查詢,同一個用戶在不同的時間輸入的相同查詢可能是針對不同的需求的。
一般來講,結果排序的方法是基于詞匯出現頻率,也就是說在一篇文檔中包含的查詢詞越多,則該文檔就越應該排在前面。這樣的思路有一定的道理,而且在倒排文件數據結構上很容易實現。當我們通過關鍵詞的提取過程,形成一篇文檔的關鍵詞的集合后,很容易得到每一個詞在文檔中出現的次數,即詞率,而倒排文件中每個倒排表的長度則對應著每個詞所涉及的文檔的篇數,即文檔頻率。然而,由于網頁編寫的自發性、隨意性較強,僅僅針對關鍵詞的出現來決定文檔的順序,在Web 上做信息檢索表現出明顯的缺點,需要有其他技術的補充。通過在網頁處理階段為每篇網頁形成一個獨立于查詢詞(也就是和網頁內容無關)的重要性指標,將它和查詢過程中形成的相關性指標結合形成一個最終的排序,是目前搜索引擎給出查詢結果排序的主要方法。
搜索的處理過程是對用戶的搜索請求進行滿足的過程,通過用戶輸入搜索關鍵詞,搜索服務器對應關鍵詞字典,把搜索關鍵詞轉化為wordID,然后在索引庫中得到docID列表,對docID列表進行掃描和wordID的匹配,提取滿足條件的網頁,然后計算網頁和關鍵詞的相關度,根據相關度的數值返回給用戶。
四、文檔摘要。
搜索引擎給出的結果是一個有序的條目列表,每個條目中有3個基本元素:標題、網頁描述、網址和摘要。其中摘要需要從網頁正文中生成。
一般來講,搜索引擎在生成摘要時可以歸納為兩種方式:一種是“靜態”方式,即獨立于查詢,按照某種股則,事先在預處理階段從網頁內容中提取出一些文字,如截取網頁正文的開頭512個字節(對應256個漢字),或者將每一個段落的第一個句子拼起來,等等。這樣形成的摘要存放在查詢子系統中,一旦相關文檔被選中與查詢匹配,就讀出返回給用戶。這種方式的優點是實現起來比較容易,缺點是摘要可能和查詢的內容無關;另一種是“動態摘要”方式,即在相應查詢的時候,根據查詢詞在文檔中的位置,提取出周圍的文字來,在顯示時將查詢詞標亮。這是目前大多數搜索引擎采用的方式。為了保證查詢的效率,需要在預處理階段分詞的時候記住每個關鍵詞在文檔中出現的位置。