一種基于鏈表結(jié)構(gòu)的倒排索引模型及其構(gòu)建方法
【專利摘要】本發(fā)明公開了一種基于鏈表結(jié)構(gòu)的倒排索引模型及其構(gòu)建方法。在倒排索引模型的基礎(chǔ)上,通過在關(guān)鍵詞節(jié)點中增加指向鄰接關(guān)鍵詞節(jié)點的指針,從而形成一個支持高效的短語查詢、快速的索引構(gòu)建以及較小的索引空間的消耗的索引模型。在基于鏈表結(jié)構(gòu)的倒排索引模型的基礎(chǔ)上,進(jìn)一步給出了索引構(gòu)建的方法。本發(fā)明提出的基于鏈表的倒排索引模型可以實現(xiàn)文本索引的快速構(gòu)建,并且支持短語關(guān)鍵詞的快速查詢。
【專利說明】
-種基于鏈表結(jié)構(gòu)的倒排索引模型及其構(gòu)建方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明設(shè)及一種基于鏈表結(jié)構(gòu)的倒排索引模型及其構(gòu)建方法,屬于文本信息處理
技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002] 索引技術(shù)是捜索引擎中用來快速獲得查詢結(jié)果的關(guān)鍵技術(shù)。最早的內(nèi)容索引是指 通過已知的按照可檢索順序排列的文獻(xiàn)集合中所包含的事項來快速查找文獻(xiàn)中的內(nèi)容。隨 著互聯(lián)網(wǎng)的普及和發(fā)展,互聯(lián)網(wǎng)中的海量信息資源為用戶獲取信息提供了巨大的便利,全 文索引技術(shù)為人們提供了在互聯(lián)網(wǎng)中查找信息的技術(shù)基礎(chǔ),通過為互聯(lián)網(wǎng)中的信息添加索 引,用戶可W快速方便地對信息進(jìn)行捜索。
[0003] 全文索引模型是由索引結(jié)構(gòu)、索引構(gòu)造算法和索引查詢算法組成的數(shù)據(jù)結(jié)構(gòu)和算 法集合,其中索引結(jié)構(gòu)是全文索引模型的核屯、,它直接決定了索引構(gòu)造算法W及索引查詢 算法的設(shè)計。索引程序通過掃描文本的內(nèi)容,根據(jù)索引結(jié)構(gòu)的要求,從文本中抽取出構(gòu)造索 引所需要的信息,比如關(guān)鍵詞、關(guān)鍵詞位置信息、詞頻等,根據(jù)索引構(gòu)造算法,將提取出的信 息組合成索引結(jié)構(gòu)的要求寫入到索引文件中,索引查詢的過程是從索引文件出發(fā),通過匹 配用戶輸入的關(guān)鍵詞,返回用戶查詢結(jié)果的集合,索引查詢的過程類似于通過字典的字表 來查找字義的過程,而索引的構(gòu)造則相當(dāng)于通過字義來生成字表的過程。
[0004] 目前主流的索引模型是倒排索引模型。倒排索引的物理存儲文件主要分為兩個, 第一個文件用來存放關(guān)鍵詞在文檔中出現(xiàn)的情況,比如關(guān)鍵詞在文檔中的下標(biāo)、關(guān)鍵詞在 文檔中出現(xiàn)的次數(shù)等,第二個文件按照字典順序存儲出現(xiàn)在文檔中的所有關(guān)鍵詞W及關(guān)鍵 詞指向第一個文件中關(guān)鍵詞出現(xiàn)情況列表的指針。倒排索引的構(gòu)造過程如下:
[0005] 1)輸入文檔D:This is a text.A text has many words.Words are made from letters.
[0006] 2)刪除無用詞匯:this is a has are 打om
[0007] 3)詞干提取:text many word made letter
[000引4)將詞干添加到倒排文件中,倒排文件模型如圖1所示。
[0009] 除了倒排索引模型,現(xiàn)有的主流索引模型還有后綴樹索引模型、后綴數(shù)組索引模 型,但是目前沒有一個索引模型能夠同時兼顧索引的構(gòu)建速度、索引的查詢速度W及索引 所占用的內(nèi)存消耗運Ξ個指標(biāo)。本發(fā)明提出的一種基于鏈表結(jié)構(gòu)的倒排索引模型旨在提供 一種能夠兼顧構(gòu)建速度、查詢速度W及內(nèi)存消耗的索引方法,而本發(fā)明能夠很好地解決上 面的問題。
【發(fā)明內(nèi)容】
[0010] 本發(fā)明目的在于針對上述現(xiàn)有模型不能兼顧索引構(gòu)建速度、索引查詢速度從及索 引內(nèi)存空間消耗運Ξ個指標(biāo)的問題,提出一種基于鏈表的倒排索引模型,該模型是在倒排 索引模型的基礎(chǔ)上,通過在關(guān)鍵詞節(jié)點中增加指向鄰接關(guān)鍵詞節(jié)點的指針,從而形成一個 支持高效的短語查詢、快速的索引構(gòu)建w及較小的索引空間的消耗的索引模型。
[0011] 本發(fā)明解決其技術(shù)問題所采取的技術(shù)方案是:一種基于鏈表的倒排索引模型,該 模型包括索引關(guān)鍵詞列表和索引關(guān)鍵詞指向的文檔信息列表。索引關(guān)鍵詞列表存儲的是被 索引文檔中所有關(guān)鍵詞的基本信息W及關(guān)鍵詞指向其對應(yīng)的文檔信息列表的指針信息。索 引關(guān)鍵詞指向的文檔信息列表存儲的是關(guān)鍵詞在所對應(yīng)的文檔中的基本信息,即關(guān)鍵詞在 文檔中出現(xiàn)的下標(biāo)、出現(xiàn)次數(shù)等。
[0012] 進(jìn)一步的,本發(fā)明模型的文檔信息列表中的每一個元關(guān)鍵詞信息,都包含有指向 其鄰接關(guān)鍵詞的指針,當(dāng)通過短語關(guān)鍵詞進(jìn)行文檔查詢時,可通過指向鄰接關(guān)鍵詞的指針, 快速進(jìn)行短語的匹配。
[0013] 本發(fā)明還提出了一種基于鏈表的倒排索引模型的構(gòu)建方法,該方法包括如下步 驟:
[0014] 步驟1:元關(guān)鍵詞解析:通過分詞、格式化、文本解析運Ξ個步驟,將輸入的文檔解 析為模型所需要的基本數(shù)據(jù)結(jié)構(gòu);
[0015] 步驟2:鄰接關(guān)鍵詞關(guān)聯(lián):步驟1形成了構(gòu)建索引模型的基本數(shù)據(jù)結(jié)構(gòu),在本步驟 中,通過將前一個關(guān)鍵詞節(jié)點中的鄰接指針指向后一個關(guān)鍵詞節(jié)點,從而將相鄰的關(guān)鍵詞 關(guān)聯(lián)起來;
[0016] 步驟3:將關(guān)鍵詞節(jié)點加入已有的索引模型。
[0017] 進(jìn)一步的,本發(fā)明上述步驟1中生成的基本數(shù)據(jù)結(jié)構(gòu)中含有指向同類型結(jié)構(gòu)的指 針,使得可W從當(dāng)前節(jié)點方便地鏈接到相同數(shù)據(jù)結(jié)構(gòu)的下一個節(jié)點。
[0018] 本發(fā)明的上述方法應(yīng)用于基于鏈表結(jié)構(gòu)的倒排索引模型。
[0019] 針對上述構(gòu)建好的索引模型,本發(fā)明還提出了一種基于鏈表的倒排索引模型的查 詢方法,該方法包括如下步驟:
[0020] 步驟1:根據(jù)查詢關(guān)鍵詞組的首個關(guān)鍵詞W及文檔集關(guān)鍵詞詞典Term-Dic查找到 其所指向的倒排表;
[0021] 步驟2:如果查詢的是單個關(guān)鍵詞,則可直接返回倒排表中所有文檔id的集合;
[0022] 步驟3:依次匹配倒排表中的索引關(guān)鍵詞節(jié)點,針對單個關(guān)鍵詞節(jié)點,按照其鏈表 的順序依次進(jìn)行關(guān)鍵詞的比較,直到最后一個查詢關(guān)鍵詞,如果所有的關(guān)鍵詞都相同,則將 關(guān)鍵詞所對應(yīng)的文檔id加入到返回的集合中。
[0023] 本發(fā)明的上述方法應(yīng)用于基于鏈表結(jié)構(gòu)的倒排索引模型。
[0024] 有益效果:
[0025] 1、本發(fā)明提出的基于鏈表的倒排索引模型可W快速完成索引文件的構(gòu)建。在文件 的大小成倍增長時,本發(fā)明提出的索引模型能夠W線性的時間增長完成對文件的索引構(gòu) 建。
[0026] 2、本發(fā)明在倒排索引模型的基礎(chǔ)上,通過在關(guān)鍵詞節(jié)點中增加指向鄰接關(guān)鍵詞節(jié) 點的指針,從而形成一個支持高效的短語查詢、快速的索引構(gòu)建W及較小的索引空間的消 耗的索引模型。
【附圖說明】
[0027] 圖1是示例倒排索引模型結(jié)構(gòu)圖。
[0028] 圖2是本發(fā)明的一種基于鏈表的倒排索引模型結(jié)構(gòu)圖。
[0029] 圖3是本發(fā)明的一種基于鏈表的倒排索引倒排表更新流程圖。
【具體實施方式】
[0030] 下面結(jié)合說明書附圖對本發(fā)明創(chuàng)造作進(jìn)一步的詳細(xì)說明。
[0031] 如圖2所示,本發(fā)明提出的基于鏈表的倒排索引模型的數(shù)據(jù)結(jié)構(gòu)包含兩個部分,分 別是化Node和化xtNodeePLNode用來表示文檔中特定關(guān)鍵詞下相關(guān)信息的集合,NextNode 用來表示單個特定關(guān)鍵詞在文檔中出現(xiàn)的信息,比如在文檔中出現(xiàn)的下表?;阪湵淼牡?排索引模型的數(shù)據(jù)結(jié)構(gòu)如下:
[0032]
[0033]
[0034] W文檔do= "it is what it is"、山="what is it"為例,圖2給出了其在改進(jìn)的 倒排索引模型中的結(jié)構(gòu)示意圖。
[0035] 下面W文檔d= "it is a banana."為例,給出詳細(xì)的索引構(gòu)建過程:
[0036] 1、元關(guān)鍵詞解析
[0037] 元關(guān)鍵詞解析主要通過分詞、格式化、文本解析Ξ個步驟,將輸入的文檔解析成本 模型所需要的基本數(shù)據(jù)結(jié)構(gòu),W文檔d= "it is a banana."為例,元關(guān)鍵詞解析過程如下: [003引1)輸入文檔d;
[0039] 2)對文檔d進(jìn)行分詞操作,得到輸出"it","is",'V',"banana.";
[0040] 3)對分詞的結(jié)果進(jìn)行格式化操作,過濾掉無意義的單詞W及標(biāo)點符號,得到輸出 結(jié)果 "it", "is", "banana";
[0041] 4)將格式化得到的結(jié)果與原文本進(jìn)行匹配操作,得到單個關(guān)鍵詞在原文本中的下 標(biāo),形成輸出結(jié)果化xtNodel = [ "it",0]、NextNode2 = [ "is",3]、NextNode3 = [ "banana", 8]〇
[0042] 2、鄰接關(guān)鍵詞關(guān)聯(lián)
[0043] 鄰接關(guān)鍵詞關(guān)聯(lián)階段主要將相鄰的關(guān)鍵詞進(jìn)行關(guān)聯(lián),在前一個關(guān)鍵詞的節(jié)點中增 加指向后一個關(guān)鍵詞節(jié)點的指針,使得通過前一個關(guān)鍵詞可W快速地訪問到后一個關(guān)鍵 詞。在通過鄰接關(guān)鍵詞關(guān)聯(lián)的處理后,形成的輸出結(jié)果是NextNodel = ["it",0, 化xtNode2]、NextNode2 = [ "is",3,化xtNode3]、NextNode3 = [ "banana",8,NtXL]。
[0044] 3、加入已有索引模型
[0045] 最后,需要將所有的化xtNode加入到已有的倒排列表中,完成對文檔d的倒排索引 工作。
[0046] 首先為文檔d生成多個化Node,WNextNodel為例,生成的化Nodel = [d,1, WextNode 1 ]],如果存在多個化xtNode中的關(guān)鍵詞為"if',則全部加入到PLNode 1中,修改 其中的詞頻統(tǒng)計量,其步驟如圖3所示。
[0047] 下面W文檔d="it is a banana."構(gòu)建的索引模型為例,來描述索引查詢的過 程:
[004引l、w輸入關(guān)鍵詞"it is",完成一次成功的查詢
[0049] 1)對關(guān)鍵詞"it is"進(jìn)行元關(guān)鍵詞解析,得到查詢關(guān)鍵詞列表["it","is"];
[0050] 2)根據(jù)"it"關(guān)鍵詞查找關(guān)鍵詞詞典,匹配到"it"關(guān)鍵詞所指向的倒排表;
[0051 ] 3)根據(jù)倒排表中倒排節(jié)點存儲的順序,依次比對倒排節(jié)點,當(dāng)對比到化Nodel時, 按照化xtNode在PLNodel中存儲的順序,依次匹配化xtNode節(jié)點;
[0化2] 4)由于化xtNodel中存放的是"it",首次匹配成功,繼續(xù)將化xtNodel中的鄰接節(jié) 點與"is"進(jìn)行對比;
[0053] 5)由于NextNode2中對應(yīng)的關(guān)鍵詞和"is"相同,并且"is"是查詢關(guān)鍵詞列表中的 最后一個關(guān)鍵詞,因此化Nodel的匹配結(jié)束,將化Nodel所對應(yīng)的文檔加入待返回的文檔列 表中。
[0化4] 2、W輸入關(guān)鍵詞"it has",完成一次失敗的查詢
[0055] 1)對關(guān)鍵詞"it is"進(jìn)行元關(guān)鍵詞解析,得到查詢關(guān)鍵詞列表["it","is"];
[0056] 2)根據(jù)"it"關(guān)鍵詞查找關(guān)鍵詞詞典,匹配到"it"關(guān)鍵詞所指向的倒排表;
[0057] 3)根據(jù)倒排表中倒排節(jié)點存儲的順序,依次比對倒排節(jié)點,當(dāng)對比到化Nodel時, 按照化xtNode在PLNodel中存儲的順序,依次匹配化xtNode節(jié)點;
[0化引 4)由于化xtNodel中存放的是"it",首次匹配成功,繼續(xù)將化xtNodel中的鄰接節(jié) 點與"is"進(jìn)行對比;
[0化9] 5)由于NextNode2中對應(yīng)的關(guān)鍵詞和"is"不相同,并且化Nodel中只包含 化xtNodel運一個鄰接關(guān)鍵詞節(jié)點,因此PLNodel對應(yīng)的文檔中不包含關(guān)鍵詞"it has"。 [0060]如圖3所示,本發(fā)明還提出了一種基于鏈表的倒排索引模型的構(gòu)建方法,該方法包 括如下步驟:
[0061 ]步驟1:元關(guān)鍵詞解析:通過分詞、格式化、文本解析運Ξ個步驟,將輸入的文檔解 析為模型所需要的基本數(shù)據(jù)結(jié)構(gòu);
[0062] 步驟2:鄰接關(guān)鍵詞關(guān)聯(lián):步驟1形成了構(gòu)建索引模型的基本數(shù)據(jù)結(jié)構(gòu),在本步驟 中,通過將前一個關(guān)鍵詞節(jié)點中的鄰接指針指向后一個關(guān)鍵詞節(jié)點,從而將相鄰的關(guān)鍵詞 關(guān)聯(lián)起來;
[0063] 步驟3:將關(guān)鍵詞節(jié)點加入已有的索引模型。
[0064] 針對上述構(gòu)建好的索引模型,本發(fā)明還提出了一種基于鏈表的倒排索引模型的查 詢方法,該方法包括如下步驟:
[0065] 步驟1:根據(jù)查詢關(guān)鍵詞組的首個關(guān)鍵詞W及文檔集關(guān)鍵詞詞典Term-Dic查找到 其所指向的倒排表;
[0066] 步驟2:如果查詢的是單個關(guān)鍵詞,則可直接返回倒排表中所有文檔id的集合;
[0067] 步驟3:依次匹配倒排表中的索引關(guān)鍵詞節(jié)點,針對單個關(guān)鍵詞節(jié)點,按照其鏈表 的順序依次進(jìn)行關(guān)鍵詞的比較,直到最后一個查詢關(guān)鍵詞,如果所有的關(guān)鍵詞都相同,則將 關(guān)鍵詞所對應(yīng)的文檔id加入到返回的集合中。
[0068] W上所述僅為本發(fā)明的較佳實施案例之一,并不用W限制本發(fā)明,凡在本發(fā)明的 精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
[0069] 本發(fā)明是在深入研究倒排索引模型、后綴樹索引模型W及后綴數(shù)組索引模型的基 礎(chǔ)上,通過在倒排索引模型的關(guān)鍵詞節(jié)點中增加指向鄰接關(guān)鍵詞的指針,使得倒排索引模 型能夠完成快速的短語查詢,結(jié)合倒排索引模型構(gòu)建時間短、內(nèi)存消耗小的優(yōu)點,本發(fā)明提 出的基于鏈表的倒排索引模型能夠在索引的構(gòu)建、查詢W及內(nèi)存消耗上都有很好的表現(xiàn), 具有一定的實用價值。
【主權(quán)項】
1. 一種基于鏈表的倒排索引模型,其特征在于,所述模型包括索引關(guān)鍵詞列表和索引 關(guān)鍵詞指向的文檔信息列表;索引關(guān)鍵詞列表存儲的是被索引文檔中所有關(guān)鍵詞的基本信 息以及關(guān)鍵詞指向其對應(yīng)的文檔信息列表的指針信息;索引關(guān)鍵詞指向的文檔信息列表存 儲的是關(guān)鍵詞在所對應(yīng)的文檔中的基本信息,即關(guān)鍵詞在文檔中出現(xiàn)的下標(biāo)和出現(xiàn)次數(shù)。2. 根據(jù)權(quán)利要求1中所述的一種基于鏈表的倒排索引模型,其特征在于:所述模型的文 檔信息列表中的每一個元關(guān)鍵詞信息,都包含有指向其鄰接關(guān)鍵詞的指針,當(dāng)通過短語關(guān) 鍵詞進(jìn)行文檔查詢時,通過指向鄰接關(guān)鍵詞的指針,快速進(jìn)行短語的匹配。3. -種基于鏈表的倒排索引模型的構(gòu)建方法,其特征在于,所述方法包括如下步驟: 步驟1:元關(guān)鍵詞解析:通過分詞、格式化、文本解析這三個步驟,將輸入的文檔解析為 模型所需要的基本數(shù)據(jù)結(jié)構(gòu); 步驟2:鄰接關(guān)鍵詞關(guān)聯(lián):步驟1形成了構(gòu)建索引模型的基本數(shù)據(jù)結(jié)構(gòu),在本步驟中,通 過將前一個關(guān)鍵詞節(jié)點中的鄰接指針指向后一個關(guān)鍵詞節(jié)點,從而將相鄰的關(guān)鍵詞關(guān)聯(lián)起 來; 步驟3:將關(guān)鍵詞節(jié)點加入已有的索引模型。4. 根據(jù)權(quán)利要求3中所述的一種基于鏈表的倒排索引模型的構(gòu)建方法,其特征在于:步 驟1中生成的基本數(shù)據(jù)結(jié)構(gòu)中含有指向同類型結(jié)構(gòu)的指針,使得可以從當(dāng)前節(jié)點方便地鏈 接到相同數(shù)據(jù)結(jié)構(gòu)的下一個節(jié)點。5. 根據(jù)權(quán)利要求3中所述的一種基于鏈表的倒排索引模型的構(gòu)建方法,其特征在于,可 以通過下述查詢步驟通過關(guān)鍵詞對文檔進(jìn)行查詢: 步驟1:根據(jù)查詢關(guān)鍵詞組的首個關(guān)鍵詞以及文檔集關(guān)鍵詞詞典Term-Dic查找到其所 指向的倒排表; 步驟2:如果查詢的是單個關(guān)鍵詞,則可直接返回倒排表中所有文檔id的集合; 步驟3:依次匹配倒排表中的索引關(guān)鍵詞節(jié)點,針對單個關(guān)鍵詞節(jié)點,按照其鏈表的順 序依次進(jìn)行關(guān)鍵詞的比較,直到最后一個查詢關(guān)鍵詞,如果所有的關(guān)鍵詞都相同,則將關(guān)鍵 詞所對應(yīng)的文檔id加入到返回的集合中。
【文檔編號】G06F17/21GK105824956SQ201610192878
【公開日】2016年8月3日
【申請日】2016年3月30日
【發(fā)明人】張登銀, 于建坤
【申請人】南京郵電大學(xué)