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

作者:LogM

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

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

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@10、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. 搜索引擎的發展趨勢


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