索引更新策略

動態(tài)索引通過在內(nèi)存中維護臨時索引,可以實現(xiàn)對動態(tài)文件和實時搜索的支持哮塞。但是服務(wù)器內(nèi)存總是有限的刨秆,隨著新加入系統(tǒng)的文檔越來越多,臨時索引消耗的內(nèi)存也會隨之增加忆畅。當最初分配的內(nèi)存將被使用完時衡未,要考慮將臨時索引的內(nèi)容更新到磁盤索引中尸执,以釋放內(nèi)存空間來容納后續(xù)的新進文檔。
  下面介紹四種索引更新策略:完全重建策略缓醋、再合并策略如失、原地更新策略及混合策略。

完全重建策略(Complete Re-Build)

當新文檔增加到一定數(shù)量送粱,將新文檔和老文檔進行合并褪贵,然后對所有文檔重新建立索引。
  因為重建索引需要較長時間抗俄,在進行索引重建的過程中脆丁,內(nèi)存中仍然需要維護老索引來對用戶的查詢做出相應(yīng)。
  這種策略適合比較小的文檔集合动雹,但是目前主流商業(yè)搜索引擎也一般是采用這種方式維護索引更新槽卫,這跟互聯(lián)網(wǎng)本身的特性有關(guān)。

再合并策略(Re-Merge)

再合并策略

在合并過程中胰蝠,需要依次遍歷增量索引和老索引單詞詞典中包含的單詞以及其對應(yīng)的倒排列表歼培,可以用兩個指針分別指向增量索引和老索引目前需要合并的單詞。

按如下方式進行合并:

1.如果增量索引中指針指向的單詞ID小于老索引中指針指向的單詞ID茸塞,則說明這個單詞在老索引中沒有出現(xiàn)過躲庄,直接將這個單詞對應(yīng)的倒排列表寫入新索引的倒排列表中,同時增量索引單詞指針指向下一個單詞钾虐。
  2.如果兩個單詞ID相等噪窘,則先將老索引中這個單詞對應(yīng)的倒排列表加入新索引,然后在把增量索引這個單詞對應(yīng)的倒排列表追加到其后禾唁。如下圖所示:

合并增量索引與老索引

3.如果新索引指向的單詞ID大于老索引指針指向的單詞ID效览,則直接將老索引中對應(yīng)的倒排列表加入新索引的倒排文件中无切,老索引的單詞指針指向下一個單詞荡短。
  4.兩個索引的所有單詞都遍歷完后,新索引建成哆键。

優(yōu)點:再合并策略是效率非常高的一種索引策略掘托,主要是因為在對老索引進行遍歷時,因為已經(jīng)按照索引單詞的詞典順序由低到高排好順序籍嘹,所以可以順序讀取文件內(nèi)容闪盔,減少磁盤尋道時間。
  缺點:對于老索引中的很多單詞來說辱士,盡管其倒排列表并為發(fā)生任何變化泪掀,但是也需要將其從老索引中讀取出來并寫入新索引中,這樣就會造成很大的磁盤輸入輸出消耗颂碘。

原地更新策略(In-Place)

在索引更新過程中异赫,如果老索引的倒排列表沒有變化,可以不需要讀取這些信息,而只是對那些倒排列表變化的單詞進行處理塔拳,或者是直接將發(fā)生變化的倒排列表追加到老索引的末尾鼠证,即只更新增量索引里出現(xiàn)的單詞相關(guān)信息,這樣就可以減少大量的磁盤讀寫操作靠抑,提升系統(tǒng)執(zhí)行效率量九。


原地更新策略

存在問題:對于倒排文件中的兩個相鄰單詞,為了在查詢時加快讀寫速度颂碧,其倒排列表一般是順序存儲的荠列,這導(dǎo)致沒有空余位置來追加新信息。為了能夠支持追加操作载城,原地更新策略在初始建立的索引中弯予,會在每一個單詞的倒排列表末尾預(yù)留出一定的磁盤空間。當預(yù)留空間不足時个曙,需要在磁盤中找到一塊完整的連續(xù)存儲區(qū)锈嫩,將增量索引對應(yīng)的倒排列表追加到其后,實現(xiàn)倒排列表的“遷移”工作垦搬。
  原地更新策略出發(fā)點很好呼寸,但是實驗數(shù)據(jù)證明其索引更新效率比再合并策略低,主要有兩個原因:
  1.在這種方法中猴贰,對倒排列表的“遷移”是比較常見的对雪。這個策略需要對磁盤可用空間進行維護和管理,這種維護和查找成本非常高米绕,這成為該方法效率的一個瓶頸瑟捣。
  2.由于存在數(shù)據(jù)遷移,某些單詞及其對應(yīng)的倒排列表會從老索引中溢出栅干,這樣就破壞了單詞的連續(xù)性迈套,導(dǎo)致在進行索引合并的時候不能進行順序讀取,必需維護一個單詞到其倒排文件相應(yīng)位置的映射表碱鳞,這樣不僅降低了磁盤讀寫速度桑李,而且需要大量的內(nèi)存來存儲這種映射信息。

混合策略(Hybrid)

混合策略一般會將單詞根據(jù)其不同性質(zhì)進行分類窿给,不同類別的單詞贵白,對其索引采取不同的索引更新策略。常見做法:根據(jù)單詞的倒排索引列表長度進行區(qū)分崩泡,因為有些單詞經(jīng)常在不同的文檔中出現(xiàn)禁荒,所以其對應(yīng)的倒排列表很長,而有些單詞很少見角撞,對應(yīng)的倒排列表就較短呛伴。根據(jù)這一性質(zhì)將單詞劃分為長倒排列表單詞短倒排列表單詞寥掐。長倒排列表單詞采取原地更新策略,而短倒排列表單詞采用再合并策略磷蜀。
  因為原地更新策略能夠節(jié)省磁盤讀寫次數(shù)召耘,而長倒排列表單詞的讀寫開銷明顯要比短倒排列表單詞大很多,所以如果采用原地更新策略褐隆,效果體現(xiàn)比較顯著污它。而大量的短倒排列表單詞讀寫開銷相對而言不算太大,利用再合并策略來處理庶弃,其順序讀寫優(yōu)勢也能被充分利用衫贬。

參考文獻:
[1] 張俊林. 這就是搜索引擎[M]. 電子工業(yè)出版社, 2012.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市歇攻,隨后出現(xiàn)的幾起案子固惯,更是在濱河造成了極大的恐慌,老刑警劉巖缴守,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件葬毫,死亡現(xiàn)場離奇詭異,居然都是意外死亡屡穗,警方通過查閱死者的電腦和手機贴捡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來村砂,“玉大人烂斋,你說我怎么就攤上這事〈》希” “怎么了汛骂?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長评腺。 經(jīng)常有香客問我帘瞭,道長,這世上最難降的妖魔是什么歇僧? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任图张,我火速辦了婚禮,結(jié)果婚禮上诈悍,老公的妹妹穿的比我還像新娘。我一直安慰自己兽埃,他們只是感情好侥钳,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著柄错,像睡著了一般舷夺。 火紅的嫁衣襯著肌膚如雪苦酱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天给猾,我揣著相機與錄音疫萤,去河邊找鬼。 笑死敢伸,一個胖子當著我的面吹牛扯饶,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播池颈,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼尾序,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了躯砰?” 一聲冷哼從身側(cè)響起每币,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎琢歇,沒想到半個月后兰怠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡李茫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年痕慢,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涌矢。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡掖举,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出娜庇,到底是詐尸還是另有隱情塔次,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布名秀,位于F島的核電站励负,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏匕得。R本人自食惡果不足惜继榆,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望汁掠。 院中可真熱鬧略吨,春花似錦、人聲如沸考阱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽乞榨。三九已至秽之,卻和暖如春当娱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背考榨。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工跨细, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人河质。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓冀惭,卻偏偏與公主長得像,于是被迫代替她去往敵國和親愤诱。 傳聞我的和親對象是個殘疾皇子云头,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容