[Search Engine] 搜索引擎分類和基礎架構概述


  大家一定不會多搜索引擎感到陌生,搜索引擎是互聯網發展的最直接的產物,它可以幫助我們從海量的互聯網資料中找到我們查詢的內容,也是我們日常學習、工作和娛樂不可或缺的查詢工具。之前本人也是經常使用Google和Baidu搜索,而對搜索引擎的知識架構沒有一個整體的概念。前一陣子的實習,使我有機會全面的了解了搜索引擎,感覺還是蠻有意思。所以,即使在面臨找工作的高壓下,也一定要抽時間來總結和回顧一下學到的知識,以便以后查閱,如果能給其他人帶來幫助,那最好不過了。

  搜索引擎的標准定義:搜索引擎(Search Engine)是指根據一定的策略、運用特定的計算機程序從互聯網上搜集信息,在對信息進行組織和處理后,為用戶提供檢索服務,將用戶檢索相關的信息展示給用戶的系統。從上述定義中我們可以獲得幾個有關搜索引擎的關鍵步驟,分別為:搜集信息;組織和處理信息;展示信息。其實,真正的搜索引擎架構也正是根據這三大塊進行構建的。

1. 搜索引擎分類

  搜索引擎多種多樣,類別繁多,其中根據工作方式可以分為如下幾類:

  1)全文搜索引擎

  全文搜索引擎可以說是真正的搜索引擎,包括我們身邊的Goggle、Baidu等耳熟能詳的大搜索引擎,其都屬於是全文搜索引擎。全文搜索引擎是從網站提取信息從而構建網頁數據庫的。

  全文搜索引擎的是如何搜集網站的呢?其實這里一般有兩種方法:

  1> 搜索引擎定期派出網絡爬蟲(也成為是蜘蛛或者機器人),對互聯網中的網站進行檢索,一旦發現有新的網站就會自動抽取其信息,然后加入到自己的數據庫中;

  2> 網站擁有者主動向搜索引擎提交自己的網站信息,但是主動提交網站並不能一定確保自己的網站會被搜索引擎收錄,網站擁有者可以通過外鏈來提升自己網站的受關注度(這屬於SEO的知識了)。

  全文搜索引擎如何展示查詢結果?

  當用戶輸入查詢詞(query)查詢時,搜索引擎會在數據庫中進行搜尋,如果找到與用戶要求內容相符的網站,便采用特殊的算法——通常根據網頁中關鍵詞的匹配程度、出現的位置、頻次、鏈接質量——計算出各網頁的相關度及排名等級,然后根據關聯度高低,按順序將這些網頁鏈接返回給用戶。

  我們可以看到,全文搜索引擎的特點就是搜全率比較高。

  2)目錄搜索引擎

  目錄搜索引擎主要是按類目對網站進行收錄,而且在查詢時也不需要輸入關鍵詞,最為典型的目錄搜索引擎就是Sina、Yahoo等。

  目錄索引無需輸入任何文字,只要根據網站提供的主題分類目錄,層層點擊進入,便可查到所需的網絡信息資源。雖然有搜索功能,但嚴格意義上不能稱為真正的搜索引擎,只是按目錄分類的網站鏈接列表而已。用戶完全可以按照分類目錄找到所需要的信息,不依靠關鍵詞(Keywords)進行查詢。如果把書比作是網站,它就像是我們去圖書館一級一級地按區域尋找我們需要的書一樣,所以很形象地被稱為是目錄搜索引擎。

  3)元搜索引擎

  元搜索引擎(META Search Engine)接受用戶查詢請求后,同時在多個搜索引擎上搜索,並將結果返回給用戶。著名的元搜索引擎有InfoSpace、Dogpile、Vivisimo等,中文元搜索引擎中具代表性的是搜星搜索引擎。在搜索結果排列方面,有的直接按來源排列搜索結果,如Dogpile;有的則按自定的規則將結果重新排列組合,如Vivisimo。

  4)垂直搜索引擎

  在介紹垂直搜索引擎之前,我們先解釋一下橫向行業和垂直行業的含義。

  橫向行業一般指跨行業,包含有多個領域或行業;而垂直行業特指某個行業或者某個領域。

  理解了垂直行業,我們就不難理解垂直搜索引擎了。垂直搜索引擎是近年來新興起的一種搜索引擎,不同於通用的網頁搜索引擎,垂直搜索專注於特定的搜索領域和搜索需求(例如:機票搜索、旅游搜索、生活搜索、小說搜索、視頻搜索、購物搜索等等),在其特定的搜索領域有更好的用戶體驗。相比通用搜索動輒數千台檢索服務器,垂直搜索需要的硬件成本低、用戶需求特定、查詢的方式多樣。比較典型的垂直搜索引擎代表有,去哪兒網、攜程等。

  5)其他類目的搜索引擎

  除了上述四類搜索引擎以外,還有集合式搜索引擎、門戶搜索引擎以及免費鏈接式搜索引擎,這里就不一一詳細介紹了。

2. 搜索引擎的基礎架構

  一個優秀的搜索引擎需要復雜的架構和算法,以此來支撐對海量數據的獲取、存儲,以及對用戶查詢的快速而准確地響應。從架構層面,搜索引擎需要能夠對以百億計的海量網頁進行獲取、存儲、處理的能力,同時要保證搜索結果的質量。

  構建一個搜索引擎的基礎架構,要考慮如下三個問題:

  如何獲取、存儲並計算如此海量的數據?

  如何快速響應用戶的査詢?

  如何使得搜索結果能夠滿足用戶的信息需求?

  下圖是一個通用的搜索引笨架構示意圖:

 

  從上述的搜索引擎架構圖中,我們可以看出一個完整搜索引擎架構(全文搜索引擎為例)需要包含的三大塊(我們一開始就說到的):

  1)搜集信息:這一階段是基本的數據收錄階段,主要任務就是構建網頁數據庫。該階段主要依靠網絡爬蟲技術搜集全網的數據,並進行收錄,這一階段還包括網頁去重的過程,主要利用dedup技術。

  2)組織和處理信息:這里最為重要的一個環節就是構建索引,其主要的技術為倒排索引技術。當然,該階段還有建立連接關系和防作弊技術。

  3)展示信息:搜索引擎根據用戶的查詢詞(query)來進行數據庫檢索,然后根據內容、鏈接匹配度和特定的排序算法將結果展示給用戶。目前常用的排序算法主要為Learn2Rank的排序方法以及GBRank算法。

  下面我們針對每一個環節進行具體的闡述。

  1)網頁爬取和收錄

  網絡爬蟲技術是網頁爬取的核心技術,我們可以通過編寫一定的程序或者腳本來對互聯網的信息進行抓取。網絡爬蟲技術的詳細介紹會在之后的博文中具體呈現,這里不再細述。在網頁抓取之后,我們要構建相應的數據庫來存儲我們爬取的網頁信息。但是互聯網的信息具有冗余性,主要原因是各大網站也都會在后台進行爬蟲爬取,他們也會通過爬蟲來檢測一些熱點的內容或者文章,然后爬取其信息並對格式進行重新的組織,但其實網頁的內容幾乎都是一致的。所以在收錄爬蟲爬取的網頁信息之前,我們還要加入一個關鍵的環節——網頁去重,來確保我們數據庫中網頁的唯一性。

  2)建立索引

  在抓取了網頁的信息之后,我們需要對網頁的信息進行解析,抽取到網頁的主題內容和類別信息。這就是我們通常所說的網頁解析,其主要涉及的技術為文本識別和文本分類技術。網頁解析后的輸出往往是一些結構化的信息(每個網頁的信息完整度是不同的,我們需要統一對數據進行結構化操作),一般的結構化信息包括網頁的URL、網頁編碼、網頁標題、作者、生成時間、類別信息、摘要等等。在獲取了網頁結構化信息后,就要構建相應的索引了。為了加快響應用戶査詢的速度,網頁內容通過"倒排索引"這種高效查詢數據結構來保存,而網頁之間的鏈接關系也會予以保存。之所以要保存鏈接關系,是因為這種關系 在網F相關性排序階段是可利用的,通過"鏈接分析"可以判斷頁面的相對重要性,對於為用 戶提供准確的搜索結果幫助很大。

  由於互聯網的網頁信息是海量的,所以搜索引擎的構建離不開大數據處理平台和雲計算技術,目前較為常用的大數據處理平台為Hadoop生態架構。

  3)查詢詞分析

  查詢詞分析我們經常稱為是query分析或者query聚類。當搜索引擎接收到用戶的査詢詞后,首先需要對查詢詞進行分析,希望能夠結合查詢詞和用戶信息來正確推導用戶的真正搜索意圖。比如,一個用戶輸入的查詢詞為“養水仙花”,那么除了基本的內容匹配外,搜索引擎需要讀懂用戶,其實用戶的查詢詞還可以這樣被理解“水仙花怎么養”,“水仙花好養嗎” 等等近意的查詢詞。在此之后,首先在緩存中査找,搜索引擎的緩存系統存儲了不同的查詢意圖對應的搜索結果,如果能夠在緩存系統找到滿足用戶需求的信息,則可以直接將搜索結果返回給用戶,這樣既省掉了重復計算對資源的消耗,又加快了響應速度。

  4)搜索排序

  搜索引擎在分析了用戶的查詢詞以后,如果緩存的信息無法滿足用戶的查詢需求,搜索引擎要根據索引來查詢數據庫的網頁內容,並根據網頁內容與用戶需求來進行網頁排序。網頁排序需要眾多的因素,其中最為主要的兩方面因素為:

  1> 網頁內容與用戶查詢內容的相似度(匹配度):這個不難理解,搜索引擎的基本功能就是查詢,如果一個搜索引擎無法為用戶提供用戶需要查詢的內容,那其也就不能稱為是一個搜索引擎,所以網頁內容與用戶查詢內容的相似度是網頁排序的一個首要依據;

  2> 網頁的重要程度:一個網頁的重要程度關乎了網頁內容的質量,在滿足用戶需求的基礎之上,用戶更加希望獲得高質量的內容,這是無可厚非的。

  根據上述因素,搜索引擎對查詢到的結果進行排序,然后展示給用戶。

  5)推薦系統

  其實從不嚴格的角度來說,整個網頁排序的過程就屬於一種推薦策略。從嚴格意義上來說,推薦系統並不屬於一個搜索引擎架構的必要環節,而且推薦系統在上述示意圖中並沒有顯示。但是一個優秀的搜索引擎不止要能分析出用戶查詢的基本需求,進一步來講,要能了解到或者猜測用戶的可能的下一步需求。目前隨着大數據的熱潮,各大互聯網公司和眾多專家認為推薦系統是解決互聯網大數據的一種有效途徑。而且,最近越來越多個性化推薦知識受到了熱捧。其實推薦系統在搜索引擎中往往是以中間頁的形式展示的,它的主要作用就是為推薦系統進行導流。

  好了,推薦系統的分類和基礎架構就總結到這里,下一階段,博主會逐一地詳細總結搜索引擎中的關鍵技術——網頁爬蟲技術、倒排索引技術和網頁排序方法,敬請期待。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM