1. 程式人生 > >資訊檢索概述

資訊檢索概述

資訊過載

      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的集合)