針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng),通過創(chuàng)建索引結構,分組統(tǒng)計時只需要先根據(jù)索引數(shù)據(jù)塊得到字段值ID數(shù)據(jù)塊的存儲地址,然后根據(jù)該存儲地址得到字段值ID數(shù)據(jù)塊,再根據(jù)每個對象ID對應的字段值ID的數(shù)量計算得到預定對象ID的字段值ID的存儲位置,進而根據(jù)該存儲位置直接讀取對應的數(shù)據(jù),無需遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。用于分組統(tǒng)計的字段值ID都存儲在一個或者相鄰的幾個字段值ID數(shù)據(jù)塊中,分組統(tǒng)計時只需在預定的字段值ID數(shù)據(jù)塊中讀取即可,可大大節(jié)省尋址時間。通過這種分組數(shù)據(jù)的索引結構,以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量小,讀取效率高,優(yōu)化了檢索結果的分組統(tǒng)計過程。
【專利說明】針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng)
【技術領域】
[0001] 本發(fā)明涉及一種檢索結果統(tǒng)計方法。具體地說是一種針對檢索結果進行分組統(tǒng)計 的索引結構創(chuàng)建方法和系統(tǒng)。
【背景技術】
[0002] 在全文檢索系統(tǒng)中,根據(jù)用戶輸入的檢索詞進行分詞處理后,在倒排索引中進行 檢索,得到一組命中文檔結果,并按照指定的規(guī)則排序,一般默認是按照檢索詞與命中文檔 的相關度排序。
[0003] 在得到檢索結果的同時,很多情況下需要根據(jù)命中文檔的某個字段的值進行分組 統(tǒng)計,包括根據(jù)唯一值進行分組統(tǒng)計,以及根據(jù)值范圍進行分組統(tǒng)計,進而使得在對檢索結 果的分布得到直觀的認識的同時,也方便根據(jù)分組值進一步縮小檢索結果范圍,這時候需 要同時對多個字段分別進行分組統(tǒng)計。
[0004] 為了滿足這類檢索需求,現(xiàn)有技術中一般對用于分組統(tǒng)計的字段的值進行預先處 理,創(chuàng)建以文檔為key,文檔中該字段的值為value的映射關系緩存數(shù)據(jù),一定程度上提高 分組統(tǒng)計過程的性能。但是在實際應用中,經(jīng)常會出現(xiàn)一個文檔用于分組統(tǒng)計的字段的值 不止一項的情況,甚至有時候一個文檔對應的字段值可能有上千項。在分組統(tǒng)計時需要針 對遍歷所述映射管理表進行統(tǒng)計,這樣遍歷統(tǒng)計的工作量相對較大,直接導致分組統(tǒng)計的 速度慢、效率低下。
【發(fā)明內(nèi)容】
[0005] 為此,本發(fā)明所要解決的技術問題在于現(xiàn)有分組統(tǒng)計方法對一個文檔對應多個字 段值統(tǒng)計效率低下的技術問題,從而提出一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建 方法和系統(tǒng)。
[0006] 為解決上述技術問題,本發(fā)明提供的技術方案如下:
[0007] -種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法,包括如下步驟:
[0008] 為每個檢索對象分配一個唯一的對象ID ;
[0009] 為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一個唯一的字段值ID;
[0010] 創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一對多的映射關系;
[0011] 將N個檢索對象對應的字段值ID根據(jù)所述映射關系順序生成一個字段值ID數(shù)據(jù) 塊并存儲;其中,N為大于1的整數(shù),且每個所述字段值ID以定長方式存儲;
[0012] 為每個所述字段值ID數(shù)據(jù)塊建立索引數(shù)據(jù)塊并存儲,所述索引數(shù)據(jù)塊用于記錄 每個所述字段值ID數(shù)據(jù)塊存儲的位置,以及每個對象ID對應的字段值ID的數(shù)量。
[0013] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法中,為每個所述字段 值ID數(shù)據(jù)塊建立索引數(shù)據(jù)塊進一步包括如下步驟:
[0014] 為每個所述字段值ID數(shù)據(jù)塊建立一個局部索引數(shù)據(jù)塊,所述局部索引數(shù)據(jù)塊包 括所述字段值ID數(shù)據(jù)塊在緩存中的位置,以及每個對象ID對應的字段ID的數(shù)量;
[0015] 建立全局索引數(shù)據(jù)塊,所述全局索引數(shù)據(jù)塊用于記錄每個所述局部索引數(shù)據(jù)塊的 起始位置。
[0016] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法中,還包括將所述索 引數(shù)據(jù)塊中每個對象ID對應的字段值ID的數(shù)量壓縮后再存儲的步驟。
[0017] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法中,通過將所述對象 ID從零開始順序編號為每個檢索對象分配一個唯一的對象ID。
[0018] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法中,存儲的每個對象 ID對應的字段值ID的數(shù)量為每個對象ID對應的字段值ID的實際數(shù)量減一后得到。
[0019] 同時,提供一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng),包括索引結構 創(chuàng)建模塊,其中,所述索引結構創(chuàng)建模塊進一步包括:
[0020] 對象ID分配模塊,用于為每個檢索對象分配一個唯一的對象ID ;
[0021] 字段值ID分配模塊,用于為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一 個唯一的字段值ID;
[0022] 映射關系創(chuàng)建模塊,用于創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一 對多的映射關系;
[0023] 字段值ID數(shù)據(jù)塊生成模塊,用于將N個檢索對象的多個分組值對應的字段值ID 根據(jù)所述映射關系順序生成一個字段值ID數(shù)據(jù)塊并存儲;其中,N為大于1的整數(shù),且每個 所述字段值ID以定長方式存儲;
[0024] 索引數(shù)據(jù)塊創(chuàng)建模塊,用于為每個所述字段值ID數(shù)據(jù)塊創(chuàng)建索引并存儲,所述索 引用于記錄每個所述字段值ID數(shù)據(jù)塊存儲的位置,以及每個對象ID對應的字段值ID的數(shù) 量。
[0025] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)中,所述索引數(shù)據(jù)塊 創(chuàng)建模塊進一步包括:
[0026] 局部索引數(shù)據(jù)塊創(chuàng)建子模塊,用于為每個所述字段值ID數(shù)據(jù)塊建立一個局部索 引數(shù)據(jù)塊并存儲,所述局部索引數(shù)據(jù)塊包括所述字段值ID數(shù)據(jù)塊在緩存中的位置,以及每 個對象ID對應的字段值ID的數(shù)量;
[0027] 全局索引數(shù)據(jù)塊創(chuàng)建子模塊,用于建立全局索引數(shù)據(jù)塊并存儲,所述全局索引數(shù) 據(jù)塊用于記錄每個所述局部索引數(shù)據(jù)塊的起始位置。
[0028] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)中,還包括壓縮子模 塊,用于將所述索引結構中每個對象ID對應的字段值ID的數(shù)量壓縮后再存儲。
[0029] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)中,所述對象ID分 配模塊將所述對象ID從零開始順序編號。
[0030] 所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)中,存儲的每個對象 ID對應的字段值ID的數(shù)量為每個對象ID對應的字段值ID的實際數(shù)量減一后得到。
[0031] 本發(fā)明的上述技術方案相比現(xiàn)有技術具有以下優(yōu)點:
[0032] (1)本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng),通過創(chuàng)建 索引結構,分組統(tǒng)計時只需要先根據(jù)索引數(shù)據(jù)塊得到字段值ID數(shù)據(jù)塊的存儲地址,然后根 據(jù)該存儲地址得到字段值ID數(shù)據(jù)塊,最后再根據(jù)每個對象ID對應的字段值ID的數(shù)量計算 得到預定對象ID的字段值ID的存儲位置,進而根據(jù)該存儲位置直接讀取對應的數(shù)據(jù),無需 遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。而且,用于分組統(tǒng)計的字段值ID都存儲在一個或者 相鄰的幾個字段值ID數(shù)據(jù)塊中,分組統(tǒng)計的時候只需要在預定的字段值ID數(shù)據(jù)塊中讀取 即可,無需遍歷讀取,可大大節(jié)省尋址時間,提高統(tǒng)計效率。通過這種分組數(shù)據(jù)的索引結構, 以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量小,讀取效率高, 優(yōu)化了檢索結果的分組統(tǒng)計過程。
[0033] (2)本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng)中,索引數(shù) 據(jù)塊中的每個對象ID對應字段值ID的數(shù)量在壓縮后存儲,分組統(tǒng)計時解壓后在進行統(tǒng)計, 能進一步縮小索引數(shù)據(jù)塊占用的存儲空間。
[0034] (3)本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng)中,所述對 象ID從零開始順序編號,由于整數(shù)占用存儲空間小,最終使得對象ID占用的存儲空間更 小。
[0035] (4)本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng)中,存儲的 字段值ID的數(shù)量為字段值ID的實際數(shù)量減一后得到,使得所述字段值ID的數(shù)量的值更 小,進而更一步地減少的存儲空間。
【專利附圖】
【附圖說明】
[0036] 為了使本發(fā)明的內(nèi)容更容易被清楚的理解,下面根據(jù)本發(fā)明的具體實施例并結合 附圖,對本發(fā)明作進一步詳細的說明,其中
[0037] 圖1是本發(fā)明一個實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方 法的方法流程圖;
[0038] 圖2是本發(fā)明一個實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系 統(tǒng)的結構框圖;
[0039] 圖3為本發(fā)明一個實施例的一種對檢索結果進行分組統(tǒng)計的加速系統(tǒng)中索引結 構的示意圖。
【具體實施方式】
[0040] 實施例1
[0041] 參見圖1所示,為本發(fā)明實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng) 建方法,包括如下步驟:
[0042] 為每個檢索對象分配一個唯一的對象ID。
[0043] 為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一個唯一的字段值ID。本發(fā)明 中分配對象ID和分配字段值ID的步驟無先后之分,可以同時進行,也可以先分配對象ID 再分配字段值ID,或者先分配字段值ID再分配對象ID。
[0044] 創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一對多的映射關系。所有對 象ID與一個字段對應的字段值ID的映射關系存在一張映射關系表。
[0045] 將N個檢索對象對應的字段值ID根據(jù)所述映射關系順序生成一個字段值ID數(shù)據(jù) 塊并存儲;其中,N為大于1的整數(shù),每個所述字段值ID以定長方式存儲。不同對象ID的 一個字段對應的字段值ID順序存儲。優(yōu)選地,N為多個,比如128以上,這樣,一個數(shù)據(jù)塊 可以同時存儲多個文檔對應的字段值ID,方便統(tǒng)計。
[0046] 為每個所述字段值ID數(shù)據(jù)塊建立索引,記錄每個所述字段值ID數(shù)據(jù)塊存儲的位 置,以及每個對象ID對應的字段值ID的數(shù)量。
[0047] 實際中,根據(jù)所述索引結構進行分組統(tǒng)計的具體步驟如下:
[0048] 根據(jù)對象ID和N的關系定位到所述索引的對應項,得到對應的字段值ID數(shù)據(jù)塊 的地址。
[0049] 根據(jù)字段值ID數(shù)據(jù)塊的地址獲取所述字段值ID數(shù)據(jù)塊內(nèi)容,再根據(jù)每個對象ID 對應的字段值ID的數(shù)量計算預定對象ID的字段值的存儲位置,進而讀取所述對象ID的字 段值ID的數(shù)據(jù)。
[0050] 作為具體實施例,本實施例的所述索引結構可以保存在內(nèi)存中,也可以保存在硬 盤上。
[0051] 分組統(tǒng)計時只需要先根據(jù)索引數(shù)據(jù)塊得到字段值ID數(shù)據(jù)塊的存儲地址,然后根 據(jù)該存儲地址得到字段值ID數(shù)據(jù)塊,最后再根據(jù)每個對象ID對應的字段值ID的數(shù)量計算 得到預定對象ID的字段值ID的存儲位置,進而根據(jù)該存儲位置直接讀取對應的數(shù)據(jù),無需 遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。而且,用于分組統(tǒng)計的字段值ID都存儲在一個或者 相鄰的幾個字段值ID數(shù)據(jù)塊中,分組統(tǒng)計的時候只需要在預定的字段值ID數(shù)據(jù)塊中讀取 即可,無需遍歷讀取,可大大節(jié)省尋址時間,提高統(tǒng)計效率。通過這種分組數(shù)據(jù)的索引結構, 以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量小,讀取效率高, 優(yōu)化了檢索結果的分組統(tǒng)計過程。
[0052] 實施例2
[0053] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法, 在上述實施例的基礎上,為每個所述字段值ID數(shù)據(jù)塊建立索引的步驟進一步包括如下建 立兩級索引的步驟:為每個所述字段值ID數(shù)據(jù)塊建立一個局部索引數(shù)據(jù)塊,所述局部索引 數(shù)據(jù)塊包括所述字段值ID數(shù)據(jù)塊在緩存中的位置,以及每個對象ID對應的字段值ID的數(shù) 量。
[0054] 建立全局索引數(shù)據(jù)塊,所述全局索引數(shù)據(jù)塊用于記錄每個所述局部索引數(shù)據(jù)塊的 起始位置。作為具體實施例,所述索引結構可以保存在內(nèi)存中,也可以保存在硬盤上。
[0055] 實際中,根據(jù)本實施例的所述索引結構進行分組統(tǒng)計的具體步驟如下:
[0056] 根據(jù)對象ID和N的關系定位到所述全局索引數(shù)據(jù)塊的對應項,得到局部索引數(shù)據(jù) 塊。
[0057] 從所述局部索引數(shù)據(jù)塊中得到字段值ID數(shù)據(jù)塊的地址,以及每個對象ID對應的 字段值ID的數(shù)量。
[0058] 根據(jù)字段值ID數(shù)據(jù)塊的地址以及每個對象ID對應的字段值ID的數(shù)量再結合存 儲每個所述字段值ID的長度,得到預定對象ID對應的字段值ID在字段值ID數(shù)據(jù)塊中的 存儲地址。
[0059] 根據(jù)字段值ID在字段值ID數(shù)據(jù)塊中的存儲地址從所述字段值ID數(shù)據(jù)塊中讀取 對應值作為字段值ID的數(shù)據(jù)。
[0060] 采用本實施例的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法創(chuàng)建后的所述 索引結構如圖3所示,通過創(chuàng)建兩級索引的索引數(shù)據(jù)塊,分組統(tǒng)計時只需要先根據(jù)全局索 引數(shù)據(jù)塊定位到局部索引數(shù)據(jù)塊,然后再在局部索引數(shù)據(jù)塊里定位出字段值ID數(shù)據(jù)塊,最 后得到作為字段值ID的數(shù)據(jù),無需遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。通過這種分組 數(shù)據(jù)的索引結構,以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量 小,讀取效率高,進一步優(yōu)化了檢索結果的分組統(tǒng)計過程。
[0061] 實施例3
[0062] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法, 在上述實施例1或實施例2的基礎上,還包括將所述索引結構中的索引數(shù)據(jù)塊中的每個對 象ID對應的字段值ID的數(shù)量壓縮后再存儲的步驟。相應地,在分組統(tǒng)計時需要對壓縮的 每個對象ID對應的字段值ID的數(shù)量進行解壓縮的步驟。通過將每個對象ID對應的字段 值ID的數(shù)量壓縮后存儲,能進一步縮小索引數(shù)據(jù)塊占用的存儲空間,只是在統(tǒng)計時進行解 壓縮占用一定的內(nèi)存;統(tǒng)計的數(shù)據(jù)量越大,本發(fā)明采用的壓縮后再存儲占用的空間小的優(yōu) 勢越突出,特別適合于大數(shù)據(jù)量、小存儲空間且具備一定的內(nèi)存空間的分組統(tǒng)計的加速。當 然,如果考慮占用較小的內(nèi)存空間且存儲空間充裕的系統(tǒng),也可不對每個對象ID對應的字 段值ID的數(shù)量進行壓縮,這樣能避免統(tǒng)計時解壓縮占用內(nèi)存。
[0063] 實施例4
[0064] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法, 在上述實施例1或實施例2或實施例3的基礎上,通過將所述對象ID從零開始順序編號為 每個檢索對象分配一個唯一的對象ID。由于整數(shù)占用存儲空間小,最終使得對象ID占用的 存儲空間更小,充分利用了整數(shù)存儲空間小的優(yōu)勢。而且,順序編號便于后續(xù)根據(jù)文檔編號 順序快速尋址。當然,作為本發(fā)明其他實施例中的文檔編號,也可以不順序編號,比如只使 用偶數(shù)編號或者奇數(shù)順序編號,或者選用從預訂的非零的其他整數(shù)順序編號,只要保證各 個編號的唯一性,也均能實現(xiàn)本發(fā)明的目的,只是所需存儲空間較大,定位文檔相對復雜。
[0065] 實施例5
[0066] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法, 在上述任意一個實施例的基礎上,存儲的字段值ID的數(shù)量為字段值ID的實際數(shù)量減一后 得到。
[0067] 考慮到所述字段值ID的數(shù)量至少為1,所以可對所有所述字段值ID的數(shù)量進行減 1操作,使得存儲的字段值ID的數(shù)量的值更小,進而更一步地減少存儲空間。在統(tǒng)計時,需 要在讀取的字段值ID數(shù)量的基礎上加1后再進行操作。
[0068] 當然,如果不考慮存儲空間,也可以直接將字段值ID的數(shù)量直接存儲即可。
[0069] 實施例6
[0070] 參見圖2所示,為本發(fā)明一個實施例的一種針對檢索結果進行分組統(tǒng)計的索引結 構創(chuàng)建系統(tǒng),包括:
[0071] 對象ID分配模塊,用于為每個檢索對象分配一個唯一的對象ID。
[0072] 字段值ID分配模塊,用于為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一 個唯一的字段值ID。
[0073] 映射關系創(chuàng)建模塊,用于創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一 對多的映射關系;
[0074] 字段值ID數(shù)據(jù)塊生成模塊,用于將N個檢索對象對應的字段值ID根據(jù)所述映射 關系順序生成一個字段值ID數(shù)據(jù)塊并存儲;其中,N為大于1的整數(shù),且每個所述字段值ID 以定長方式存儲。
[0075] 索引數(shù)據(jù)塊建立子模塊,用于為每個所述字段值ID數(shù)據(jù)塊建立索引數(shù)據(jù)塊并存 儲,所述索引數(shù)據(jù)塊用于記錄每個所述字段值ID數(shù)據(jù)塊存儲的位置,以及每個對象ID對應 的字段值ID的數(shù)量。
[0076] 分組統(tǒng)計時只需要先根據(jù)索引數(shù)據(jù)塊得到字段值ID數(shù)據(jù)塊的存儲地址,然后根 據(jù)該存儲地址得到字段值ID數(shù)據(jù)塊,最后再根據(jù)每個對象ID對應的字段值ID的數(shù)量計算 得到預定對象ID的字段值ID的存儲位置,進而根據(jù)該存儲位置直接讀取對應的數(shù)據(jù),無需 遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。而且,用于分組統(tǒng)計的字段值ID都存儲在一個或者 相鄰的幾個字段值ID數(shù)據(jù)塊中,分組統(tǒng)計的時候只需要在預定的字段值ID數(shù)據(jù)塊中讀取 即可,無需遍歷讀取,可大大節(jié)省尋址時間,提高統(tǒng)計效率。通過這種分組數(shù)據(jù)的索引結構, 以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量小,讀取效率高, 優(yōu)化了檢索結果的分組統(tǒng)計過程。
[0077] 實施例7
[0078] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng), 在上述實施例6的基礎上,所述索引數(shù)據(jù)塊創(chuàng)建模塊進一步包括:
[0079] 局部索引數(shù)據(jù)塊創(chuàng)建子模塊,用于為每個所述字段值ID數(shù)據(jù)塊建立一個局部索 引數(shù)據(jù)塊并存儲,所述局部索引數(shù)據(jù)塊包括所述字段值ID數(shù)據(jù)塊在緩存中的位置,以及每 個對象ID對應的字段值ID的數(shù)量。
[0080] 全局索引數(shù)據(jù)塊創(chuàng)建子模塊,用于建立全局索引數(shù)據(jù)塊并存儲,所述全局索引數(shù) 據(jù)塊用于記錄每個所述局部索引數(shù)據(jù)塊的起始位置。作為具體實施例,所述索引結構可以 保存在內(nèi)存中,也可以保存在硬盤上。
[0081] 對應的分組統(tǒng)計模塊進一步包括:
[0082] 局部索引數(shù)據(jù)塊定位子模塊,用于根據(jù)對象ID和N的關系定位到所述全局索引數(shù) 據(jù)塊的對應項,得到局部索引數(shù)據(jù)塊。
[0083] 字段值ID地址和數(shù)量獲取模塊,用于從所述局部索引數(shù)據(jù)塊中得到字段值ID數(shù) 據(jù)塊的地址,以及每個對象ID對應的字段值ID的數(shù)量。
[0084] 第一地址獲取子模塊,用于根據(jù)字段值ID數(shù)據(jù)塊以及每個對象ID對應的字段值 ID的數(shù)量得到每個對象ID對應的字段值ID在字段值ID數(shù)據(jù)塊中的存儲地址。
[0085] 字段值ID的數(shù)據(jù)獲取子模塊,用于根據(jù)字段值ID數(shù)據(jù)塊中的對應地址以及字段 值ID數(shù)據(jù)塊的數(shù)量,從所述字段值ID數(shù)據(jù)塊中讀取對應值得到對象ID的字段值ID的數(shù) 據(jù)。
[0086] 通過創(chuàng)建兩級索引的索引數(shù)據(jù)塊,分組統(tǒng)計時只需要先根據(jù)全局索引數(shù)據(jù)塊定位 到局部索引數(shù)據(jù)塊,然后再在局部索引數(shù)據(jù)塊里定位出字段值ID數(shù)據(jù)塊,最后得到作為字 段值ID的數(shù)據(jù),無需遍歷整個索引數(shù)據(jù)即可完成分組統(tǒng)計。通過這種分組數(shù)據(jù)的索引結 構,以增加少量的索引數(shù)據(jù)為代價,支持了多分組值的情況,分組統(tǒng)計工作量小,讀取效率 高,優(yōu)化了檢索結果的分組統(tǒng)計過程。
[0087] 實施例8
[0088] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng), 在上述任意一個實施例的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)的基礎上,還包 括壓縮子模塊,用于將所述索引結構中的索引數(shù)據(jù)塊中每個對象ID對應的字段值ID的數(shù) 量壓縮后存儲。對應的所述局部索引數(shù)據(jù)塊定位子模塊進一步包括解壓子子模塊,所述解 壓子子模塊用于在分組統(tǒng)計時對壓縮的所述每個對象ID對應的字段值ID的數(shù)量進行解壓 縮。能進一步縮小索引數(shù)據(jù)塊占用的存儲空間,統(tǒng)計的數(shù)據(jù)量越大,本發(fā)明采用的壓縮后再 存儲占用的空間小的優(yōu)勢越突出,特別適合于大數(shù)據(jù)量的分組統(tǒng)計的加速。
[0089] 實施例9
[0090] 作為本發(fā)明其他實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng), 在上述任意一個實施例的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)的基礎上,所述 對象ID分配模塊將所述對象ID從零開始順序編號。
[0091] 由于整數(shù)占用存儲空間小,最終使得對象ID占用的存儲空間更小,充分利用了整 數(shù)存儲空間小的優(yōu)勢。而且,順序編號便于后續(xù)根據(jù)文檔編號順序快速尋址。當然,作為本 發(fā)明其他實施例中的文檔編號,也可以不順序編號,比如只使用偶數(shù)編號或者奇數(shù)順序編 號,或者選用從預訂的非零的其他整數(shù)順序編號,也均能實現(xiàn)本發(fā)明的目的,只是所需存儲 空間較大,定位文檔相對復雜。
[0092] 實施例10
[0093] 作為本發(fā)明實施例的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng),在上 述任意一個實施例的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng)的基礎上,存儲的字 段值ID的數(shù)量為字段值ID的實際數(shù)量減一后得到。
[0094] 考慮到所述字段值ID的數(shù)量至少為1,所以可對所有所述字段值ID的數(shù)量進行減 1操作,使得存儲的字段值ID的數(shù)量的值更小,進而更一步地減少存儲空間。在統(tǒng)計時,需 要在讀取的字段值ID數(shù)量的基礎上加1后再進行操作。
[0095] 當然,如果不考慮壓縮存儲空間,也可以直接將字段值ID的數(shù)量直接存儲即可。
[0096] 為方便理解本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法和系統(tǒng),下 面結合報刊文章索引庫中對檢索結果使用本發(fā)明的針對檢索結果進行分組統(tǒng)計的索引結 構創(chuàng)建方法和系統(tǒng)進行具體說明:
[0097] 通常對于報刊文章而言,檢索時往往需要進行多個維度的分組統(tǒng)計,比如按照出 版地、出版社、出版日期、文章分類等多個分組值進行分組統(tǒng)計,其中,文章分類指文章被分 入的領域的類別,比如法律、社科、經(jīng)濟、金融和政治等等。出版地、出版社和出版日期是個 單值字段,即出版地、出版社和出版日期的字段值是特定的且是唯一的;文章分類是個多值 的字段,同一篇文章的字段值可以為多個,比如同一片文章可以同時歸入經(jīng)濟、金融和政治 類。
[0098] 首先,根據(jù)本發(fā)明的方法創(chuàng)建分組數(shù)據(jù)的索引結構:
[0099] 第一,根據(jù)分組值分配唯一的字段值ID,同時給統(tǒng)計對象分配一個唯一對象ID, 創(chuàng)建每個統(tǒng)計對象與字段值ID的一一映射關系,其中,對象ID從零開始順序編號,字段值 ID選用正整數(shù),如下表所示:
[0100]
【權利要求】
1. 一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法,其特征在于,包括如下步 驟: 為每個檢索對象分配一個唯一的對象ID ; 為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一個唯一的字段值ID; 創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一對多的映射關系; 將N個檢索對象對應的字段值ID根據(jù)所述映射關系順序生成一個字段值ID數(shù)據(jù)塊并 存儲;其中,N為大于1的整數(shù),且每個所述字段值ID W定長方式存儲; 為每個所述字段值ID數(shù)據(jù)塊建立索引數(shù)據(jù)塊并存儲,所述索引數(shù)據(jù)塊用于記錄每個 所述字段值ID數(shù)據(jù)塊存儲的位置,W及每個對象ID對應的字段值ID的數(shù)量。
2. 根據(jù)權利要求1所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法,其特 征在于,為每個所述字段值ID數(shù)據(jù)塊建立索引數(shù)據(jù)塊進一步包括如下步驟: 為每個所述字段值ID數(shù)據(jù)塊建立一個局部索引數(shù)據(jù)塊,所述局部索引數(shù)據(jù)塊包括所 述字段值ID數(shù)據(jù)塊在緩存中的位置,W及每個對象ID對應的字段ID的數(shù)量; 建立全局索引數(shù)據(jù)塊,所述全局索引數(shù)據(jù)塊用于記錄每個所述局部索引數(shù)據(jù)塊的起始 位置。
3. 根據(jù)權利要求1或2所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方法, 其特征在于,還包括將所述索引數(shù)據(jù)塊中每個對象ID對應的字段值ID的數(shù)量壓縮后再存 儲的步驟。
4. 根據(jù)權利要求1-3任一所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方 法,其特征在于,通過將所述對象ID從零開始順序編號為每個檢索對象分配一個唯一的對 象ID。
5. 根據(jù)權利要求1-4任一所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建方 法,其特征在于,存儲的每個對象ID對應的字段值ID的數(shù)量為每個對象ID對應的字段值 ID的實際數(shù)量減一后得到。
6. -種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng),其特征在于,包括索引結構 創(chuàng)建模塊,其中,所述索引結構創(chuàng)建模塊進一步包括: 對象ID分配模塊,用于為每個檢索對象分配一個唯一的對象ID ; 字段值ID分配模塊,用于為檢索對象中用于分組統(tǒng)計的字段的每一個值分配一個唯 一的字段值ID; 映射關系創(chuàng)建模塊,用于創(chuàng)建所述對象ID與每個字段對應的所述字段值ID的一對多 的映射關系; 字段值ID數(shù)據(jù)塊生成模塊,用于將N個檢索對象的多個分組值對應的字段值ID根據(jù) 所述映射關系順序生成一個字段值ID數(shù)據(jù)塊并存儲;其中,N為大于1的整數(shù),且每個所述 字段值ID W定長方式存儲; 索引數(shù)據(jù)塊創(chuàng)建模塊,用于為每個所述字段值ID數(shù)據(jù)塊創(chuàng)建索引并存儲,所述索引用 于記錄每個所述字段值ID數(shù)據(jù)塊存儲的位置,W及每個對象ID對應的字段值ID的數(shù)量。
7. 根據(jù)權利要求6所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng),其特 征在于,所述索引數(shù)據(jù)塊創(chuàng)建模塊進一步包括: 局部索引數(shù)據(jù)塊創(chuàng)建子模塊,用于為每個所述字段值ID數(shù)據(jù)塊建立一個局部索引數(shù) 據(jù)塊并存儲,所述局部索引數(shù)據(jù)塊包括所述字段值ID數(shù)據(jù)塊在緩存中的位置,W及每個對 象ID對應的字段值ID的數(shù)量; 全局索引數(shù)據(jù)塊創(chuàng)建子模塊,用于建立全局索引數(shù)據(jù)塊并存儲,所述全局索引數(shù)據(jù)塊 用于記錄每個所述局部索引數(shù)據(jù)塊的起始位置。
8. 根據(jù)權利要求6或7所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系統(tǒng), 其特征在于,還包括壓縮子模塊,用于將所述索引結構中每個對象ID對應的字段值ID的數(shù) 量壓縮后再存儲。
9. 根據(jù)權利要求6-8任一所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系 統(tǒng),其特征在于,所述對象ID分配模塊將所述對象ID從零開始順序編號。
10. 根據(jù)權利要求6-9任一所述的一種針對檢索結果進行分組統(tǒng)計的索引結構創(chuàng)建系 統(tǒng),其特征在于,存儲的每個對象ID對應的字段值ID的數(shù)量為每個對象ID對應的字段值 ID的實際數(shù)量減一后得到。
【文檔編號】G06F17/30GK104462080SQ201310415438
【公開日】2015年3月25日 申請日期:2013年9月12日 優(yōu)先權日:2013年9月12日
【發(fā)明者】童征宇, 董寧 申請人:北大方正集團有限公司, 北京方正阿帕比技術有限公司, 方正信息產(chǎn)業(yè)控股有限公司