搜索引擎學習之旅3 - 搜索引擎工作流程

搜索引擎之旅系列往期文章:

中文搜索引擎原理分析與實現(1)基本理論

搜索引擎學習之旅1 - SEO的概念

搜索引擎學習之旅2 - 搜索引擎分類


前面的文章只是介紹了一些搜索引擎相關的概念,本文就介紹一下搜索引擎的完整工作流程。搜索頁面的輸入框是用戶和搜索引擎進行交互的接口,其實這個搜索框僅僅是搜索引擎的冰山一角,可以思考一下幾個問題:

  1. 搜索引擎返回的數據怎麼來的?
  2. 搜索引擎如何準確地返回用戶想要檢索的信息?
  3. 搜索引擎如何能在極短的時間內返回信息?
  4. 搜索引擎返回的信息是如何排序的?

如果弄清楚了上面的幾個問題,就對搜索引擎的工作原理有了簡單的認識,本文將從以上幾個問題出發介紹搜索引擎。

 

1 搜索引擎整體工作流程

搜索引擎本身包含網頁抓取、網頁評價、反作弊、建庫、倒排索引、索引壓縮、在線檢索、ranking排序策略等等流程,下圖是用戶訪問谷歌瀏覽器後其後臺的工作流程:

下圖是更加詳細的搜索引擎工作流程:

這裏寫圖片描述

本文只是簡單地梳理一下搜索引擎的各個流程,每個模塊的詳細流程後面我會結合開源的一些文檔具體總結。

 

這裏先簡單地以網頁爬蟲爲引,簡單說明一下:搜索引擎的各個模塊都有非常多的問題需要解決。

2 搜索引擎基礎:網頁抓取 

這是搜索引擎的第一步,畢竟搜索是建立在數據的基礎之上的~,在之前我也寫過一篇博客介紹使用Scrapy框架爬取網站數據,有興趣的可以移步瞭解一下。網頁抓取需要用到Spider,之所以稱之爲Spider是因爲在抓取網頁的過程中,Spider需要從當前爬取的網頁中提取到子鏈(該網站中指向的其他網頁的鏈接)。

名詞解釋:

作弊網站是指在網頁設計中,爲了提升網頁在搜索引擎中的排序,設計者採用的一系列欺騙搜索引擎的做法,主要表現是普通用戶看到的頁面與搜索引擎抓取到的內容不一致。

robots.txt是網站放在服務器根目錄下的一份文檔,可以將其理解爲網站和爬蟲之間的一份協議,該文件會指出本網站允許哪些爬蟲爬取哪些目錄下的網頁。

對於爬蟲而言至少有如下問題需要解決:

  1. 由於互聯網太大了,爬蟲是很難抓取到所有的網頁的
  2. 網頁中存在垃圾網頁和作弊網頁,如何準確識別這些網頁,避免其污染數據影響搜索結果
  3. 應該如何指定爬取的優先級呢?
  4. 應該側重於深度爬取(從當前頁面一直往下爬)還是廣度爬取(先爬取先發現的網頁)呢?
  5. 如何去重(相同url,內容高度相似)呢?
  6. 如何增量更新呢?
  7. 網頁的內容可能會發生改變,如何確保數據庫中已經爬取的網頁是最新的呢?
  8. 整個爬蟲框架應該如何設計呢?
  9. 如何讓整個爬蟲框架更高效?
  10. 如何合理的估計爬蟲負載?
  11. 如何網站禁止爬蟲爬取怎麼辦?

我會認真學習部分爬蟲框架,並在之後的文章中仔細地分析。

 

書籍推薦

《這就是搜索引擎-核心技術詳解》

 

References

1. https://blog.csdn.net/u013527419/article/details/76851809

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