【讀書筆記】這就是搜索引擎

做者:LogMweb

本文原載於 https://segmentfault.com/u/logm/articles,不容許轉載~segmentfault

本文是《這就是搜索引擎》的讀書筆記服務器

1. 概述

1.2 搜索引擎技術發展史

  • 第一代:文本檢索。關鍵詞與網頁內容的相關程度。
  • 第二代:連接分析。PageRank。
  • 第三代:用戶中心。理解用戶需求。

2. 爬蟲

2.1 通用爬蟲框架

2.3 爬蟲質量的評價標準

  • 抓取網頁覆蓋率、抓取網頁時新性、抓取網頁重要性
  • 爲了同時知足上述3個標準,google用了多套不一樣的爬蟲,一些關注時新性,一些關注覆蓋率。

2.4 抓取策略

  • 寬度優先遍歷:暴力但有效
  • 非徹底PageRank:由於PageRank須要拿到全部的頁面計算纔是準確的,爬蟲抓取的時候沒有看到全部頁面,因此叫"非徹底"
  • OPIC:改進PageRank,實時計算
  • 大站優先

2.5 更新策略

  • 歷史參考策略:歷史上變更比較快的,抓取頻繁一點,通常用泊松過程建模
  • 用戶體驗策略:保存網頁的多個歷史版本,查看不一樣歷史版本對用戶點擊的影響。因此用戶點擊不到的頁面,即便更新快,也不用抓取。
  • 聚類抽樣策略:更新快的頁面有一些相似的特徵

2.6 暗網抓取

  • 抓取常規網頁連接不到的信息

2.7 分佈式爬蟲

  • 一致性哈希肯定每一個爬蟲負責哪些url的抓取

3. 索引

3.1 倒排索引的結構

  • 單詞字典 + 倒排列表

3.4 創建索引

  • 兩遍文檔遍歷法:徹底在內存中構建
  • 排序法:內存滿時,對中間文件排序後存到磁盤,最後再合併全部的中間文件。整個過程,整個字典都在內存裏,字典有可能過大。
  • 歸併法:每一箇中間文件都是一套倒排索引(含各自的字典),最後再把全部的倒排索引合併。

3.6 動態索引與索引更新

  • 徹底重建策略:臨時索引與老索引的文檔所有取出從新建索引,重建的代價高,但主流搜索引擎都採用該方式
  • 再合併策略:臨時索引與老索引進行索引合併(不是文檔取出從新建索引,而是合併)
  • 原地更新策略:再合併策略的升級,臨時索引追加到老索引

3.7 查詢

  • 一次一文檔:每一個文檔對query中全部詞計算類似度
  • 一次一單詞:對query中每一個詞計算文檔類似度,每一個文檔累加每一個query詞的類似度
  • 跳躍指針:由於倒排索引通常是壓縮保存的,跳躍指針幫助快速定位須要的文檔

3.8 多字段索引

有時候須要區分不一樣的字段來索引,好比"標題"、"正文"、"摘要"等字段。
  • 多索引方式:爲每一個字段都創建一份倒排索引
  • 倒排列表方式:在每一個倒排列表的後面追加一個字段,表示該關鍵詞是在哪一個字段出現
  • 擴展列表方式:用擴展列表標明每一個字段的開始和結尾位置,結合倒排列表中關鍵詞的位置,能夠知道關鍵詞在哪一個字段。實際使用經常使用這個方法

3.9 短語查詢

  • 位置信息索引:利用倒排列表中關鍵詞的位置信息判斷是否組成短語
  • 雙詞索引:"首詞"的倒排索引中有指向"下詞"的指針,"下詞"又有指針指向倒排列表
  • 短語索引:會致使字典急劇膨脹,通常只用於熱門短語

3.10 分佈式索引

索引體積大,一臺服務器存不下
  • 按文檔劃分:按文檔對索引文件進行切分。擴展性、容錯性、對查詢方式的支持都較好
  • 按單詞劃分:按單詞字典對索引文件進行切分

4. 索引壓縮


5. 檢索與排序

把與用戶搜索詞最相關的結果排在前面
  • 布爾模型
  • 向量空間模型:TF-IDF + cosine距離
  • 機率檢索模型:BM25
  • 語言模型:從文檔生成用戶搜索的機率多大
  • 機器學習排序
  • 評價標準:準召、P@十、MAP

6. 連接分析

6.2 重要的概念模型

  • 隨機遊走模型:模擬用戶的瀏覽行爲,PageRank
  • 子集傳播模型:從一個特殊子集出發,將權重傳遞到其餘網頁,HINTS

7. 雲計算與雲存儲


8. 網頁反做弊

8.1 內容做弊

  • 關鍵詞堆砌、熱門關鍵詞、標題做弊、meta信息做弊……
  • 內容農場:僱人寫垃圾文章,比機器做弊更難被斷定

8.2 連接做弊

  • 連接農場、購買連接、購買域名……

8.3 頁面隱藏做弊

  • IP Cloaking、User Agent Cloacking、頁面重定向、頁面隱藏……

8.4 web2.0 做弊

  • 博客做弊、點評做弊、Tag做弊、我的Profile做弊……

8.5 反做弊的通用思路

  • 子集傳播模型:信任傳播模型(如TrustRank)、不信任傳播模型(如BadRank)
  • 異常發現模型(如SpamRank)

9. 查詢意圖分析


10. 網頁去重


11. 搜索引擎的發展趨勢

相關文章
相關標籤/搜索