百度一下,背後可不只是簡單的一下(上篇)

今天張叔叔給大家科普一下百度一下是如何實現的。百度被稱為中國最大的搜尋引擎,全球最大的中文搜尋引擎,這個的確不是吹噓。百度每天處理的搜尋請求量都是百億級別,可以用手指數一下“個十百千萬...”,你會驚奇的發現,十個手指頭都不夠百億單位。

什麼是引擎?引擎可以直接理解為發動機,百度搜索引擎顧名思義就是百度為搜尋提供的發動機,藉此為大家提供孜孜不倦的搜尋服務,滿足大家每天的搜尋請求。搜尋引擎到底如何實現的呢,帶著問題和好奇心跟張叔叔一起學習吧。

搜尋引擎最終提供給大家的是各種各樣的搜尋結果,那麼這些結果從哪來的?簡而言之就是通過網路爬蟲從網路上爬取的,具體網路爬蟲是如何工作的,可以參見叔叔之前的文章 ofollow,noindex">《什麼是網路爬蟲,每天都在忙乎什麼》 。百度每天都有海量的網路爬蟲在計算機網路中忙碌著,它們從各種網站上爬取網頁,圖片,視訊等等資訊。這些資訊獲取到之後,百度可不是簡單的就儲存到自己的伺服器上面,他們要做很多事情來保證我們可以搜尋到這些內容。為了講解方便,叔叔後面就以網頁檢索為例。

先開動腦筋思考一個問題,如果放在你面前一本書,如何快速的找到這本書中所有的成語“滴水穿石”所在的頁碼?是不是能想到的唯一方法就是翻遍整本書,一頁一頁的去查詢成語的位置,如果這本書很薄還好,如果像《西遊記》原著那麼厚,我想找到所有頁碼大概得需要一整天時間了。如果換個場景,叔叔給你一本詞典,讓你找到詞典中的成語“滴水穿石”,你大概需要多久?是不是不到一分鐘就可以找到了。

為什麼詞典會比一頁一頁翻書查詢得更快?原因很簡單,是因為詞典前面有一個目錄,可根據首字母進行查詢,通過首字母可以大大的縮小查詢範圍,這樣便可以快速的找到你要查詢的詞語了。百度通過網路爬蟲獲取到海量的網頁內容,如果把每一個網頁想象成一頁紙,那麼百度每天就是在一本擁有上億頁的書中幫大家查詢內容。為了提高查詢的速度,同樣需要建立類似於詞典中的目錄,不過百度搜索引擎中這個東西叫作索引。

索引如何構建的?如果此刻你想到了這個問題,說明你很愛思考。假設今天百度爬蟲獲取到了兩個網頁內容A和B,A中講述的是趙麗穎和馮紹峰結婚了,B中講述的是趙麗穎的新電影《張叔叔的美好時光》。當百度獲取到這兩個網頁之後,首先提取出網頁中的文字內容然後進行分詞處理。分詞是什麼?分詞就是把句段篇分割成字詞。比如A網頁就會被分詞成為趙麗穎、馮紹峰、結婚等,B網頁被分詞成為趙麗穎、張叔叔、美好時光等。此刻我們就得到了一個網頁與分詞的對應關係,主謂關係是網頁包含詞語。索引的構建正好是相反的關係,百度會記錄趙麗穎這個詞語出現在了哪些網頁中,很明顯趙麗穎出現在了網頁A和網頁B中,馮紹峰出現在網頁A中,張叔叔出現在網頁B中。這個地方就好比建立了詞典中的目錄,當你想查詢趙麗穎的時候,可以快速定位到網頁A和網頁B。索引建立好之後可以支援快速檢索了,我們輸入的搜尋內容百度如何處理的呢?

出於八卦,今天你在百度搜索中填寫了“趙麗穎和馮紹峰啥時候結婚的”,你點選“百度一下”按鈕之後,你的搜尋請求通過計算機網路傳遞到了百度伺服器,百度伺服器首先會對你的搜尋內容也進行分詞處理,最終分詞結果為趙麗穎、馮紹峰、時候、結婚。那麼通過索引可以快速的獲取到趙麗穎所在的網頁A和B,馮紹峰獲取到了網頁A,時候和結婚分別也獲取到了各自的網頁。對於這四個詞所在的網頁求交集(交集就是大家都擁有的),最終發現A是最滿足條件的結果,百度就把網頁A返回給了你,當你點選開啟A網頁之後就看到了你想看到的資訊。

那麼如果只輸入趙麗穎進行搜尋,豈不是要返回網頁A和網頁B,那麼返回順序如何決定呢?百度搜索結果中的廣告是如何返回的?是不是還要很多疑問,哈哈,且聽下文分解。

歡迎轉載,為社會主義建設添磚加瓦!