專利名稱:一種索引建立方法及裝置的制作方法
技術領域:
本發明涉及信息檢索領域,尤其涉及一種索引建立方法及裝置。
背景技術:
檢索引擎的核心技術是索引,索引是包括若干文檔的序列。基于信息內容的快速 更新,索引中包括的文檔序列也需要不斷更新。目前,索引更新的問題主要在于為了更新少 數文檔,需要重寫全部索引,而實際上索引中絕大多數文檔與此次更新無關。因此,為了減 少不必要的更新,在建立索引時普遍采用分段機制,即預先設置索引中包括的文檔個數,將 索引分成多個子索引,每個子索引稱為索引段(segment)。分段機制解決了索引的增量更新 問題,即在索引更新時只修改后面的索引段,而不是整個索引。采用分段機制建立索引即將文檔對象一個個加入到索引中的過程,一般在將新的 文檔對象添加到索引中時,先將其緩存在內存中,而不是立刻寫入磁盤。這個緩存操作是為 了減少對磁盤的讀取操作以提高索引性能,通常,索引程序會提供三個參數用于控制緩存 大小以及寫入磁盤的頻率FirstLevelMergeFactor 在將文檔對象寫入磁盤之前,該參數用于控制存儲在內 存中的文檔對象數量,即在將內存中的所有文檔對象作為一個子索引段寫入磁盤之前,內 存中默認存儲FirstLevelMergeFactor個文檔對象;MergeFactor 該參數用于控制磁盤中子索引段的合并頻率,即當寫入磁盤中的子 索引段的數量達到MergeFactor個時,這些子索引段將被合并為一個索引段;MaxMergeDocs 該參數用于控制合并各個子索引段后得到的索引段中包含的總的 文檔對象個數,即在合并多個子索引段時,索引程序確保各個子索引段所包含的文檔對象 的總數不超過MaxMergeDocs個。根據以上分段機制建立的索引,檢索時會遍歷索引中包括的所有索引段,以索引 段為基本單位獨立檢索每個索引段內的文檔,最后把各個索引段的檢索結果合并。因此,如 果索引中索引段的數量過多,在檢索時要打開、讀取、處理的索引文件會更多,因此,會影響 檢索效率。而如果索引中索引段的數量過少,意味著索引段的容量大,則在進行索引更新 時,需要執行多次寫入磁盤的操作,勢必影響索引更新的效率。綜上所述,索引中索引段的數量直接影響著檢索和索引更新的效率,若索引中索 引段的數量過多,則影響檢索的效率;若索引中索引段的數量過少,則影響索引更新的效率。
發明內容
有鑒于此,本發明實施例提供一種索引建立方法及裝置,采用該技術方案,減少了 寫入磁盤等用于存儲最終索引段的區域的次數,保證了索引更新效率,并且提高了檢索效率。本發明實施例通過如下技術方案實現
根據本發明實施例的一個方面,提供了一種索引建立方法。根據本發明實施例提供的索引建立方法,包括監測第一存儲區域中存儲的包含單文檔的索引段的數量;當所述包含單文檔的索引段的數量達到第一閾值時,將所述包含單文檔的索引段 合并為包含所述第一閾值文檔的索引段;監測所述第一存儲區域中存儲的包含所述第一閾值文檔的索引段的數量;當所述包含所述第一閾值文檔的索引段的數量達到第二閾值時,將所述包含所述 第一閾值文檔的索引段合并為包含所述第一閾值乘以所述第二閾值文檔的索引段,并當所 述第一存儲區域中所有索引段包含的文檔總數達到設定的最大合并閾值時,將所述第一存 儲區域中的所有索引段合并為包含所述最大合并閾值文檔的索引段寫入第二存儲區域。根據本發明實施例的另一個方面,還提供了一種索引建立裝置。根據本發明實施例提供的索引建立裝置,包括第一監測單元,用于監測第一存儲區域中存儲的包含單文檔的索引段的數量;第一合并單元,用于當所述第一監測單元監測的包含單文檔的索引段的數量達到 第一閾值時,將所述包含單文檔的索引段合并為包含所述第一閾值文檔的索引段;第二監測單元,用于監測第一存儲區域中存儲的包含所述第一閾值文檔的索引段 的數量;第二合并單元,用于當所述第二監測單元監測的包含所述第一閾值文檔的索引段 的數量達到第二閾值時,將所述包含所述第一閾值文檔的索引段合并為包含所述第一閾值 乘以所述第二閾值文檔的索引段,并當所述第一存儲區域中所有索引段包含的文檔總數達 到設定的最大合并閾值時,將所述第一存儲區域中的所有索引段合并為包含所述最大合并 閾值文檔的索引段寫入第二存儲區域。通過本發明實施例提供的上述至少一個技術方案,在建立索引時,首先監測第一 存儲區域中保存的包含單文檔的索引段的數量,當包含單文檔的索引段的數量達到第一閾 值時,將包含單文檔的索引段合并為包含第一閾值文檔的索引段;然后進一步監測第一存 儲區域中包含第一閾值文檔的索引段的數量,當包含第一閾值文檔的索引段的數量達到第 二閾值時,將包含第一閾值文檔的索引段合并為包含第一閾值乘以所述第二閾值文檔的索 引段,并當第一存儲區域中所有索引段包含的文檔總數達到設定的最大合并閾值時,將第 一存儲區域中的所有索引段合并為包含最大合并閾值文檔的索引段寫入第二存儲區域,根 據該技術方案,在第一存儲區域中增加了索引段的合并過程,減少了寫入第二存儲區域的 頻率,并且增加了最終索引段中包含的文檔數量,在索引文檔數目一定時減少了索引段的 個數,從而在不影響檢索性能的前提下,提高了檢索效率。本發明的其它特征和優點將在隨后的說明書中闡述,并且,部分地從說明書中變 得顯而易見,或者通過實施本發明而了解。本發明的目的和其他優點可通過在所寫的說明 書、權利要求書、以及附圖中所特別指出的結構來實現和獲得。
附圖用來提供對本發明的進一步理解,并且構成說明書的一部分,與本發明實施 例一起用于解釋本發明,并不構成對本發明的限制。在附圖中
圖1為本發明實施例圖2為本發明實施例圖3為本發明實施例圖4為本發明實施例圖5為本發明實施例圖6為本發明實施例圖7為本發明實施例圖8為本發明實施例圖9為本發明實施例
提供的索引建立方法流程圖; 提供的管理隊列示意提供的對索引文檔的合并及寫入磁盤的控制流程圖 提供的對索引文檔的合并示意圖; 提供的對磁盤中的索引段優化合并的流程圖; 提供的索引的建立裝置示意圖一 提供的索引的建立裝置示意圖二 提供的索引的建立裝置示意圖三 提供的索引的建立裝置示意圖四,
具體實施例方式為了給出保證索引更新效率不下降的前提下提高檢索效率的實現方案,本發明實 施例提供了一種索引建立方法及裝置,以下結合說明書附圖對本發明的優選實施例進行說 明,應當理解,此處所描述的優選實施例僅用于說明和解釋本發明,并不用于限定本發明。 并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。本發明實施例中,通過在第一存儲區域中增加一級合并,減少寫入第二存儲區域 的頻率,并且增加了最終索引段中的文檔數量,減少了索引段的個數,從而在不影響檢索性 能的前提下,提高了檢索效率。本發明實施例中,第一存儲區域為待索引文檔初始寫入的臨時存儲區域,例如,內 存、閃存等;第二存儲區域為文檔合并為索引段后的存儲區域,例如,磁盤、硬盤等存儲空 間。以下描述中,以第一存儲區域為內存,第二存儲區域為磁盤為例進行描述本發明一個實施例中,在已有參數FirstLevelMergeFactor、MergeFactor以及 MaxMergeDocs的基礎上,增加了如下參數最大合并閾值-MemMaxMergeDocs,該參數表示內存中可容納的最大文檔數量,該 參數為根據內存的實際使用情況設定,較佳情況下,該參數設置為
FirstLevelMergeFactor 乘以 MergeFactor 的 N 次方;目標合并文檔數-TargetMergeDocs,該參數表示當前合并的索引段中包含的文檔 數量,該參數為變量,一般情況下,其初始值為FirstLevelMergeFactor,該參數的更新公式 為TargetMergeDocs = TargetMergeDocs^MergeFactor ;其中等號前面的“TargetMergeDocs”為更新后的值,等號后面的 “TargetMergeDocs”為更新前的值,MergeFactor為磁盤中子索引段的合并頻率。根據本發明實施例,首先提供了一種索引建立方法,如圖1所示,該方法主要包括 如下步驟步驟101、索引一篇文檔,在內存中為該文檔創建一個索引段并保存。步驟102、監測內存中保存的包含單文檔的索引段的數量。步驟103、判斷內存中保存的包含單文檔的索引段的數量是否達到第一閾值,若 是,則執行步驟104,否則返回步驟101。
本發明優選實施例中,第一閾值的取值根據內存空間的大小確定,一般情況下,內 存空間越大,第一閾值可以設置的相對較大。步驟104、將包含單文檔的索引段合并為一個包含第一閾值個文檔的索引段。步驟105、監測內存中包含第一閾值個文檔的索引段的數量。步驟106、判斷內存中保存的包含第一閾值個文檔的索引段的數量達到第二閾值, 若是,則執行步驟107,否則返回步驟101。本發明優選實施例中,第二閾值的取值根據內存空間的大小確定,一般情況下,內 存空間越大,第二閾值可以設置的相對較大,并且,第二閾值一般小于第一閾值。步驟107、將包含第一閾值個文檔的索引段合并為一個包含第一閾值乘以第二閾 值個文檔的索引段,并當內存中所有索引段包含的文檔總數達到內存最大合并閾值時,將 內存中的所有索引段合并為包含最大合并閾值個文檔的索引段寫入磁盤。本發明又一個實施例中,當將內存中的滿足寫入磁盤的索引段寫入到磁盤后,進 一步進行如下操作判斷所有文檔是否索引完畢,在確定所有文檔索引完畢并且內存中存儲有未寫入 磁盤的索引段時,將未寫入磁盤的索引段合并為一個索引段并寫入磁盤。進行以上操作的目的在于避免由于索引完所有文檔后內存中保存的索引段中包 含的文檔數量不滿足寫入磁盤的要求,而無法寫入磁盤的問題,通過該操作,保證所有索引 的文檔都可以寫入到內存中。本發明又一個實施例中,將內存中的滿足寫入磁盤的索引段寫入到磁盤后,進一 步對磁盤中的索引段進行合并,具體合并過程如下監測磁盤中包含最大合并閾值個文檔的索引段的數量;當磁盤中包含最大合并閾值個文檔的索引段的數量達到第三閾值時,將包含最大 合并閾值個文檔的索引段合并為一個包含最大合并閾值乘以第三閾值個文檔的索引段。本發明優選實施例中,第三閾值與第二閾值取相同值。本發明一個實施例提供的方法中,還進一步將磁盤中設定個數的索引段合并為一 個索引段,合并得到的索引段中包含的文檔數不大于第四閾值。其中,合并的索引段中包含 的文檔數可以不相同。本發明優選實施例中,第四閾值為第一閾值、第二閾值、第三閾值的設定次方的乘 積。本發明又一個實施例中,為了進一步減少索引段的數量,在確定所有文檔索引完 畢并且寫入磁盤后,可以進一步根據預設的第五閾值對磁盤中保存的索引段進行優化合 并。具體優化的過程包括將磁盤中包含的文檔數小于第五閾值的索引段合并為一個索引 段,以及,將磁盤中包含的文檔數大于等于第五閾值、小于第四閾值的索引段合并為一個索 引段。以上方案在具體實施時,在內存中維護一個索引段(segment)的管理隊列,如圖2 所示,該管理隊列里的segment按照所含文檔(doc)的個數由大到小排列,即segment 1 中包含的 doc 數〉segment2 中包含的 doc 數〉......> segmentN 中
包含的doc數。通過圖2所示的管理隊列對索引過程進行監控,以控制文檔的合并與寫入磁盤。在啟動索引過程后,對索引文檔的合并以及寫入磁盤的控制過程,具體如圖3所示,包括如 下步驟步驟301、索引一篇文檔,在內存中為該文檔創建一個segment,并加入管理隊列尾部。該步驟中,管理隊列尾部的segment由于是由新加入的文檔形成的segment,因 此,管理隊列尾部的segment中包含的文檔數為1。步驟302、判斷未合并索引文檔的數量是否達到FirstLevelMergeFactor (第一閾 值),若是,則執行步驟303 步驟311,否則返回步驟301。該步驟中,當前未合并索引文檔的數據也即新加入管理隊列中的只包含一個文檔 的segment的數量。步驟303、將該FirstLevelMergei^ctor個的索引文檔合并為一個索引段。如圖4所示,假設FirstLevelMergeFactor = 500,在步驟301索引文檔之前,管理 隊列中未合并索引文檔(segment)的數量為499,當執行為步驟301,即新加入一個索引文 檔后,未合并索引文檔(segment)的數量為500,則合并后,將該500個只包含一個文檔的 segment合并為1個包含500個文檔的segment。步驟304、初始化目標合并文檔數TargetMergeDocs。該步驟中,將TargetMergeDocs初始化為合并為最小索引段時要求的文檔數,即 FirstLevelMergeFactor。應當理解,該初始化的步驟也可以在執行本流程之前執行,或在步驟301新索引 一篇文檔后執行。步驟305、從管理隊列尾部開始掃描,并判斷當前掃描的segment所含doc數是否 小于當前TargetMergeDocs,若是,則執行步驟306,否則結束本輪掃描并執行步驟307。該步驟中,本輪掃描結束的情況包括當前掃描的segment中doc個數大于等于當 前TargetMergeDocs,或掃描至管理隊列頭。步驟306、將當前segment加入待合并隊列。步驟307、判斷待合并隊列所有segment所含doc數量之和是否大于等于 TargetMergeDocs,若否,返回步驟305 ;若是,執行步驟308。步驟308、判斷當前TargetMergeDocs是否小于MemMaxMergeDocs (最大合并閾 值),若是,則執行步驟309,若否,執行步驟310。步驟309、將當前待合并隊列中的segment在內存中合并,繼續執行步驟311。步驟310、將當前待合并隊列中的segment合并,并寫入磁盤,繼續執行步驟311。步驟311、更新TargetMergeDocs,并判斷更新后的TargetMergeDocs是否小于等 于MaxMergeDocs (第四閾值),若是,則返回步驟305,否則執行步驟312。該步驟中,TargetMergeDocs的更新公式如下TargetMergeDocs = TargetMergeDocs*MergeFactor ;本實施例中,取第二閾值=第三閾值=MergeFactor0其中等號前面為更新后的TargetMergeDocs,作為返回步驟305后當前 TargetMergeDocs ο步驟312、判斷是否索引完畢,若否,則返回步驟301,若是,則執行步驟313。
步驟313、判斷內存中是否還有未寫入磁盤的文檔,若是,則執行步驟314,否則結
束ο步驟314、將內存中未寫入磁盤的文檔合并為一個索引段并寫入磁盤。根據本發明以上實施例,由于在內存中增加了一級內存合并,降低了寫入磁盤的 頻率,使得最終索引段中可容納的文檔數量提高,減少了索引段的數量,在檢索時,加速了 檢索的效率。本發明實施例中,內存中索引段可以采取普通的存儲方式,即為每一個索引段分 配固定的內存空間,當索引段的大小大于一個內存空間時,則再為該索引段分配整數個內 存空間,但該種方式容易造成內存空間的浪費,當一個索引段的大小不是內存空間大小的 整數倍時,則剩余的不足一個內存空間大小的部分也要被分配一個內存空間。為了避免內 存空間的浪費,本發明實施例中在內存中索引段可以采取現有的差量存儲技術進行存儲。本發明又一實施例中,還引入了優化合并因子——OptimizeMergeDocs,用于在合 并結束后對磁盤中的最終索引段進行優化合并,如圖5所示,優化合并過程如下步驟501、掃描每個segment中包含的文檔數量;步驟502、將小于OptimizeMergeDocs的索引段合并為一個索引段,將大于等于 OptimizeMergeDocs /hT MaxMergeDocs 白勺弓| 。根據上述優化過程,可以進一步減少最終索引段的數量,使得合并后的結果為若 干個包含MaxMer geDo c s個文檔的最大索引段,一個包含的文檔數量在MaxMer geDo c s與 OptimizeMergeDocs之間的索引段以及一個包含的文檔數量小于OptimizeMergeDocs的小 索引段,這樣在進行索引更新時只需更新最后一個小索引段,從而大大提升索引更新性能。為了更好地理解本發明實施例提供的技術方案,以下結合具體的實例對本發明實 施例進行詳細說明假設要索引1000萬篇文檔,一個doc的segment大小為120KB,具體參數定義如 下FirstLevelMergeFactor (第一閾值)=500;MergeFactor (第二閾值或第三閾值)=20 ;MemMaxMergeDocs(最大合并閾值,此處定義為第一閾值乘以第二閾值)= 10000 ;MaxMergeDocs (第四閾值)=4000000 ;OptimizeMergeDocs (第五閾值)=200000。根據以上參數定義,內存中最多有500個單文檔的segment,約占60MB。將這500 個segment合并,由于充分利用了每個內存空間和差量存儲技術,合并后的segment將遠遠 小于60MB,根據經驗值,合并后占用的內存空間一般不大于1MB。因此,內存最高占用空間 為:1MB*19+60MB = 79MB。根據以上參數定義以及本發明實施例提供的以上技術方案,索引完所有文檔經歷 如下過程將500個單文檔的segment合并為1個包含500文檔的segment ;將20個包含500文檔的segment合并為1個包含1萬文檔的segment并寫入磁 盤;
將20個包含1萬文檔的segment合并為1個包含20萬文檔的segment ;將20個包含20萬文檔的segment合并為1個包含400萬文檔的segment。在磁盤中進行優化后,最終磁盤上將生成2個包含400萬文檔的segment和1個 包含20萬文檔的segment,共3個。如果不進行優化,則在最壞的情況下,segment個數為 2個包含400萬文檔的segment和10個包含20萬文檔的segment,共12個。可見,根據本發明實施例可以使最終合并得到的索引段優化到做少,為了更好地 體現本發明達到的效果,以下對現有技術索引相同數目的文檔得到的索引段進行簡單分 析如果不采用本發明以上實施例提供的技術方案進行索引,為了提高索引段容量, 只能盡可能調高FirstLevelMergeFactor和kgmentsMergeFactor,根據經驗值,一種較優 的情況下,可以設置各參數如下FirstLevelMergeFactor = 1000, SegmentsMergeFactor = 40, MaxMergeDocs = 1600000。根據以上參數設置,內存最高約占120M,索引完所有文檔經歷如下過程將1000個包含單文檔的segment合并為1個包含1000文檔的segment,并寫入到
磁盤;將40個包含1000個文檔的segment合并為1個包含4萬文檔的segment ;將40個包含4萬文檔的segment合并為為1個包含160萬文檔的segment。在優化的情況下,最終磁盤上將生成6個包含160萬文檔的segment和10個包含 4萬文檔的segment,共16個。而如果不優化,在最壞的情況下,如總的文檔數略小于1600 萬時,將會有40個4萬的segment,索引段的數量更多。與上述實施例所述的索引的建立方法對應,本發明實施例還提供了一種索引的建 立裝置,如圖6所示,該裝置包括第一監測單元601、第一合并單元602、第二監測單元603以及第二合并單元604 ; 其中第一監測單元601,用于監測第一存儲區域中存儲的包含單文檔的索引段的數 量;第一合并單元602,用于當第一監測單元601監測的包含單文檔的索引段的數量 達到第一閾值時,將包含單文檔的索引段合并為一個包含第一閾值個文檔的索引段;第二監測單元603,用于監測第一存儲區域中存儲的第一閾值個文檔的索引段的
數量;第二合并單元604,用于當第二監測單元603監測的包含第一閾值個文檔的索引 段的數量達到第二閾值時,將包含第一閾值個文檔的索引段合并為一個包含第一閾值乘以 第二閾值個文檔的索引段,并當第一存儲區域中所有索引段包含的文檔總數達到設定的最 大合并閾值時,將第一存儲區域中的所有索引段合并為包含所述最大合并閾值個文檔的索 引段寫入第二存儲區域。如圖7所示,本發明又一實施例中,圖6所示裝置還可以進一步包括第三合并單元605,用于在第二合并單元604將滿足寫入第二存儲區域的索引段 寫入到第二存儲區域,并且在確定所有文檔索引完畢并且第一存儲區域中存儲有未寫入第二存儲區域的索引段時,將第一存儲區域中未寫入第二存儲區域的索引段合并為一個索引 段并寫入第二存儲區域。如圖8所示,本發明又一實施例中,圖6所示裝置還可以進一步包括第三監測單元606,以及第四合并單元607 ;其中第三監測單元606,用于監測第二存儲區域中包含最大合并閾值個文檔的索引段 的數量;第四合并單元607,用于當第三監測單元606監測的包含最大合并閾值個文檔的 索引段的數量達到第三閾值時,將包含最大合并閾值個文檔的索引段合并為一個包含最大 合并閾值乘以第三閾值個文檔的索引段。進一步地,一個實施例中,上述第四合并單元607還用于將第二存儲區域中設定 個數的索引段合并為一個索引段,合并得到的索引段中包含的文檔數不大于第四閾值。如圖9所示,為了使完成索引后包含的索引段的數量更優化,圖8所示裝置還可以 進一步包括用于優化索引段的數量的優化合并單元608,該單元具體用于在確定所有文檔索引完畢并且寫入第二存儲區域后,根據預設的第五閾值對第二 存儲區域中保存的索引段進行優化合并。一個實施例中,優化合并單元608具體用于將第二存儲區域中包含的文檔數小于所述第五閾值的索引段合并為一個索引段, 以及,將第二存儲區域中包含的文檔數大于等于第五閾值、小于第四閾值的索引段合并為 一個索引段。應當理解,以上索引建立裝置所實現的功能與索引建立方法一一對應,對應該裝 置各個功能單元所實現的更為詳細的處理流程,在上述方法實施例中已做詳細描述,此處 不再詳細描述。通過本發明實施例提供的上述至少一個技術方案,在建立索引時,首先監測第一 存儲區域中保存的包含單文檔的索引段的數量,當包含單文檔的索引段的數量達到第一閾 值時,將包含單文檔的索引段合并為包含第一閾值文檔的索引段;然后進一步監測第一存 儲區域中包含第一閾值文檔的索引段的數量,當包含第一閾值文檔的索引段的數量達到第 二閾值時,將包含第一閾值文檔的索引段合并為包含第一閾值乘以所述第二閾值文檔的索 引段,并當第一存儲區域中所有索引段包含的文檔總數達到設定的最大合并閾值時,將第 一存儲區域中的所有索引段合并為包含最大合并閾值文檔的索引段寫入第二存儲區域,根 據該技術方案,在第一存儲區域中增加了索引段的合并過程,減少了寫入第二存儲區域的 頻率,并且增加了最終索引段中包含的文檔數量,在索引文檔數目一定時減少了索引段的 個數,從而在不影響檢索性能的前提下,提高了檢索效率。進一步地,由于現有技術中每索引一篇文檔都會將該文檔作為一個單獨的索引 段保存,在保存時為每一個索引段分配固定的內存空間,例如10K,如果索引段的大小超過 10K,例如11K,則為該索引段分配2個內存空間,即20K的內存空間,這樣,這個索引段占用 的內存空間就比其時間大小要大,而一般索引段的大小都很難保證是文檔大小的整數倍, 因此很多索引段占用的內存空間往往比自身大小大,從而造成很多內存空間的浪費。而根 據本發明以上實施例,由于在內存中增加了一級內存合并,從而減少了內存空間的浪費,例 如,2個IlK的索引段,在合并前要占用4個IOK的內存空間,浪費18K的內存空間,在不采用差量存儲技術時,合并后最多占用3個IOK的內存空間,若采用差量存儲技術存儲則占用 更少的內存空間,因此,根據本發明實施例可以在內存使用基本不變的情況下,增加緩存在 內存中的文檔數量,降低了向磁盤中寫入數據的頻率,保證了索引性能,并且由于得到的最 終索引段的容量大,索引段的數量少,減少了檢索時要打開、讀取、處理的索引段,從而提高 了檢索效率。 顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發明的精 神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及其等同技術的范圍 之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1.一種索引建立方法,其特征在于,包括監測第一存儲區域中存儲的包含單文檔的索引段的數量;當所述包含單文檔的索引段的數量達到第一閾值時,將所述包含單文檔的索引段合并 為包含所述第一閾值文檔的索引段;監測所述第一存儲區域中存儲的包含所述第一閾值文檔的索引段的數量;當所述包含所述第一閾值文檔的索引段的數量達到第二閾值時,將所述包含所述第一 閾值文檔的索引段合并為包含所述第一閾值乘以所述第二閾值文檔的索引段,并當所述第 一存儲區域中所有索引段包含的文檔總數達到設定的最大合并閾值時,將所述第一存儲區 域中的所有索引段合并為包含所述最大合并閾值文檔的索引段寫入第二存儲區域。
2.如權利要求1所述的方法,其特征在于,所述第一閾值以及所述第二閾值根據所述 第一存儲區域的存儲空間確定。
3.如權利要求1所述的方法,其特征在于,將所述索引段寫入第二存儲區域后,還包括在確定所有文檔索引完畢并且所述第一存儲區域中存儲有未寫入所述第二存儲區域 的索引段時,將所述未寫入第二存儲區域的索引段合并為一個索引段并寫入所述第二存儲 區域。
4.如權利要求1所述的方法,其特征在于,寫入第二存儲區域后,還包括監測所述第二存儲區域中存儲的包含所述最大合并閾值文檔的索引段的數量;當包含所述最大合并閾值文檔的索引段的數量達到第三閾值時,將包含所述最大合并 閾值文檔的索引段合并為包含所述最大合并閾值乘以第三閾值文檔的索引段。
5.如權利要求4所述的方法,其特征在于,所述第三閾值與所述第二閾值取相同值。
6.如權利要求4所述的方法,其特征在于,還包括將所述第二存儲區域中設定個數的索引段合并為一個索引段,合并得到的索引段中包 含的文檔數不大于第四閾值。
7.如權利要求6所述的方法,其特征在于,所述第四閾值為所述第一閾值、所述第二閾 值、所述第三閾值的設定次方的乘積。
8.如權利要求6所述的方法,其特征在于,還包括在確定所有文檔索引完畢并且寫入第二存儲區域后,根據預設的第五閾值對所述第二 存儲區域中存儲的索引段進行優化合并。
9.如權利要求8所述的方法,其特征在于,根據預設的第五閾值對所述第二存儲區域 中存儲的索引段進行優化合并,包括將所述第二存儲區域中存儲的包含的文檔數小于所述第五閾值的索引段合并為一個 索引段,以及,將所述第二存儲區域中存儲的包含的文檔數大于等于所述第五閾值、小于所 述第四閾值的索引段合并為一個索引段。
10.一種索引建立裝置,其特征在于,包括第一監測單元,用于監測第一存儲區域中存儲的包含單文檔的索引段的數量;第一合并單元,用于當所述第一監測單元監測的包含單文檔的索引段的數量達到第一 閾值時,將所述包含單文檔的索引段合并為包含所述第一閾值文檔的索引段;第二監測單元,用于監測第一存儲區域中存儲的包含所述第一閾值文檔的索引段的數量;第二合并單元,用于當所述第二監測單元監測的包含所述第一閾值文檔的索引段的數 量達到第二閾值時,將所述包含所述第一閾值文檔的索引段合并為包含所述第一閾值乘以 所述第二閾值文檔的索引段,并當所述第一存儲區域中所有索引段包含的文檔總數達到設 定的最大合并閾值時,將所述第一存儲區域中的所有索引段合并為包含所述最大合并閾值 文檔的索引段寫入第二存儲區域。
11.如權利要求10所述的裝置,其特征在于,還包括第三合并單元,用于在所述第二合并單元將所述索引段寫入第二存儲區域,并且在確 定所有文檔索引完畢并且所述第一存儲區域中存儲有未寫入所述第二存儲區域的索引段 時,將所述未寫入第二存儲區域的索引段合并為一個索引段并寫入所述第二存儲區域。
12.如權利要求10所述的裝置,其特征在于,寫入第二存儲區域后,還包括第三監測單元,用于監測所述第二存儲區域中存儲的包含所述最大合并閾值文檔的索 引段的數量;第四合并單元,用于當所述第三監測單元監測的包含所述最大合并閾值文檔的索引段 的數量達到第三閾值時,將包含所述最大合并閾值文檔的索引段合并為包含所述最大合并 閾值乘以第三閾值文檔的索引段。
13.如權利要求12所述的裝置,其特征在于,所述第四合并單元還用于將所述第二存儲區域中存儲的設定個數的索引段合并為一個索引段,合并得到的索引 段中包含的文檔數不大于第四閾值。
14.如權利要求13所述的裝置,其特征在于,還包括優化合并單元,用于在確定所有文檔索引完畢并且寫入所述第二存儲區域后,根據預 設的第五閾值對所述第二存儲區域中存儲的索引段進行優化合并。
15.如權利要求14所述的裝置,其特征在于,所述優化合并單元具體用于將所述第二存儲區域中存儲的包含的文檔數小于所述第五閾值的索引段合并為一個 索引段,以及,將所述第二存儲區域中存儲的包含的文檔數大于等于所述第五閾值、小于所 述第四閾值的索引段合并為一個索引段。
全文摘要
本發明公開了一種索引建立方法及裝置,主要技術方案包括監測第一存儲區域中存儲的包含單文檔的索引段的數量;當包含單文檔的索引段的數量達到第一閾值時,將包含單文檔的索引段合并為包含所述第一閾值文檔的索引段;監測第一存儲區域中包含第一閾值文檔的索引段的數量;當包含第一閾值個文檔的索引段的數量達到第二閾值時,將包含第一閾值文檔的索引段合并為包含第一閾值乘以第二閾值文檔的索引段,并當第一存儲區域中所有索引段包含的文檔總數達到設定的最大合并閾值時,將第一存儲區域中的所有索引段合并為包含最大合并閾值文檔的索引段寫入第二存儲區域,采用該技術方案,減少了寫入磁盤的次數,保證了索引更新效率,并且提高了檢索效率。
文檔編號G06F17/30GK102087646SQ20091024177
公開日2011年6月8日 申請日期2009年12月7日 優先權日2009年12月7日
發明者徐劍波, 李曉蕊, 童征宇, 趙東巖 申請人:北京大學, 北京方正阿帕比技術有限公司, 北大方正集團有限公司