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