資訊檢索概述
資訊過載
youtube 一分鐘上傳400小時視訊
蘋果使用者一分鐘下載50000個應用
亞馬遜每分鐘交易額20萬美金
google翻譯一分鐘翻譯6950萬個單詞
資料--資訊越來越多
資訊的定位檢索:準確、迅速
傳統檢索方式的缺點
檔案檢索
作業系統常見的是硬碟檔案檢索
文件檢索:整個文件開啟時已經載入到記憶體了;
缺點:全盤遍歷,慢,記憶體的海量資料
資料庫檢索
like “%三星%” 全表遍歷;
like “三星%” 最左特性 不會全表遍歷;
無法滿足海量資料下準確迅速的定位
mysql 單標資料量 --- 千萬級
oracle 單表資料量 --- 億級
(對下圖有疑問的請忽略此圖,直接看文字解釋)
總結:傳統方式無法滿足檢索的需求(迅速、準確、海量)
全文檢索技術(大型網際網路公司的搜尋功能都是全文檢索)
定義:在海量的資訊中,通過固定的資料結構引入索引檔案,利用對索引檔案的處理
實現對應資料的快速定位等功能的技術;
資訊檢索系統(全文檢索技術的應用,搜尋引擎百度,google)
資訊採集:通過爬蟲技術,將公網的海量非結構化資料爬取到本地的分散式儲存系統進行儲存
資訊整理:非結構化資料無法直接提供使用,需要整理,整理成索引檔案
資訊查詢:通過建立一個搜尋的應用,提供使用者的入口進行查詢操作,
利用查詢條件搜尋索引檔案中的有效資料;
結構
問題:非結構化資料,海量資料如何整理成有結構的索引檔案(索引檔案到底什麼結構)?
倒排索引
索引檔案是全文檢索技術的核心內容,建立索引,搜尋索引也是核心,搜尋在建立之後;
如何將海量資料計算輸出成有結構的索引檔案,需要嚴格規範的計算邏輯---倒排索引的計算
以網頁為例:
假設爬蟲系統爬取公網資料(2條);利用倒排索引的計算邏輯,
將這兩個非結構化的網頁資訊資料整理成索引檔案;
源資料:標題、時間、作者、留言、內容
網頁1(id=1):王思聰的IG戰隊獲得LOL世界冠軍
網頁2(id=2):王思聰又換女朋友了嗎?不清楚。
倒排索引第一步:計算分詞(資料內容)
分詞:將資料字串進行切分,形成最小意義的詞語
(不同語言底層實現是不一樣的)
並且每個分詞計算的詞語都會攜帶計算過程中的一些引數詞語
(來源的網頁id,當前網頁中該詞語出現的頻率,出現的位置)
網頁1:王思聰(1,1,1),IG(1,1,2),戰隊(1,1,3),LOL(1,1,4),世界(1,1,5)
網頁2:王思聰(2,1,1),女朋友(2,1,2),不清楚(2,1,3)
倒排索引第二步:合併分詞結果
合併結果:王思聰([1,2],[1,1],[1,1]),IG(1,1,2),戰隊(1,1,3),LOL(1,1,4),世界(1,1,5)
女朋友(2,1,2),不清楚(2,1,3)
合併邏輯:所有的網頁的分詞計算結果一定有重複的分詞詞彙,合併後所有引數也一起合併
結果形成一批索引結構的資料;
將網頁的資料物件(document)和分詞結果(index)一起儲存到儲存位置,形成整體的索引檔案
索引檔案結構:
對索引檔案中的分詞合併後的資料進行復雜的計算處理,獲取我們想要的資料集合(document的集合)