吳勝斌
摘要:本文提出一種以關(guān)系數(shù)據(jù)庫作為核心的XML全文檢索系統(tǒng),該系統(tǒng)具備全文檢索功能,能夠進行元素級別的查詢,同時還能夠?qū)?shù)據(jù)庫查詢與全文檢索進行緊密結(jié)合,使其能夠按照元素與文檔的重要程度進行排序。
關(guān)鍵詞:關(guān)系數(shù)據(jù)庫;XML;全文檢索系統(tǒng)
中圖分類號:TP311.1 文獻標識碼:A 文章編號:1007-9416(2017)10-0072-01
社會信息化的發(fā)展使傳統(tǒng)的關(guān)系數(shù)據(jù)庫已經(jīng)難以滿足人們?nèi)找嫣嵘膽眯枨?,而XML的發(fā)展也使其成為數(shù)據(jù)交換的全新標準,這也使人們對XML文檔的查詢開展了大量的研究。當前對XML文檔查詢的研究主要集中在XML文檔的結(jié)構(gòu)化方面,但對于XML關(guān)鍵字的檢索方面仍舊處于初步研究階段。
1 關(guān)系數(shù)據(jù)庫中XML全文檢索系統(tǒng)的研究
1.1 系統(tǒng)架構(gòu)的研究
關(guān)系數(shù)據(jù)庫中XML全文檢索系統(tǒng)的系統(tǒng)架構(gòu)與SQL Server的體系結(jié)構(gòu)類似,其頂層用戶能夠利用Web服務來進行檢索功能,Web服務器會按照用戶檢索時的關(guān)鍵字來進行轉(zhuǎn)換,使其轉(zhuǎn)換成SQL傳輸至服務器后臺,關(guān)系數(shù)據(jù)庫的查詢引擎在檢測到用戶需要進行全文索引時,會從關(guān)系數(shù)據(jù)庫中對XML全文檢索引擎進行調(diào)用,然后用于查詢工作。該系統(tǒng)還能夠?qū)θ臋z索模塊進行調(diào)用,從而構(gòu)建出相應的倒排索引。該系統(tǒng)與SQL Server不同的是,SQL Server會利用進程間通信,而SQL Server系統(tǒng)則是將關(guān)鍵字與數(shù)據(jù)庫查詢進行了結(jié)合。XML全文檢索系統(tǒng)具備以下特點,首先,該系統(tǒng)能夠支持XML全文檢索,對XML文檔的檢索查詢的最高精度能夠達到element級別,并按照文檔級別來按照用戶需求進行選擇。其次,XML全文檢索系統(tǒng)與XRank相比,XML全文檢索系統(tǒng)與數(shù)據(jù)庫查詢引擎實現(xiàn)了緊密的耦合,這也使其能夠適用于復雜內(nèi)容的查詢。再次,該系統(tǒng)能夠使用戶對Rank函數(shù)進行靈活定義,進而達到節(jié)省檢索時間的目的。最后,該系統(tǒng)能夠?qū)OT、AND、OR等多種復雜表達形式的關(guān)鍵詞予以支持,利用關(guān)系數(shù)據(jù)庫便能夠?qū)崿F(xiàn)SQL語句的邏輯運算[1]。
1.2 Dewey ID編碼方式的研究
在傳統(tǒng)的倒排索引當中,其在進行索引時只是對文檔中單詞的位置信息進行了記錄,而XML文檔不僅要對位置信息進行記錄,還要對元素信息進行記錄,因此需要對這些XML文檔中的元素信息進行編碼,編碼方式有很多,但能夠適用于XML全文檢索的只有Dewey ID的研究。Dewey ID編碼方式不僅能夠?qū)υ厮穆窂叫畔⑦M行記錄,還能夠通過不同元素間公共父元素的比較來對最長字符串進行匹配,而這有助于改善多關(guān)鍵字檢索時會將最近的公共父元素當做檢索結(jié)果的問題。在應用Dewey ID編碼方式時,應對其進行擴展,擴展后的第一數(shù)值便是XML文檔的ID。將Dewey ID編碼方式進行倒排是最為簡單的方法,但這樣做會使倒排索引項產(chǎn)生不定長問題,而且需要進行重復存儲。因此,為了解決這一問題,還需要在Dewey ID倒排索引的基礎(chǔ)上再構(gòu)建一層自索引,這樣做能夠有效避免重復存儲問題的出現(xiàn),同時還能夠?qū)υ刂械年P(guān)鍵詞位置進行快速查找[2]。
自索引的建立過程中,由于其在進行掃描時是按照從左向右的方式進行的,新結(jié)構(gòu)的增加也只是在最右邊,而且平面倒排索引的增長方向是從左向右的,因此對于自索引倒排索引的建立相對較為簡單。自索引的倒排建立算法如圖1所示。
該算法需要對所有XML文檔中的元素進行全部掃描。在采用該算法進行全文檢索時,可能存在以下情形,第一種情形是給定的關(guān)鍵字能夠返回全部位置信息,這種情形只需要進行遍歷G就可以;第二種情形是Dewey ID與給定的關(guān)鍵詞返回全部位置信息,這只需要按照Dewey ID的路徑并返回位置信息即可,其代價也只是對相應G與自索引樹的遍歷。第三種情形是文件ID與給定的關(guān)鍵詞返回文件時產(chǎn)生關(guān)鍵詞的全部位置信息,這種情形可以按照文件ID的順序進行掃描就能夠明確后續(xù)文檔的開始。
1.3 與查詢引擎的結(jié)合研究
為了使關(guān)系數(shù)據(jù)庫能夠與查詢引擎實現(xiàn)無縫結(jié)合,索引類型可以參照CoDB中的Btree或Hash進行,即建立一種FTI索引類型,這樣不僅能夠建立索索引,還能夠利用Select語句來實現(xiàn)查詢。CoDB對索引的設(shè)計具有獨到之處,它能夠非常靈活的對新型索引類型進行加入,并且只需要設(shè)置接品函數(shù),并在XML全文檢索系統(tǒng)的注冊表中對函數(shù)進行注入即可。
1.4 重要度計算方式的研究
在系統(tǒng)的重要度計算方式中,應加入衰減率概念,之所以要加入衰減率概念是因為在系統(tǒng)中對XML關(guān)鍵字檢索的定義是將下劃線部分與粗體字全部作為檢索結(jié)果,不過下劃線部分要明顯優(yōu)于粗體字,因此為了使下劃線的重要程度能夠高于粗體字部分,需要加入衰減率概念。其計算方式是將檢索詞的關(guān)鍵字進行找出,然后將ElementA中關(guān)鍵字的權(quán)重進行定義,進而明確衰減率的取值范圍,并在元素中找出關(guān)鍵詞中的各個元素。根據(jù)祖先節(jié)點中詞的重要性是以遞減形式呈現(xiàn)的原則能夠?qū)υ卦跈z索詞的重要度進行計算。關(guān)鍵字的權(quán)重可以按照兩大原則進行計算,其一是Element名字是關(guān)鍵字時的重要度高,其二是出現(xiàn)頻率越高的關(guān)鍵字重要度就越高。利用Rank函數(shù)能夠?qū)λ蠿ML文檔的Rank值進行獲取,并利用Order by語句來排序[3]。
2 關(guān)系數(shù)據(jù)庫中XML全文檢索系統(tǒng)的實現(xiàn)
將關(guān)系數(shù)據(jù)庫中XML全文檢索系統(tǒng)與SQL Server全文檢索系統(tǒng)進行對比,測試集為dblp,測試計算機為內(nèi)存512M、CPU P4 2.0G、硬盤80G,XML全文檢索系統(tǒng)的測試平臺為Linux系統(tǒng),SQL Server全文檢索系統(tǒng)的測試平臺是Windows 2000 Server,對比內(nèi)容為建立索引時間、多關(guān)鍵字索引時間與單關(guān)鍵字索引時間。測試結(jié)果表明XML系統(tǒng)的索引建立時間與SQL Server系統(tǒng)相差不多,但對查詢時間卻遠遠超過SQL Server系統(tǒng)。由此可以證明,關(guān)系數(shù)據(jù)庫中XML全文檢索系統(tǒng)的檢索速度更快,在全文檢索功能上要更加優(yōu)越。
參考文獻
[1]蘇新寧.基于XML的中文全文檢索關(guān)鍵技術(shù)及其發(fā)展——簡評《XML文檔全文檢索的理論與方法》[J].情報科學,2013,(11):155-158.
[2]林子雨,楊冬青,王騰蛟,張東站.基于關(guān)系數(shù)據(jù)庫的關(guān)鍵詞查詢[J].軟件學報,2010,(10):2454-2476.
[3]戴經(jīng)國,李運智,謝東.關(guān)系數(shù)據(jù)庫的關(guān)鍵詞檢索[J].計算機系統(tǒng)應用,2009,(08):37-42.