和曉溪
摘要:隨著近些年大數(shù)據(jù)的蓬勃發(fā)展,作為其根基的海量信息數(shù)據(jù)庫(kù)也得到快速的發(fā)展進(jìn)步。全文檢索作為海量信息數(shù)據(jù)庫(kù)中不可缺失的重要檢索技術(shù),不僅幫助用戶在海量信息數(shù)據(jù)庫(kù)上建立起全文索引,還可以幫助用戶快速的對(duì)文本信息進(jìn)行高效的檢索。達(dá)夢(mèng)數(shù)據(jù)庫(kù)是我國(guó)優(yōu)秀的大型高性能數(shù)據(jù)庫(kù)管理系統(tǒng)之一,這款具有完全自主知識(shí)產(chǎn)權(quán)的數(shù)據(jù)庫(kù)系統(tǒng)在高性能、高可用性、高安全性上投入了大量的研究成本。但在此數(shù)據(jù)庫(kù)系統(tǒng)上建立全文索引時(shí)仍存在一些問(wèn)題,如索引膨脹率高,在對(duì)索引進(jìn)行填充時(shí)耗時(shí)較長(zhǎng)等問(wèn)題。全文檢索技術(shù)較為復(fù)雜且綜合性較高,它涉及文本預(yù)處理、文檔解析、分詞技術(shù)等眾多相關(guān)技術(shù)。本文對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行分析,探究分析其系統(tǒng)特性對(duì)全文索引的影響,并根據(jù)當(dāng)下其它全文檢索技術(shù)提出改進(jìn)意見(jiàn),以提高達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索速度。
關(guān)鍵詞:達(dá)夢(mèng)數(shù)據(jù)庫(kù);全文檢索;索引技術(shù);索引空間膨脹
隨著網(wǎng)絡(luò)與計(jì)算機(jī)相關(guān)技術(shù)的高速發(fā)展,人們所生產(chǎn)的數(shù)據(jù)信息也是越來(lái)越多,龐大的數(shù)據(jù)信息在進(jìn)行管理時(shí)就會(huì)發(fā)生查詢上的多種問(wèn)題。查詢速度慢是海量數(shù)據(jù)信息查詢的主要問(wèn)題,因此也應(yīng)運(yùn)而生各種查詢技術(shù)來(lái)提高查詢速度,方便對(duì)海量信息數(shù)據(jù)進(jìn)行管理。全文檢索技術(shù)是其重要檢索技術(shù)之一,它誕生于上世紀(jì)末,當(dāng)時(shí)還在使用簡(jiǎn)單的字符串匹配和簡(jiǎn)單的邏輯檢索技術(shù)來(lái)對(duì)文本進(jìn)行檢索。發(fā)展至今全文檢索技術(shù)的內(nèi)涵由內(nèi)而外的發(fā)散形成新一代信息數(shù)據(jù)管理的代名詞。全文數(shù)據(jù)庫(kù)是全文檢索的主要構(gòu)成部分,達(dá)夢(mèng)數(shù)據(jù)庫(kù)作為國(guó)內(nèi)較為成熟的海量數(shù)據(jù)庫(kù)之一,其通用性、兼容性好等多種特點(diǎn)被廣泛使用,其數(shù)據(jù)系統(tǒng)早已實(shí)現(xiàn)全文檢索等重要功能,但在實(shí)際使用中仍存在一些問(wèn)題?;趯?duì)全文檢索技術(shù)的核心索引技術(shù)和檢索技術(shù),及其關(guān)鍵技術(shù)分詞技術(shù)和壓縮技術(shù)等技術(shù)分析,和相關(guān)產(chǎn)品的特性分析,本文對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索系統(tǒng)中的問(wèn)題進(jìn)行歸納,并提出相關(guān)改進(jìn)方法,為提高達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索功能提出相關(guān)具有參考價(jià)值的建議。
一、相關(guān)技術(shù)
Lucene全文索引檢索引擎工具包。這是一個(gè)使用JAVA語(yǔ)言開(kāi)發(fā)的開(kāi)源的檢索工具包,平臺(tái)的高可移植性使得其被廣泛的使用到各種數(shù)據(jù)庫(kù)應(yīng)用中。該工具包含以下幾個(gè)功能特點(diǎn):在進(jìn)行索引填充維護(hù)索引文件過(guò)程中不斷將新文件的小索引放入原先的大索引中進(jìn)而實(shí)現(xiàn)的檢索速度快;該工具包使用倒排索引對(duì)索引數(shù)據(jù)進(jìn)行存儲(chǔ),并使用基于自己的壓縮方式進(jìn)行壓縮,使得索引空間的占用率低;該工具包在設(shè)計(jì)之初就想到了擴(kuò)展性問(wèn)題,因此使用文檔對(duì)接其相關(guān)接口就可以實(shí)現(xiàn)其不擅長(zhǎng)的中文分詞功能。
Oracle Text是甲骨文公司旗下的Oracle數(shù)據(jù)所使用的全文檢索模塊名。該索引方法有著以下幾種特點(diǎn):對(duì)多語(yǔ)言的支持,且支持的文檔格式也較為全面,此外不僅能夠?qū)Ρ斫⑺饕?,還能對(duì)其他多種索引源進(jìn)行索引的建立;支持并行索引的填充,可根據(jù)并發(fā)線數(shù)將劃分好的分表同時(shí)進(jìn)行操作,提高索引性能;Oracle Text的索引能力極強(qiáng),對(duì)多種索引內(nèi)容如模糊查找、通配符、布爾、詞典等都提供支持且對(duì)混合搜索也有很大的支持。但該種檢索方式的索引空間膨脹率很高。
SQL Server是微軟提供的功能較為簡(jiǎn)單的全文檢索功能,該索引功能提供的特點(diǎn)主要包括以下幾種:其建立索引時(shí)會(huì)將索引文件放在本地目錄中,并對(duì)索引內(nèi)容進(jìn)行像主鍵和非空這樣的嚴(yán)格限制,使得索引文件空間得到嚴(yán)格把控;支持較多的索引格式并能通過(guò)相關(guān)接口辨識(shí)并整合到其全文索引中;其索引的生成過(guò)程可以放到線上,并且使用線上的方式來(lái)對(duì)索引文件進(jìn)行維護(hù)。SQL Server的全文檢索較為簡(jiǎn)單且速度也很普通。
達(dá)夢(mèng)數(shù)據(jù)庫(kù)系統(tǒng)也提供全文檢索功能,且支持多種文本數(shù)據(jù)。其在建立索引的過(guò)程中,對(duì)文本進(jìn)行短句分出較為細(xì)碎的若干個(gè)詞和片段,進(jìn)而實(shí)現(xiàn)對(duì)詞的精確匹配,且不區(qū)分字符的大小寫(xiě)。但該系統(tǒng)的索引空間膨脹率過(guò)高,填充時(shí)間也偏長(zhǎng)。
二、達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索系統(tǒng)中存在的問(wèn)題
要探究達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文索引系統(tǒng)中存在的問(wèn)題,首先要對(duì)其索引機(jī)制進(jìn)行了解。當(dāng)下主流的數(shù)據(jù)庫(kù)索引,都以B/B+樹(shù)作為其主要結(jié)構(gòu)。該方式能夠很好的解決各種量級(jí)的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)檢索的定位速度問(wèn)題,其次對(duì)比外部索引文件的存儲(chǔ)方式,其集合索引文檔來(lái)進(jìn)行數(shù)據(jù)庫(kù)備份的功能和它的文檔糾錯(cuò)能力是其優(yōu)勢(shì)所在。但并非B/B+樹(shù)是完善的技術(shù),它的存儲(chǔ)特性導(dǎo)致它在實(shí)際使用中必須保持固定程度的冗余,因此在對(duì)空間開(kāi)銷上有較大需求。
在達(dá)夢(mèng)數(shù)據(jù)庫(kù)的全文檢索系統(tǒng)中,它使用B+樹(shù)來(lái)存放生成好的倒排索引并用此方法來(lái)管理、增改查倒排索引數(shù)據(jù)。在查找過(guò)程中使用二級(jí)索引來(lái)定位找到已經(jīng)存儲(chǔ)記錄的主關(guān)鍵字,進(jìn)而找到相應(yīng)數(shù)據(jù)記錄。
達(dá)夢(mèng)數(shù)據(jù)庫(kù)的倒排索引表設(shè)計(jì),通常是在文檔為單位的文本文檔中進(jìn)行操作,根據(jù)關(guān)鍵詞斷詞后將分好的N個(gè)詞條存入B+樹(shù)中。如果存在一個(gè)文檔集合,其中文檔數(shù)為P那么它插入到B+樹(shù)中的相異詞的索引數(shù)的個(gè)數(shù)為文檔個(gè)數(shù)在分詞后的個(gè)數(shù)總和。并且達(dá)夢(mèng)數(shù)據(jù)庫(kù)使用鏈和自由塊的方式來(lái)管理B+樹(shù)的空間,導(dǎo)致其在進(jìn)行存儲(chǔ)過(guò)程中要對(duì)鏈做頻繁的插入操作,會(huì)導(dǎo)致空間大幅度增加。在存儲(chǔ)和索引的操作過(guò)程中也會(huì)高頻次的訪問(wèn)B+樹(shù),導(dǎo)致I/O吞吐過(guò)于頻繁,最后增加索引的填充時(shí)間。
達(dá)夢(mèng)數(shù)據(jù)庫(kù)在進(jìn)行分詞的時(shí)候,過(guò)于依賴自己的字典,特別是它的字典的詞庫(kù)類似與微軟辦公文檔的詞,過(guò)于的分散細(xì)碎。導(dǎo)致其在使用中容易將完整的句子通過(guò)簡(jiǎn)短的詞匯分開(kāi)后,產(chǎn)生兩個(gè)完全不通順甚至歧義的句子。此外,由于沒(méi)有噪音詞的過(guò)濾機(jī)制,達(dá)夢(mèng)數(shù)據(jù)庫(kù)在使用中也會(huì)產(chǎn)生過(guò)多冗余不可使用無(wú)意義的信息數(shù)據(jù)。
三、達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索問(wèn)題解決建議
達(dá)夢(mèng)數(shù)據(jù)庫(kù)完全使用B+樹(shù)來(lái)管理索引的填充,而其技術(shù)本身就可以實(shí)現(xiàn)索引合并,因此可從索引合并入手,等到索引數(shù)量達(dá)到上線或期工作停止時(shí),再進(jìn)行索引信息存儲(chǔ)到B+樹(shù)的工作,通過(guò)實(shí)驗(yàn)和進(jìn)行相關(guān)空間和時(shí)間上的計(jì)算,不難得出這種方法有效的減少B+數(shù)的訪問(wèn)次數(shù)和使用空間。
此外,可以對(duì)達(dá)夢(mèng)數(shù)據(jù)庫(kù)全文檢索的倒排索引表結(jié)構(gòu)進(jìn)行重新設(shè)計(jì),在使用詞做為主要索引字段還可以加入其他字段進(jìn)而有利于快速定位到文檔的快排數(shù)據(jù)中,同時(shí)還可以加入文檔表和字典表等,為文檔的擴(kuò)展性和存儲(chǔ)的壓縮都帶來(lái)極大的便利性。
四、結(jié)束語(yǔ)
達(dá)夢(mèng)數(shù)據(jù)庫(kù)管理系統(tǒng)是達(dá)夢(mèng)公司推出的高性能數(shù)據(jù)庫(kù)管理系統(tǒng),在實(shí)際其全文檢索功能使用過(guò)程中存在索引空間膨脹和分詞粒度不夠細(xì)膩等問(wèn)題。本文通過(guò)對(duì)其全文索引使用技術(shù)分析,并借鑒其它全文檢索工具對(duì)其提出索引合并、改進(jìn)索引表結(jié)構(gòu)等建議,并利用空間和時(shí)間復(fù)雜度計(jì)算等技術(shù)進(jìn)行檢驗(yàn)展現(xiàn)改進(jìn)建議的可行性。為達(dá)夢(mèng)數(shù)據(jù)庫(kù)的全文檢索系統(tǒng)提出具有參考價(jià)值的建議。
參考文獻(xiàn)
[1]張瑞.達(dá)夢(mèng)數(shù)據(jù)庫(kù)在人口基礎(chǔ)信息和防汛管理中的應(yīng)用研究[D].2015.
[2]黃小文.基于NoSQL存儲(chǔ)的海量文檔全文檢索系統(tǒng)的研究與實(shí)現(xiàn)[D].2015.
[3]范蕾.基于Lucene的全文檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].Lucene,2015.
[4]李聰穎,王瑞剛,于金良.大數(shù)據(jù)分布式全文檢索系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)與數(shù)字工程,2016(12).
[5]閆海忠.數(shù)據(jù)庫(kù)全文檢索引擎的設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2018,000(002):105-109,142.
[6]王建永,林俊,黃杰韜,等.達(dá)夢(mèng)數(shù)據(jù)庫(kù)中大規(guī)模數(shù)據(jù)可擴(kuò)展并行算法[J].科學(xué)技術(shù)與工程,2019(7):134-138.