搜索引擎原理(二)索引(2)
搜索引擎原理(二)索引(1)這一篇文章講解了搜索引擎索引的基本方法,這篇文章是關於索引的第二篇文章,主要關於索引的更新和查詢策略。
主要內容如下:
- 索引更新
- 查詢處理
索引更新
隨著新加入系統的文檔越來越多,要考慮合適的索引更新方法。常用的有四種:完全重建策略、再合併策略、原地更新策略和混合策略。
完全重建策略
完全重建策略比較簡單,就是新老文檔合併。因為重建策略的代價比較高,所以只適合小文檔集合。
再合併策略
新文檔進入搜索系統時,搜索系統在內存臨時維護倒排索引來記錄信息,當內存即將被消耗完時把臨時索引和老文檔的倒排索引進行合併。
其基本步驟和搜索引擎原理(二)索引講到的建立索引步驟基本一致。
再合併策略是效率非常高的索引跟新策略,主要原因在於,在對老的索引進行遍歷時,因為已經按照索引單詞的詞典由低到高拍好序,所以可以順序讀取文件內容,減少磁碟尋道。
原地更新策略
原地更新是為了改變再合併策略的缺點,其提出一點改進,即在索引更新過程中,如果老索引的倒排列表沒有變化,可以不需要讀取這些信息,而只對那些倒排列表變化的單詞進行處理。甚至希望更進一步:即老索引的倒排列表發生變化,是否可以只對其末尾進行追加操作,而不需要讀取原先的倒排列表並重寫到磁碟另外一個位置?
為了達到上述目標,原地更新策略在索引合併時,並不生成新的索引文件,而是直接在老索引後面進行追加操作。
混合策略
將以上三種策略進行混合,達到具體問題具體分析,形成更高效的方法。
混合策略一般會對單詞的性質進行分類,不同類別的單詞,索引更新策略也不相同。一般是長倒排列表原地更新,短倒排列表再合併。
查詢處理
假設索引已經建立,還需要解決的問題是響應用戶的搜索需求。
目前有兩種常見的方式:一次一文檔和一次一單詞。
一次一文檔
以文檔為單位,循環計算某個文檔與查詢的最終相似性,直到所有文檔都計算完畢。
一次一單詞
首先將某個單詞對應的倒排列表中的每個文檔ID都計算一個部分相似性得分,接著計算下一個單詞倒排列表中包含的文檔。當所有單詞處理完畢後,按照大小排序,輸出得分最高的K個文檔作為搜索結果。
本章內容就是這麼多,下一篇將講解多欄位索引、短語查詢和分散式索引。
推薦閱讀:
※20171225《甲骨文字詁林補編》索引數位化完成
※索引優越性100萬&&3000萬條記錄,資料庫性能還有try-catch異常的捕捉
※寫會MySQL索引
※建立「開卷助理」新的RMP檔
※20180101「引得市」資料庫與「古文字缺字資料庫」更新及使用說明