這就是搜索引擎核心技術詳解讀書筆記(1)

本文基於《這就是搜索引擎核心技術詳解》,2018年2月印刷版,本書雖然年代有點久遠(2012年的書),但是關於搜索引擎及倒排索引等內容還是講解的透徹易懂,對理解原理有很大的幫助,本文針對第一章---第三章3.1之前的內容做了筆記整理,後續會陸續整理餘下內容,其中也夾雜了自己的理解,作爲記錄,方便以後分享查詢,歡迎閱讀。

1      搜索引擎及其技術架構

1.1    搜索引擎發展史

第一代:分類目錄

純人工收集整理,採用分類目錄,將各個類別的高質量網站或網頁分門別類供用戶獲取。

(對用戶需求和相關性不做考慮)

第二代:文本檢索

採用經典的文本檢索模型(如:布爾模型、向量空間模型等)計算用戶關鍵詞和網頁文本相關度返回查詢結果

(假定用戶輸入的信息就是用戶的真實需求)

第三代:鏈接分析

充分利用網頁之間的鏈接關係,通過鏈接分析找到相關內容,有效改善搜索結果質量。但未考慮用戶差異化需求,所有用戶返回相同結果。

鏈接關係代表了一種推薦含義,獲得越多推薦的網頁其鏈接分析得分越高。

(未對用戶需求做分析)

第四代:用戶中心一帶

以理解用戶需求爲核心,根據不同用戶,相同用戶搜索的場景差異返回不同結果。如:

利用地理位置信息,用戶過去發出的查詢詞及相應點擊記錄歷史等,試圖正確分析用戶此時此地的真正需求。

(同時考慮了1.3中的三個核心問題,但是由於技術的侷限,還沒有完全做到極致)

1.2    搜索引擎的目標

更快更全更準,

對於一個搜索引擎來說,達到“更全”“更快”可以使其不落後於同類產品,“更準”則能構建核心競爭力

1.3    搜索引擎的3個核心問題

用戶真正想要什麼

哪些信息是和用戶需求真正相關的

哪些信息是用戶可以信賴的

1.4    搜索引擎的技術架構

優秀的搜索引擎需要複雜的架構和算法來支撐海量數據的存儲、獲取及對用戶查詢的快速準確響應。

1、如何獲取存儲並計算海量的數據

通過網絡爬蟲將整個互聯網信息獲取到本地,應用“網頁去重”去掉重複內容,

搜索引擎對網頁進行解析,抽取網頁主體內容用“倒排索引”方式保存,通過保存鏈接關係通過“鏈接分析”來提高頁面的準確行

2、如何快速響應用戶查詢

首先對查詢詞結合用戶信息來推導用戶真正搜索意圖

搜索引擎的緩存系統存儲不同的查詢意圖對應的搜索結果,如果緩存中存在該搜索意圖,直接返回結果,

如果不存在,搜索引擎調用“網頁排序”功能根據用戶查詢實時計算哪些網頁滿足用戶需求,排序輸出結果

排序兩個重要參考因素:內容相似性

                                     網頁重要性(質量好的靠前---鏈接分析)

3、如何使搜索滿足用戶需求

最主要的方式還是“鏈接分析”,但是這個領域的指導思想現在還是基於關鍵詞匹配,和搜索歷史的匹配,從關鍵詞匹配到讓機器真正理解信息所代表的含義是解決這個問題必須要邁過的門檻,雖然人工智能在內的很多相關研究領域對此有所進展,但短期內還未能看到解決這一問題的清晰思路

 

ps:反作弊:

搜索引擎作爲互聯網用戶上網入口,對於網絡流量的引導與分流至關重要,導致各種“作弊”手段將網頁搜索排名提高到與網頁質量不相稱的位置,嚴重影響用戶體驗,如何自動發現作弊網頁並實施相應處罰,成爲搜索引擎非常重要的組成部分。

2      爬蟲(對此研究不深,一帶而過)

優秀的爬蟲應該具備高性能,好的可擴展性,健壯性和友好性

從用戶體驗角度:爬蟲工作效果評價標準:抓取網頁覆蓋率、抓取網頁實時性和抓取網頁重要性

抓取策略、網頁更新策略、暗網抓取和分佈式策略是爬蟲系統至關重要的四個方面,基本決定了爬蟲系統的質量和性能。

2.1    抓取策略

寬度優先遍歷

非完全pagerank策略

網頁更新策略

大站優先

聚類抽樣

……

2.2    暗網抓取

暗網:非直觀網絡數據,需以互動方式(如用戶選擇或填寫)方式才能進入頁面

這種暗網爬蟲有兩點技術挑戰:精組合查詢選項

                                               對於文本框爬蟲如何填入適合的內容

需要儘可能多的將垂直網站數據下載到所以你看,又不能給被訪問網站造成過大壓力,同時儘可能節約爬蟲資源。(ISIT算法)

3      搜索引擎索引

高效的數據結構中,大量採用索引來提升系統效率

如:倒排索引、簽名文件、後綴樹等,實驗表明,倒排索引是單詞到文檔映射關係的最佳實現方式。

3.1    倒排索引

倒排索引是實現單詞-文檔矩陣的一種存儲形式,是搜索引擎用來快速查找包含某個單詞的文檔集合的數據結構。

相關概念:

文檔:文檔用來存儲/表徵文本信息

文檔集合:若干文檔構成的集合

文檔id(文檔編號):文檔的唯一標識

單詞id(單詞編號):搜索引擎內部用來識別單詞的唯一標識

倒排索引:實現“單詞--文檔矩陣”的一種存儲形式,通過倒排索引,可以根據單詞快速獲取包含這個單詞的文檔列表。主要由兩個部分組成:單詞詞典和倒排列表

單詞詞典:文檔中所出現的所有單詞的相關信息,單詞詞典內每條索引項(和字典目錄類似)記錄單詞本身一些信息及指向倒排列表的指針

倒排列表:倒排列表存儲單詞(所出現的)對應的所有文檔及所在文檔的位置信息,詞頻等,每一條記錄爲一個倒排項,倒排列表即倒排項的列表。

倒排文件:存儲倒排列表的文件即倒排文件,可以理解爲存儲倒排索引的物理文件。

 

3.1.1 倒排索引的構成

倒排索引由單詞詞典和倒排列表構成。單詞詞典記錄但此信息及對應的倒排文件指針,倒排列表記錄的是所有單詞對應的文檔信息及詞頻等內容,存儲倒排列表的物理文件爲倒排文件。

單詞詞典與倒排文件組成的“單詞-文檔矩陣”即爲倒排索引的基本構成。

有了這個索引,搜索引擎可以很方便的響應用戶的查詢。

3.1.2 LUCENE倒排索引創建流程

1、分詞器將文檔分詞切割成詞條(Tokenizer,得到結果Token詞條:攜帶額外信息的詞項--term,包括詞項term、詞項在原始文本中的位置、詞項的長度)

2、語言處理組件(LinguisticProcessor)將詞條Token轉換爲詞項term:term爲搜索時的一個單位,即文檔中的單詞(方便形成單詞詞典)。

3、索引組件(Indexer)將得到的Term創建或加入到單詞詞典,對詞典排序,合併相同的Term爲倒排索引。         


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