一種基于樹形結(jié)構(gòu)的檢索方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,具體涉及一種基于樹形結(jié)構(gòu)的檢索方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)的飛速發(fā)展,信息的指數(shù)增長,數(shù)據(jù)形式的多樣性,人們很難在海亮的信息中快速地找到符合自己需求的部分。全文數(shù)據(jù)庫的出現(xiàn),大大改善了這一現(xiàn)狀。全文數(shù)據(jù)庫,也稱為文本數(shù)據(jù)庫,它是管理海量文本的系統(tǒng)。全文數(shù)據(jù)庫要完成的工作仍然是傳統(tǒng)數(shù)據(jù)庫的兩大功能:存儲和檢索,具體而言就是文本數(shù)據(jù)的存儲和任意字符串的檢索。作為檢索條件的字符串可以是常量型字符串,也可以是正則表達式(或其他方式,比如距離限制等等)表示的一組具有共同特征的字符串集合。
[0003]目前比較常見和流行的全文檢索模型有以下幾種模型:署名文件(SignatureFiles)、位圖(Bit Map)、倒排表(Inverted List)、Σ2矩陣Pat樹和Pat數(shù)組等等。這些模型在專家們的努力下,已經(jīng)相當成熟并在實踐中得到廣泛應(yīng)用。
[0004]從書目索引延伸出來的方法就是現(xiàn)在應(yīng)用最廣泛的倒排表模型。它具有創(chuàng)建索引速度較快的特點,在網(wǎng)絡(luò)搜索引擎中廣泛應(yīng)用。但其所需的存儲空間較大,查詢速度較慢。署名文件雖然實現(xiàn)簡單,但是要找到一個合適的散列函數(shù)和一個寬度適合的矢量非常困難,而且因?qū)ο蠖悺H绻麤]有選擇好,則查詢結(jié)果就會出現(xiàn)相當?shù)牟淮_定性。位圖文件索引結(jié)構(gòu)思路簡單,使用方便,時間效率高,在布爾檢索上尤其高效,但是其空間效率很低,即使使用了位圖壓縮算法,仍然難以接受。Pat樹模型的最大優(yōu)點是檢索效率很高,尤其對模型特殊的檢索,如前綴檢索、范圍檢索等檢索效率更高。然而同位圖模型一樣,空間效率極低,而且創(chuàng)建過程中空間開銷更大,創(chuàng)建效率也很低。Pat數(shù)組是對Pat樹的修改,它將Pat樹的葉節(jié)點串行化就得到了 Pat數(shù)組。Pat數(shù)組雖然很大程度上壓縮了創(chuàng)建過程中的開銷,但是,因為采用數(shù)組的存儲方式,其創(chuàng)建和合并需要移動大量的數(shù)據(jù),動態(tài)性很難令人滿意。
【發(fā)明內(nèi)容】
[0005]至少部分的解決現(xiàn)有技術(shù)中存在的問題,本發(fā)明提出一種基于樹形結(jié)構(gòu)的檢索方法,用于中文搜索引擎中對中文網(wǎng)頁數(shù)據(jù)的處理,包括:
[0006]步驟S100,網(wǎng)頁數(shù)據(jù)預(yù)處理;
[0007]步驟S200,建立網(wǎng)頁數(shù)據(jù)索引文件;
[0008]步驟S300,接收用戶輸入的查詢字符串,根據(jù)網(wǎng)頁數(shù)據(jù)索引進行檢索。
[0009]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,步驟S200中的所述網(wǎng)頁數(shù)據(jù)索引文件是對處理后的網(wǎng)頁數(shù)據(jù)所建立的網(wǎng)頁數(shù)據(jù)索引組成的文件。
[0010]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,所述網(wǎng)頁數(shù)據(jù)索引為字索引。
[0011]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,所述網(wǎng)頁數(shù)據(jù)索引為詞索引。
[0012]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,所述網(wǎng)頁數(shù)據(jù)索引為字索引和詞索引。
[0013]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,所述網(wǎng)頁數(shù)據(jù)索引是基于二元內(nèi)相關(guān)后續(xù)樹創(chuàng)建的索引。
[0014]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,步驟S100進一步包括:
[0015]首先對抓取的原始網(wǎng)頁進行分類,然后再按照分類分別提取網(wǎng)頁中的文本信息,得到分類后的文本信息;生成網(wǎng)頁索引文件的過程包括為原始網(wǎng)頁的每個分類分別建立網(wǎng)頁索引文件。
[0016]所述的基于樹形結(jié)構(gòu)的檢索方法,其中,在步驟S200中,建立網(wǎng)頁數(shù)據(jù)索引文件進一步包括:
[0017]首先,判斷每個分類的文本信息的容量,當所述分類的容量小于1GB時,為所述分類的文本信息建立字索引,當所述分類的容量大于等于1GB時,為所述分類的文本信息建立詞索引。
[0018]所述的基于樹形結(jié)構(gòu)的檢索方法,進一步包括:
[0019]將查詢字符串分別分解為字和詞,對于網(wǎng)頁數(shù)據(jù)索引是字索引的情況,按字根據(jù)所述字索引來進行檢索;對于網(wǎng)頁數(shù)據(jù)索引是詞索引的情況,按分詞根據(jù)所述詞索引來進行檢索。
[0020]所述的基于樹形結(jié)構(gòu)的檢索方法,具體的檢索過程為:
[0021]第一階段,針對網(wǎng)頁數(shù)據(jù)索引是字索引的情況進行檢索;
[0022]首先順序讀入查詢字符串分解后的每一個字,取第一個字A,針對字索引,在二元內(nèi)相關(guān)后續(xù)樹中找到以A為根的樹,然后在樹A的葉子中逐個分支地匹配查詢字符串的下一個字B,匹配到B的話則將B的后續(xù)編號加入隊列,直到A的全部分支都匹配結(jié)束;轉(zhuǎn)到以B為根的樹,從隊列中取出B樹的分支號,查找相應(yīng)的葉子結(jié)點來匹配字符串中的下一個字C,如此循環(huán)直到有一次匹配過程中沒有匹配到或者查詢字符串全部匹配結(jié)束,如果匹配成功,則意味著找到了包含查詢字符串的原文;
[0023]第二階段,針對網(wǎng)頁數(shù)據(jù)索引是詞索引的情況進行檢索;
[0024]首先順序讀入查詢字符串分解后的每一個詞,取第一個詞A,針對詞索引,在二元內(nèi)相關(guān)后續(xù)樹中找到以A為根的樹,然后在樹A的葉子中逐個分支地匹配查詢字符串的下一個詞B,匹配到B的話則將B的后續(xù)編號加入隊列,直到A的全部分支都匹配結(jié)束;轉(zhuǎn)到以B為根的樹,從隊列中取出B樹的分支號,查找相應(yīng)的葉子結(jié)點來匹配字符串中的下一個詞C,如此循環(huán)直到有一次匹配過程中沒有匹配到或者查詢字符串全部匹配結(jié)束,如果匹配成功,則意味著找到了包含查詢字符串的原文。
[0025]本發(fā)明采用二元內(nèi)相關(guān)后續(xù)樹模型為網(wǎng)頁數(shù)據(jù)創(chuàng)建索引,同時考慮了字索引和詞索引的優(yōu)缺點,在減少索引空間的同時提尚了檢索效率。
【附圖說明】
[0026]圖1為本發(fā)明基于樹形結(jié)構(gòu)的檢索方法的流程圖;
【具體實施方式】
[0027]下面將結(jié)合本發(fā)明的附圖,對本發(fā)明的技術(shù)方案進行清楚、完整地描述。這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發(fā)明相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本發(fā)明的一些方面相一致的裝置和方法的例子。
[0028]首先,對本發(fā)明中用到一些術(shù)語介紹如下:
[0029](1)源文檔庫:源文檔庫是指由網(wǎng)絡(luò)爬蟲從互聯(lián)網(wǎng)上抓取的原始網(wǎng)頁文件集合,用來建立索引為用戶檢索使用,該集合不是靜態(tài)的,根據(jù)抓取的策略或者定期批量更新,或者增量更新,主要以保證系統(tǒng)的時新性為主,即將新出現(xiàn)的網(wǎng)頁盡量及時的抓取過來建立索引,滿足用戶的檢索需求;
[0030](2)預(yù)處理:預(yù)處理是指對抓取的網(wǎng)頁文件進行處理的過程,包括:建立索引網(wǎng)頁庫、網(wǎng)頁信息提取,建立索引網(wǎng)頁庫就是要實現(xiàn)給定一個網(wǎng)頁的URL,在索引網(wǎng)頁庫中能夠找到該URL所對應(yīng)的網(wǎng)頁;網(wǎng)頁信息提取就是從網(wǎng)頁中提取建立索引所需要的文本信息,包括標題、正文等;
[0031](3)文本:源文檔庫經(jīng)過預(yù)處理步驟的網(wǎng)頁信息提取所形成的文本信息的集合,是建立索引的直接對象;
[0032](4)分詞詞典:分詞詞典是分詞操作的基礎(chǔ),是漢語詞匯的集合,用來在分詞時辨別并切分出文本中的單詞;
[0033](5)分詞操作:分詞操作就是將文本切分成詞匯組合的過程,預(yù)處理后的文本和用戶輸入的查詢字符串都是它的操作對象,它能依據(jù)分詞詞典在文本字符串中正確匹配到詞匯,剔除掉停用詞,輸出標引詞或檢索詞的集合;
[0034](6)建立內(nèi)相關(guān)后續(xù)樹索引:該操作就是對文本分詞后形成的標引詞集合建立內(nèi)相關(guān)后續(xù)樹的過程;
[0035](7)詞索引文件:詞索引文件就是上一步操作中生成的索引文件,在詞索引文件中每個標引詞都有一棵以它為根的后續(xù)樹,樹的結(jié)點中包含了標引詞所在文本的編號以及它的后續(xù)信息;
[0036](8)查詢字符串:用戶的查詢需求通常是以字符串的形式來表示的,最簡單的查詢字符串往往是單個的詞,對于較長的查詢字符串,如短語或句子,要進行分詞處理,所采用的分詞算法應(yīng)和對文本使用的分詞算法一致,以保證檢索結(jié)果的準確性;
[0037](9)檢索操作:對于檢索詞的集合根據(jù)內(nèi)相關(guān)后續(xù)樹模型的查找算法,在詞索引文件中進行查找,將匹配到的文本號輸出到結(jié)果集;
[0038](10)結(jié)果集:結(jié)果集是一般是指通過檢索操作所得到的查詢字符串所在的文本號,得到的文本可能是一系列的文檔,這就需要按照一定的信息檢索模型對文檔集合處理,得出相關(guān)程度最大的文檔集合,呈現(xiàn)給用戶。
[0039]內(nèi)相關(guān)后續(xù)樹的相關(guān)定義:
[0040](1)后續(xù):對文本T中的字符串a(chǎn)1&2來說,a2稱為a i的后續(xù),文本T最后一個字符的后續(xù)稱為結(jié)束符,用“#”來表示。后續(xù)的定義是內(nèi)相關(guān)后續(xù)樹模型的基礎(chǔ),文本中總會有相同的字符出現(xiàn),具體來說就是有相同的字或詞,如果某一個索引項a出現(xiàn)了 k次,那么a