這就是搜索引擎--讀書筆記一

這就是搜索引擎 -- 讀書筆記一算法

相信搜索引擎對於每個愛好算法甚至愛好技術的IT人員都具備強烈的好奇心吧,由於搜索引擎在互聯網中的地位實在是不可撼動。想象若是互聯網沒有了搜索引擎,那麼咱們日常技術上出現瓶頸了怎麼辦?甚至連普通的生活都離不開搜索,大學生的你訂餐了嗎?緩存

搜索引擎已經發展爲每一個人上網都離不開的重要工具,其技術發展歷程是怎樣的呢?其基本目標是什麼?核心技術問題又是什麼呢?在接下來的一系列博文中,我會根據讀書和本身的總結用平乏的語言來表達出來,但願對朋友們有所幫助。另外,博友們若是有好的相關資源,也感謝留言。網絡

今天,我給你們講解一下搜索引擎及其技術架構的基礎知識,讓咱們對搜索引擎有一個大體的瞭解。數據結構

商業搜索引擎公司的發展

在信息量快速增加的狀況下,如何可以找到知足用戶需求的網頁內容就日益成爲愈來愈重要的問題。信息增加速度越快,用戶需求越迫切,相應的搜索結果就越要準確。大的搜索引擎公司就是在這個用戶需求背景下,從創建到逐步壯大,乃至發展到今天搜索引擎成爲最重要的互聯網的應用。架構

早期時候,隨着互聯網的進一步的快速發展,信息的爆炸性增加,已有的搜索引擎服務提供商所提供的搜索服務質量並沒有大的改善。Google於1998年成立,以PageRank連接分析等新技術大幅度提升了搜索質量,以後高速發展並搶佔了絕大多數的搜索引擎市場,成爲目前最重要的互聯網之一。想一想爲何搜索引擎公司這麼看重搜索技術?就拿大學生訂餐這一事情來講,夠實際吧,若是你訂餐時查詢到的前3頁搜索結果都是已經售完了的飯菜品,那麼此時飢餓的你感覺如何?相信你連揍死店家的衝動都有。在另一家外賣店的首頁上,搜索第一條就是很新鮮的菜品,你會選擇哪一家外賣店呢?工具

搜索引擎技術發展史

從搜索引擎所採起的技術來講,能夠將搜索引擎技術的發展劃分爲4個階段:分類目錄文本檢索連接分析用戶中心網站

史前時代:分類目錄的一代搜索引擎

這個時代能夠稱爲「導航時代」,Yahoo和國內hao123是這個時代的表明。經過人工收集整理,把屬於各個類別的高質量網站或者網頁分門別類羅列,用戶能夠根據分級目錄來查找高質量的網站。這種方式是純人工、最原始的方式,並未採起什麼高深的技術手段。spa

第一代:文本檢索的一代blog

文本檢索的一代採用經典的信息檢索模型,好比布爾模型、向量空間模型或者機率模型,來計算用戶查詢關鍵詞和網頁文本內容的相關程度。網頁之間有豐富的連接關係,而這一代搜索引擎並未使用這些信息。早期的不少搜索引擎好比AltaVista、Excite等大都採起這種模式。

第二代:連接分析的一代

這一代的搜索引擎充分利用了網頁之間的連接關係,並深刻挖掘和利用了網頁連接所表明的含義。一般而言,網頁連接表明了一種推薦關係,因此經過連接分析能夠在海量內容中找出重要的網頁。這種重要性本質上是對網頁流行程度的一種衡量,由於被推薦次數多的網頁其實表明了其具備流行性。搜索引擎經過結合網頁流行性和內容類似性來改善搜索質量。

咱們都知道Google率先提出並使用PageRank連接分析技術,並大獲成功,這同時引發了學術界和其餘商業搜索引擎的關注。後來學術界陸續提出了不少改進的連接分析算法。目前幾乎全部的商業搜索引擎都採用了連接分析技術。

採用連接分析可以有效改善搜索結果質量,可是這種搜索引擎並未考慮用戶的個性化要求,因此只要輸入的查詢請求相同,全部用戶都會得到相同的搜索結果。另外,不少網站擁有者爲了得到更高的搜索排名,針對連接分析算法提出了很多連接做弊方案,這樣致使了搜索結果質量變差。

第三代:用戶中心的一代

目前的搜索引擎大均可以納入第三代,即以理解用戶需求爲核心。不一樣用戶即便輸入同一個查詢關鍵詞,但其目的也有可能不同。好比一樣輸入「蘋果」做爲查詢詞,一個追捧IPhone的時尚青年和一個果農的目的會有至關大的差距。而目前搜索引擎大部分致力於解決以下問題:如何可以理解用戶發出的某個很短小的查詢詞背後包含的真正需求,因此這一代搜索引擎稱之爲以用戶爲中心的一代。

搜索引擎的技術架構

做爲互聯網應用中最具技術含量的應用之一,優秀的搜索引擎須要複雜的架構和算法,以此來支撐對海量數據的獲取、存儲、以及對用戶查詢的快速而準確的相應。

咱們來看看這個搜索引擎的基礎架構:

搜索引擎的信息源自於互聯網的網頁,經過網絡爬蟲將整個互聯網的信息獲取到本地,由於互聯網頁面中有至關大比例的內容是徹底相同或者近似重複的,「網頁去重」模塊會對此作出檢測,並去除重複內容。

在此以後,搜索引擎會對網頁進行解析,抽取出網頁主題內容,以及頁面中包含的指向其餘頁面的連接。爲了加快響應用戶查詢的速度,網頁內容經過「倒排索引」這種高效查詢數據結構來保存,而網頁之間的連接關係也會予以保存。之因此要保存連接關係,是由於這種關係在網頁相關性排序階段是可利用的,經過「連接分析」能夠判斷頁面的相對重要性,對於爲用戶提供準確的搜索結果幫助很大。

當搜索引擎接收到用戶的查詢詞後,首先須要對查詢詞進行分析,但願可以結合查詢詞和用戶信息來正確推到用戶的真正搜索意圖。在此以後,首先在緩存中查找,搜索引擎的緩存系統存儲了不一樣的查詢意圖對應的搜索結果,若是可以在緩存系統找到知足用戶需求的信息,則能夠直接將搜索結果返回給用戶,這樣既省掉了重複計算對資源的消耗,又加快了響應速度;若是保存在緩存的信息沒法知足用戶需求,搜索引擎須要調用「網頁排序」模塊功能,根據用戶的查詢實時計算哪些網頁是知足用戶信息需求的,並排序輸出做爲搜索結果。而網頁排序最重要的兩個參考因素中,一個是內容類似性因素,即哪些網頁是和用戶查詢密切相關的;另一個是網頁重要性因素,即哪些網頁是質量較好或相對重要的,這點每每能夠從連接分析的結果得到。結合以上兩個考慮因素,就能夠對網頁進行排序,做爲用戶查詢的搜索結果。

後話

現在,除了上述的子功能模塊,搜索引擎的「反做弊」模塊成爲日益重要的功能。搜索引擎做爲互聯網用戶的上網入口,對於網絡流量的引導與分流相當重要,甚至能夠提及了決定性做用。

所以,做爲IT人員或者即將進入IT行業的童鞋們,咱們都應該對搜索引擎有一些基本的認識。

相關文章
相關標籤/搜索