搜索引擎的定義

瞭解搜索引擎技術

此文純理論知識,很不錯的搜索引擎的資料。

搜索引擎的定義

搜索引擎是傳統IR技術在Web環境中的應用。一般來說,搜索引擎是一種用於幫助用戶在Internet上查詢信息的搜索工具,它以一定的策略在Internet中搜索,發現信息,對信息進行理解,提取,組織和處理,併爲用戶提供檢索服務,從而起到信息導航的目的。

搜索引擎的體系結構

典型的搜索引擎結構一般由以下三個模塊組成:信息採集模塊(Crawler),索引模塊(Indexer),查詢模塊(Searcher)。

Crawler:從web中採集網頁數據
Indexer:對Crawler採集數據進行分析生成索引。
Searcher:接受查詢請求,通過一定的查詢算法獲取查詢結果,返回給用戶。

-->Crawler
Crawler負責頁面信息的採集,工作實現基於以下思想:既然所有網頁都可能鏈接到其他網站,那麼從一個網站開始,跟蹤所有網頁上的所有鏈接,就有可能檢索整個互聯網。Crawler首先從待訪問URL隊列中獲取URLs,根據URL從中抓取網頁數據,然後對網頁進行分析,從中獲取所有的URL鏈接,並把它們放到待訪問的URL隊列中,同時將已訪問URL移至已訪問的URL隊列中。不斷重複上面的過程。
Crawler存在以下的關鍵問題:
>多線程抓取時的任務調度問題:
搜索引擎會產生多個Crawler同時對網頁進行抓取,這裏需要一個好的分佈式算法,使得既不重複抓取網頁,又不漏掉重要的站點。
>網頁評估
在抓取網頁時存在一定的取捨,一般只會抓20%左右的網頁。評估算法中典型的油Google發明的Pgaerank。
>更新策略
每經過一段時間,Crawler對以抓取的數據經行更新,保證索引網頁是最新的。
>壓縮算法
網頁抓取後,通過一定的壓縮機制保存到本地,從而減少存儲容量,同時也減少各服務器之間的網絡通信開銷

-->Indexer
搜索引擎在完成用戶的檢索請求時,並不是即時的檢索Web數據,而是從預先採集的網頁數據中獲取。要實現對採集頁面的快速訪問,必須通過某種檢索機制來完成。
頁面數據可以用一系列關鍵字來表示,從檢索斃敵來說,這些關鍵詞描述了頁面的內容,只要找到頁面,便可以找到其中的關鍵詞,反過來,通過關鍵詞對頁面創建索引,便可以根據關鍵字快速的找到相應的網頁。

Indexer中存在的問題:
>索引存儲:
一般來講,數據量和索引量的比例接近1:1。索引的存儲一般採用分佈式策略,檢索的數據分佈在不同的服務器上。Google存儲索引的服務器大概有1000多臺。
>索引更新:
頁面數據更新時,索引數據必須相應的更新。更新策略一般採用增量索引方式。
>索引壓縮:
索引也存在數據壓縮的問題。索引壓縮是通過對具體索引格式的研究實現壓縮。
>網頁相似性支持:
索引的結構還必須爲網頁相似性分析提供支持。
>多語言,多格式支持:
網頁數據具有多種編碼格式,通過Unicode,索引支持多種編碼查詢。同時索引還必須有對Word,Excel等文件格式進行分析的功能。

-->Searcher
Searcher是直接與用戶進行交互的模塊,在接口上有多種實現的方式,常見的主要是Web方式。
Searcher通過某種接口方式,接受用戶查詢,對查詢進行分詞(stemming)處理,獲取查詢關鍵字。通過Indexer獲取與查詢關鍵字匹配的網頁數據,經過排序後返回給用戶。
Searcher中的問題:
>檢索結果的排序:
對不同的用戶採用不同的排序策略。
>排序結果排重:
排重可以提高結果數據的質量。
>檢索結果的相似性分析:
主要用在類似網頁功能中,需要在索引結構中提供支持。
>檢索的速度:
主要依賴索引結構的設計。同時在體系結構上還有很多技術可以用來提升速度。如:Cache,負載均衡等。

相關核心技術:

分佈式技術:
當搜索引擎處理數據達到一定規模時,爲了提高系統的性能,必須採用分佈式技術。Crawler通過多個服務器互相合作,提高數據採集的速度。Indexer在生成索引數據時通過並行算法,在不同機器上同時進行。Searcher也可以在不同的機器上進行同時查詢,提高速度。
中文分詞:
分詞就是將連續的字序列按照一定的規範重新組合成詞序列的過程。現有分詞算法可以分爲三大類:基於字符串比配的的分詞方法,基於理解的分詞方法和基於統計的分詞方法。
網頁排序:
現在搜索引擎中網頁的 排序主要利用了頁面間的鏈接關係,描述鏈接的文本以及文本自身內容,重要的鏈接分析算法有Hits和Pagerank,HillTop等。
海量數據存儲:
搜索引擎的挑戰之一就是處理數據的巨大,如何存儲如此大的數據,數據的更新,快速的檢索...
壓縮技術:
壓縮技術極大的減少了數據的大小,對於不同類型的數據,需要採用不同的壓縮方法,主要的數據壓縮主要有:網頁數據的壓縮和索引數據的壓縮。選擇壓縮技術主要從開放性,速度與壓縮比等多方面進行綜合考慮。Google中選擇了Alib(RFC1950)進行壓縮,在壓縮速度上Zlib超過Bzip,壓縮比上Bzip好於Zlib。

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