【一文讀懂】百度一下,背後可不只是簡單的一下

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

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

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

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

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

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

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

那問題來了,當搜尋“趙麗穎”的時候,網頁A和網頁B都滿足條件,返回給搜尋者的時候,A和B的順序如何決定的?

先來思考一個問題,如果網頁A重點介紹的是趙麗穎和馮紹峰結婚的訊息,還附屬介紹了趙麗穎的前任們、代表作等娛樂訊息;網頁B重點介紹的是趙麗穎的新電影《張叔叔的美好時光》,介紹了電影的導演、演員陣容、內容介紹、上映時間等。如果你現在化身百度的伺服器,當用戶搜尋“趙麗穎”的時候,你更想把哪個網頁放到前面讓使用者看到?

張叔叔掐指一算,你會優先把網頁A返回給使用者。捫心自問一下,是怎麼樣的思考過程讓你最終選擇把A放到前面的?其實是網頁內容的重點左右了你的選擇,很明顯網頁A更加偏重介紹趙麗穎這位美女明星,而網頁B的介紹重點是電影《張叔叔的美好時光》。如果此處你都抓不住內容重點,說明你們語文老師可能之前是教體育的。同樣的,百度在對返回結果進行排序的時候也會考慮哪一個網頁與搜尋內容“趙麗穎”更相關,百度伺服器只會計算,是不會像我們這樣思考的,它們是如何計算出來的呢?

給大家介紹一種主流的計算方法:TF-IDF,英文全稱term frequency–inverse document frequency,千萬不要被這複雜的詞彙嚇到,有叔叔在,一切且可理解。先把它翻譯成中文就是詞頻-文件頻率,詞頻就是在一個網頁中這個詞出現的次數,比如網頁A中“趙麗穎”出現了10次,在網頁B中“趙麗穎”出現了3次,從這個角度來看,是不是網頁A更與“趙麗穎”有關了呢。

僅僅依賴詞頻來判斷是不夠的,比如有個思維比較另類的同學搜尋“的”這個字,因為“的”是一個比較常見的字,那麼網頁A和網頁B中包含“的”的數目就差別不大了,很難判斷哪個網頁更加偏重“的”。由於“的”的普遍性,也就沒有辦法展現出哪個網頁更符合搜尋結果。如果所有網頁中都包含“趙麗穎”,網頁A和B也就不會那麼突出了。那如何體現詞語的特殊性呢,於是引入了IDF(文件頻率),如果所有文件中都有這個詞,那說明大家都有,這個詞也就不重要了;如果就幾個文件中有這個詞,說明這個詞在這幾篇文件中地位很重要。這個時候再次回憶一下童年,是不是所有小朋友家都有的玩具往往被扔到角落裡面,你就獨愛那個別人家沒有的玩具。

百度就是根據詞頻-文件頻率這個思路,最終算出來網頁A比網頁B更加滿足搜尋請求“趙麗穎”(現實中比這個複雜多了喔)。到此為止,是不是對於百度一下背後發生了什麼有了一個比較清晰的認識了?

大家經常聽到“競價排名”這個詞,這個是什麼意思呢?張叔叔先給大家科普一下,據統計表明,絕大多數人只會點選搜尋結果的前幾個。這個對於商家來說誘惑力很大,如果商家的網站在搜尋結果中越是靠前,那麼被點選的概率越大,直接導致自己的銷量越大。比如有兩家賣冰箱的公司A和B,為了讓自己的排名比較靠前,A公司就花錢買了百度關鍵詞“冰箱”的排名,當用戶搜尋“冰箱”的時候,A就會排在B前面,這就造成了很多使用者去點選和購買A公司的冰箱。

友情提示:現在百度不是完全按照錢多錢少來確定排名,也會綜合考慮其他因素。
如果你或者爸爸媽媽使用了百度APP,你會發現百度每天都會給你推送你喜歡的新聞,那這個是怎麼做到的?其實和叔叔之前的文章 《當媽媽在淘寶的時候,都發生了什麼?》 中淘寶通過蒐集你媽媽的行為記錄來推薦購買其他商品一樣,百度也會蒐集你平時的搜尋和瀏覽記錄,然後就可以分析出你的愛好,之後就能推薦你喜歡的東西了!

百度一下背後的故事有一定的難度喔,希望大家能夠仔細思考,下次再百度的時候你就明白這背後的邏輯了!

【張叔叔科普資料】
2018年6月,百度APP日活超過1.5億,這個只是每天使用百度APP的使用者量。不可否認,幾乎每天使用電腦的人都或多或少使用百度,這個數量幾乎等於中國網民的數量。如果網民每天平均使用三次百度的話,那就會產生百億級別的搜尋請求。