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