專利名稱:一種基于文檔序號處理的倒排索引表示方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及搜索引擎的倒排索引壓縮技術(shù)領(lǐng)域,尤其涉及一種基于文檔序號處理的倒排索引表示方法及系統(tǒng)。
背景技術(shù):
倒排索引是一種廣泛應(yīng)用于各類全文檢索系統(tǒng)中的索引技術(shù)。常用的全文檢索系統(tǒng)包括Web搜索引擎、圖書館檢索系統(tǒng)和專利檢索系統(tǒng)等。檢索系統(tǒng)處理查詢的過程大致可以分為4個步驟:索引構(gòu)建、查詢處理、索引掃描和文檔評分。一般而言,用戶輸入查詢后,系統(tǒng)掃描預(yù)先建立的倒排索引得到候選文檔集,通過預(yù)定義的排序模型,結(jié)合啟發(fā)式規(guī)則對文檔進(jìn)行綜合評分,最后返回得分最高的前K篇文檔。建立倒排索引時,首先需要掃描文檔集合,將每篇文檔轉(zhuǎn)換成一個個詞條的列表,并通過語言學(xué)處理,產(chǎn)生歸一化的詞條作為詞項(xiàng),對所有文檔按照其中出現(xiàn)的詞項(xiàng)建立索弓I。倒排索引一般由一個詞典和一個全體倒排記錄表組成,如圖3所示:詞典中保存了對文檔集合進(jìn)行處理后得到的詞項(xiàng)、詞項(xiàng)的文檔頻率(出現(xiàn)該詞項(xiàng)的文檔數(shù)目)以及一個指向該詞項(xiàng)對應(yīng)倒排記錄表的指針。倒排記錄表是由多個倒排記錄構(gòu)成的列表,其中的每個倒排記錄對應(yīng)出現(xiàn)該詞項(xiàng)的一篇文檔,倒排記錄中記錄的信息包括:文檔序號,詞項(xiàng)頻率(詞項(xiàng)在該文檔中出現(xiàn)的次數(shù)),位置信息(詞項(xiàng)出現(xiàn)在文檔的位置)和其他附屬信息。在小數(shù)據(jù)集合上,倒排索引能夠有效地存儲和處理,但是隨著文檔集合規(guī)模的增長,倒排表的長度隨之變長,一方面導(dǎo)致倒排索引占用的存儲空間急速膨脹,另一方面,掃描倒排表的所需的時間更加漫長,降低了查詢處理的效率。為了克服文檔規(guī)模帶來的`問題,現(xiàn)有技術(shù)提出了對倒排索引進(jìn)行壓縮的方法。通過對倒排索引進(jìn)行壓縮,不僅可以有效減少索引占用的存儲空間,而且可以提高查詢處理的效率。倒排索引的一般形式可以表示為:t—<,…,dft >,其中詞項(xiàng)t通過
對文檔集合進(jìn)行處理得到,并存放在詞典中,其倒排表記錄該詞項(xiàng)的文檔頻率ft和一個長度為ft的文檔序號列表(為了簡單起見,我們忽略了倒排記錄中的詞項(xiàng)頻率和位置等信息),dfi, (If2,…,dft為原始的文檔序號(doclD)。為了對倒排索引中的文檔序號進(jìn)行壓縮,現(xiàn)有技術(shù)提出了采用d-gap形式表示文檔序號,具體做法是將倒排表中的文檔序號按照升序排列,對每個文檔序號,用該文檔序號和前面相鄰的文檔序號的差值表示(第一個文檔序號除外),從而得到d-gap形式的倒排表:t—< ft; Cl1, d2 - (I1,…,dk-du >,其中Cllri <dk。然后我們可以采用變長編碼,編碼算法對該倒排表進(jìn)行編碼,達(dá)到壓縮的效果。D-GAP形式的倒排索引,其壓縮效果之所以要優(yōu)于一般形式的倒排索引,是因?yàn)槲臋n序號之間的差值(d-gap)要遠(yuǎn)小于原始的文檔序號,而更小的數(shù)值意味著可以采用更短的編碼表示,所以d-gap形式倒排表的壓縮率要高于一般形式的倒排表。D-GAP形式的倒排索引廣泛應(yīng)用于各類全文檢索系統(tǒng)中,但是仍然存在一定的不足。舉例來說,假設(shè)一個倒排表包含10個文檔序號,其一般形式為:{I, 4,6,9,10,11,12,13,14,17},要對其進(jìn)行壓縮,我們首先計算差值,將其轉(zhuǎn)換為d-gap形式:{1,3,2,3,I, I, I, I, I, 3},然后對這10個差值進(jìn)行編碼。但是通過觀察我們發(fā)現(xiàn),在這10個差值中存在一個由數(shù)字I組成的連續(xù)序列,這連續(xù)的序列表明在一般形式的倒排表中,其對應(yīng)的原始文檔序號是連續(xù)的,以往的工作沒有考慮連續(xù)文檔序號的這種特征,僅僅是簡單地依次對每一個文檔序號進(jìn)行編碼。
發(fā)明內(nèi)容
為解決上述發(fā)明目的,本發(fā)明提出了一種基于文檔序號處理的倒排索引表示方法及系統(tǒng),能夠有效地減少待編碼的文檔序號數(shù)目,通過提高文檔序號的存儲和壓縮效率有效地提高倒排索引的壓縮率。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明提供了一種基于文檔序號處理的倒排索引表示方法,該方法包括:步驟1,將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列;步驟2,計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存;步驟3,進(jìn)行差值 處理:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表;其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。進(jìn)一步的,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。為實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明還提供一種基于文檔序號處理的倒排索引表示系統(tǒng),該系統(tǒng)包括:排序模塊,用于將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列;計算處理模塊,用于計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存;差值處理模塊,用于進(jìn)行差值處理:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表;其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。進(jìn)一步的,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。本發(fā)明的效果在于,有效地減少待編碼的文檔序號數(shù)目,提高了文檔序號的存儲和壓縮效率,提高了倒排索引的壓縮率,本發(fā)明能廣泛應(yīng)用于搜索引擎性能優(yōu)化和倒排索引壓縮領(lǐng)域。以下結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)描述,但不作為對本發(fā)明的限定。
圖1是本發(fā)明的基于文檔序號處理的倒排索引表示方法流程圖;圖2是本發(fā)明的基于文檔序號處理的倒排索引表示系統(tǒng)示意圖;圖3是現(xiàn)有技術(shù)中的倒排索引的基本結(jié)構(gòu);圖4是本發(fā)明中的縱向切分存儲的倒排記錄表;圖5是本發(fā)明中的橫向切分存儲的倒排記錄表。
具體實(shí)施例方式圖1是本發(fā)明的基于文檔序號處理的倒排索引表示方法流程圖。如圖1所示,該方法包括:步驟1,將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列;步驟2,計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存;步驟3,進(jìn)行差值處理:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表;其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。進(jìn)一步的,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。圖2是本發(fā)明的基于文檔序號處理的倒排索引表示系統(tǒng)示意圖。如圖2所示,該系統(tǒng)包括:排序模塊100,用于將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列;計算處理模塊200,用于計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存;差值處理模塊300,用于進(jìn)行差值處理:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表;其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。進(jìn)一步的,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。相對于現(xiàn)有技術(shù)中的d -gap形式的倒排索引,本發(fā)明的基于文檔序號處理的倒排索引可以稱為d - range的文檔序號表示方法。將倒排記錄表按文檔序號升序排列,對其中連續(xù)的文檔序號序列,當(dāng)序列的長度η小于3時(η=1或2),原樣存儲該序列,如長度為2的序列:5、6,采用d-range形式表示時,仍保存該序列的原始值:5、6。通過詞條化、語言學(xué)處理、倒排等操作,我們得到如圖3所示的倒排索引。在實(shí)際情況中,為了高效的存儲和讀取,倒排記錄表往往使用橫向切分或者縱向切分這兩種方式存儲。
縱向切分存儲又可以稱為按塊存儲,將N個倒排記錄作為一塊存儲,N —般取值為128,如圖4所示。另外一種方式稱為橫向切分,即把文檔序號、詞項(xiàng)頻率和位置信息分開存儲,這樣存儲的好處是可以獨(dú)立并行地對這些數(shù)值進(jìn)行處理,提高了處理的效率,如圖5所示。本專利的發(fā)明內(nèi)容可以同時適用于上述兩種存儲方式。以圖5為例,倒排記錄表中的文檔序號單獨(dú)存放在一個數(shù)據(jù)塊中,其中存放的內(nèi)容是出現(xiàn)詞項(xiàng)t的文檔序號。給定詞項(xiàng)t,可以通過查找字典得到該詞項(xiàng)對應(yīng)的文檔序號信息。本專利主要是關(guān)于文檔序號的表示和壓縮方法,所以下文的實(shí)施步驟主要是針對文檔序號,暫不考慮詞項(xiàng)頻率和位置信肩、O我們把倒排表中連續(xù)的文檔序號稱為一個文檔序列,比如{3,4,5,6}可以稱為一個序列,{3, 5,6}則包含兩個序列,第一個序列是{3},第二個序列是{5,6}。序列中包含的文檔序號個數(shù)定義為序列的長度。倒排表中的文檔信息可以看做是由大量這樣的文檔序列組成的。在本專利中,我們提出d-range的表示方法,用于對倒排表中的文檔序列進(jìn)行優(yōu)化,從而進(jìn)一步提高倒排索引壓縮率。下面介紹具體的實(shí)施步驟。假設(shè)給定一個包含η個連續(xù)文檔序號的文檔序列L:L= {d” d2,.. .,dj,di + 1 = d( + I, V I > 1.
如果文檔序列的長度n彡3,其d-range形式表示為:Ld_range= W1, O, dj ,即Ld-range= {左邊界,O,右邊界};如果η=1或者Π=2,則保存原始文檔序列,其相應(yīng)形式為:Ld-range= IdJ ( Π=1 )或者W1, dj ( Γ1=2 )。對倒排表中所有文檔序號進(jìn)行上述處理后,再計算相鄰文檔序號之間的差值(左邊界和右邊界之間的O除外),最后得到d-range形式的倒排表。
比如針對文檔序號{3,4,5,6,8,9,10, 13},按照上述的規(guī)則,里面共有3個文檔序列:{3,4,5,6}、{8,9,10}和{13},對每個序列都采用d-range處理后,我們得到其d-range形式的原始表示:{3,0,6,8,0,10,13},然后計算相鄰文檔序號之間的差值,最后得到:{3,O, 3,2,O, 2,3}。選擇把η≥3的連續(xù)文檔序列表示成{左邊界,0,右邊界}的形式,是因?yàn)橥ㄟ^d-range形式來表示這些序列,我們至少需要3個整數(shù),而且我們只需3個整數(shù),就能表示原來η個文檔序號的情況。在序列長度η=3時,采用d-range形式也需要3個數(shù)值;當(dāng)n>3時,d-range形式需要存儲的整數(shù)便可以減少(n_3)個,η的值越大,d-range減少的整數(shù)數(shù)目也越多。而當(dāng)序列的長度n=l或者n=2時,d-range形式反而需要更多的整數(shù),所以在這些情況下,我們存儲原始序列。然后,采用差值方法進(jìn)一步提高d-range的壓縮效率,即用相鄰序號之間的差值代替原始值,如序列:5、6,其差值形式為5、1 (6-5=1) ;5、0、9,其差值形式為5、0、3 (8 -5=3)。我們在三個數(shù)據(jù)集上對比了 d-range形式和d_gap形式的實(shí)驗(yàn)結(jié)果,包括存儲時減少的整數(shù)個數(shù)以及壓縮后每個文檔序號所需要的比特數(shù)。表I中介紹了三個數(shù)據(jù)集的詳細(xì)信息,在表中我們統(tǒng)計了各個數(shù)據(jù)集的大小,對數(shù)據(jù)集處理后得到的詞項(xiàng)數(shù),數(shù)據(jù)集包含的文檔數(shù)目以及倒排記錄的數(shù)目。表權(quán)利要求
1.一種基于文檔序號處理的倒排索引表示方法,其特征在于,包括: 步驟1,將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列; 步驟2,計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存; 步驟3,進(jìn)行差值處理:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表; 其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。
2.如權(quán)利要求1所述的倒排索引表示方法,其特征在于,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。
3.一種基于文檔序號處理的倒排索引表示系統(tǒng),其特征在于,包括: 排序模塊,用于將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列; 計算處理模塊,用于計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作:當(dāng)序列的長度η小于3時,直接存儲該序列,當(dāng)序列的長度η大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字O后進(jìn)行儲存; 差值處理模塊,用于進(jìn)行差值處理`:對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表; 其中所述文檔序列是倒排表中連續(xù)的文檔序號,所述序列長度為所述文檔序列中的文檔序號個數(shù)。
4.如權(quán)利要求3所述的倒排索引表示系統(tǒng),其特征在于,所述倒排記錄表采用縱向切分或者橫向切分兩種方式存儲,且縱向切分的存儲將N個倒排記錄作為一塊存儲,N取值為`128,橫向切分的存儲則將文檔序號、詞項(xiàng)頻率和位置信息分開存儲。
全文摘要
本發(fā)明提供了一種基于文檔序號處理的倒排索引表示方法及系統(tǒng),其中方法包括步驟1.將倒排記錄表按文檔序號升序或降序排列,獲得排序后的倒排記錄表,從排序后的倒排記錄表提取多個文檔序列;步驟2.計算所述多個文檔序列的序列長度,根據(jù)所述序列長度對其進(jìn)行相應(yīng)操作當(dāng)序列的長度n小于3時,直接存儲該序列,當(dāng)序列的長度n大于等于3時,提取該序列起始和終止的兩個邊界文檔序號,并在所述兩個邊界文檔序號中間插入數(shù)字0后進(jìn)行儲存;步驟3.進(jìn)行差值處理對儲存的所有序列的相鄰文檔序號進(jìn)行差值計算并將相鄰文檔序號進(jìn)行比較,獲得的差值代替大的邊界文檔序號,獲得新的倒排表。本發(fā)明能夠有效地提高倒排索引的壓縮率。
文檔編號G06F17/30GK103235794SQ20131011307
公開日2013年8月7日 申請日期2013年4月2日 優(yōu)先權(quán)日2013年4月2日
發(fā)明者史亮, 王斌, 李鵬, 李銳, 衛(wèi)冰潔, 張帥 申請人:中國科學(xué)院計算技術(shù)研究所