1. 程式人生 > >這就是搜尋引擎-筆試3-搜尋引擎索引

這就是搜尋引擎-筆試3-搜尋引擎索引

單詞詞典1、雜湊加連結串列2、樹形結構:B樹或者B+樹倒排列表:單詞+文件號,詞頻,出現的位置文件號一般採用差值儲存,以節省空間建立索引1、兩遍文件遍歷法第一遍,收集全域性統計資訊,文件數N,每個文件包含不同單詞數M,每個單詞在多少個文件中出現過的資訊DF,通過這些資訊可以計算出最終索引的大小第二遍,在建立好的記憶體中建立索引,從磁碟讀取文件並解析文件是最消耗時間的步驟2、排序法始終在記憶體中分配固定大小的空間,用來存放詞典資訊和索引中間結果,當分配空間消耗光的時候,把中間結果寫入磁碟,清空記憶體資料進行下一輪索引中間結果排序,排序前,文件ID,單詞ID,單詞頻率排序後,單詞ID(主鍵),文件ID(次鍵)合併中間結果,把中間結果檔案進行合併,按單詞ID寫入最終結果檔案3、歸併法在中間結果排序完成以後,把字典資訊也寫入文件中,這樣全額使用記憶體在建立中間索引中,實際單詞,文件編號,詞頻合併時,針對每個單詞的倒排列表進行合併,形成最終的詞典資訊動態索引倒排索引:詞典在記憶體裡,倒排列表儲存在磁碟檔案中臨時索引:詞典和倒排列表都在記憶體中,當有新文件加入時,放到臨時索引中刪除文件列表:當文件內容被更改時,系統認為舊文件被刪除,增加一篇新文件當用戶輸入查詢時,先從找倒排索引+臨時索引,去掉刪除文件列表中的文件結果索引更新策略
1、完全重建策略:當新增文件達到一定數量後,新老索引合併重建,適合小文件集合,主流商業搜尋引擎一般也採用此方式來維護2、再合併策略:當新增文件達到一定數量後,新老索引合併重建,此時老索引還在被使用,由於老索引有序,所以合併策略執行較快,但是讀老索引,建新索引,也需要較多IO時間,比較耗時3、原地更新策略:在建立老索引時,在老索引倒排列表中留有一定的餘地,新加入索引直接追加到預留空間,實驗資料表明,更新效率比再合併策略低4、混合策略:將單詞根據不同性質進行分類,對其索引採取不同的索引更新策略,長倒排列表單詞采取原地更新策略(讀寫開銷大),短倒排列表採取再合併策略(讀寫開銷不算太大查詢處理1、一次一文件,找到包含關鍵字的所有文件集合,一次計算一個文件的得分,依次計算所有文件,計算後一般採用優先佇列對分數進行排序
2、一次一單詞,一次計算一個單詞的得分,並把結果以文件編寫為關鍵值,以hash表儲存得分,計算所有文件得分後,對hash表進行排序跳躍指標在儲存倒排索引文件編號時,通常使用跳躍指標節省空間,跳躍指標分塊使用根號L為長度效果較好多欄位索引:對網頁的不同區域進行欄位劃分,進行索引1、多索引方式,對每個不同的欄位分別建立索引2、倒排列表方式,把欄位資訊儲存到倒排列表項中3、擴充套件列表方式,把每個欄位出現的位置記錄到一張列表裡,倒排索引找到單詞後,判斷單詞的位置是否在某欄位範圍中短語查詢:本質上是如何在索引中維護單詞順序關係或位置資訊1、位置資訊索引,通過位置資訊判斷兩個詞是否為短語關係,適合常規短語2、雙詞索引,首詞+下詞,只對計算代價高的短語建立雙詞索引,一般短語通過常規手段達到目的3、短語索引,缺點無法將所有短語都建好索引,從使用者查詢日誌或網頁本身挖掘短語,適合熱門短語4、混合方法,使用者查詢->短語索引->雙詞索引->常規索引分散式索引:多臺機器協作完成索引1、按文件劃分,每臺機器負責對某個文件子集建立索引2、按單詞劃分,將單詞分別傳送給伺服器1,計算結果後,再傳送給伺服器2,一次一單詞的查詢處理方式 posted on 2013-09-16 14:01
胡滿超
閱讀(327) 評論(0)  編輯 收藏 引用 所屬分類: 搜尋引擎