金妍
摘要:隨著信息時(shí)代的發(fā)展,加快了數(shù)據(jù)庫技術(shù)與互聯(lián)網(wǎng)技術(shù)的結(jié)合,而且更多的用戶可以通過對(duì)在線數(shù)據(jù)庫的訪問來獲取相關(guān)信息。該文將會(huì)對(duì)數(shù)據(jù)庫關(guān)鍵字查詢清理的基本方法和相關(guān)技術(shù)給予介紹,從而提高用戶關(guān)鍵字查詢的效率和準(zhǔn)確性。
關(guān)鍵詞:數(shù)據(jù)庫;關(guān)鍵字;查詢清理技術(shù)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)12-0003-03
傳統(tǒng)的數(shù)據(jù)庫查詢技術(shù)一般是由程序員來操控的,然后對(duì)用戶所輸入的關(guān)鍵字和相關(guān)條件對(duì)比,最終為用戶提供所需要的結(jié)果,但是該方法所需要花費(fèi)的查詢時(shí)間比較長,為了提高其查詢效率,本文將會(huì)對(duì)數(shù)據(jù)庫關(guān)鍵字查詢清理技術(shù)給予介紹,并對(duì)其相關(guān)實(shí)例給予介紹。
1 數(shù)據(jù)庫關(guān)鍵字查詢綜述
對(duì)于普通用戶而言,為了更好地適應(yīng)時(shí)代發(fā)展步伐,他們開始訪問在線數(shù)據(jù)庫,但是他們對(duì)數(shù)據(jù)庫模式知識(shí)和查詢語言不了解,從而無法進(jìn)行準(zhǔn)確的查詢。與此同時(shí),數(shù)據(jù)庫里存放了大量的數(shù)據(jù)信息,如果沒有一個(gè)簡(jiǎn)便而有效的查詢方法,將會(huì)浪費(fèi)大量的時(shí)間和精力,因此不管是企業(yè)還是個(gè)人都要鼓勵(lì)使用數(shù)據(jù)庫關(guān)鍵字查詢,下面將會(huì)對(duì)數(shù)據(jù)庫關(guān)鍵字查詢方法給予介紹。
1.1基于數(shù)據(jù)圖的方法
大量的研究標(biāo)明,通過數(shù)據(jù)圖的查詢不僅能夠?qū)崿F(xiàn)對(duì)相關(guān)數(shù)據(jù)的查詢,而且還能提高查詢結(jié)果的準(zhǔn)確性。在進(jìn)行數(shù)據(jù)庫關(guān)鍵字查詢過程中,主要包括以下兩個(gè)步驟。首先,將數(shù)據(jù)庫賦予一定的權(quán)重,并轉(zhuǎn)化成相應(yīng)的數(shù)據(jù)圖,隨后對(duì)數(shù)據(jù)圖進(jìn)行物化處理,根據(jù)數(shù)據(jù)圖中所具備的節(jié)點(diǎn)元組和邊元組關(guān)系來實(shí)現(xiàn)關(guān)鍵詞的查詢工作,從而構(gòu)建了一個(gè)最小代價(jià)的簡(jiǎn)化子樹。
一個(gè)數(shù)據(jù)圖G一般包括了兩個(gè)主要的集合,分別是一個(gè)節(jié)點(diǎn)的集合和一個(gè)邊的集合。圖G中又含有結(jié)構(gòu)化節(jié)點(diǎn)和關(guān)鍵詞節(jié)點(diǎn)兩種類型的節(jié)點(diǎn)。關(guān)鍵詞節(jié)點(diǎn)只含有入射邊,而結(jié)構(gòu)化節(jié)點(diǎn)不僅包括了入射邊,同時(shí)還包括了一個(gè)出射邊。因此,僅通過一個(gè)邊是無法完成兩個(gè)關(guān)鍵詞的銜接。圖G中還包括了前向邊(u,v)和后向邊(v,u) 兩種類型,前向邊(u,v) 中,u和v之間一般是借助主外鍵關(guān)聯(lián)進(jìn)行連接的,而后向邊(v,u),與前向邊(u,v)存在一定的相關(guān)性,而且只要圖中具有前向邊(u,v),才能夠形成后向邊(v,u)。實(shí)際上,大部分?jǐn)?shù)據(jù)圖的邊具有單方向的特征,并對(duì)各個(gè)方向上的強(qiáng)弱關(guān)系給予表示。例如在對(duì)主外鍵關(guān)聯(lián)邊進(jìn)行反映過程中,主鍵與外鍵正方向的邊和反方向的邊具備不同的功能。
總的來說,如果數(shù)據(jù)庫中具備了一個(gè)關(guān)鍵詞集合,就能夠進(jìn)行信息的查詢,而整個(gè)查詢過程包括兩個(gè)階段:第一個(gè)階段是完成倒排表關(guān)鍵詞的查找,需要借助節(jié)點(diǎn)ID才能夠完成,該節(jié)點(diǎn)含有一個(gè)或多個(gè)關(guān)鍵詞,又被定義為“關(guān)鍵詞節(jié)點(diǎn)”。第二個(gè)階段是借助圖搜索算法,來查詢與上述關(guān)鍵詞相關(guān)聯(lián)的節(jié)點(diǎn),并對(duì)結(jié)果樹進(jìn)行排序,以供用戶篩選所用。
1.2基于模式圖的方法
該方法一般包含了以下三個(gè)階段。第一個(gè)階段:在數(shù)據(jù)庫模式的基礎(chǔ)上,將所有可能出現(xiàn)的連接表達(dá)式及查詢結(jié)果進(jìn)行一一列出。第二個(gè)階段,按照一定的標(biāo)準(zhǔn)將連接表達(dá)式按照一定的方式向SQL語句進(jìn)行轉(zhuǎn)換,以保證其在數(shù)據(jù)庫上順利執(zhí)行,從而提高數(shù)據(jù)結(jié)果的準(zhǔn)確性。第三個(gè)階段,完成所有可能結(jié)果的排序工作,然后將最終結(jié)果反饋給用戶。在第一個(gè)階段所進(jìn)行的列舉,會(huì)對(duì)表達(dá)式的方式和數(shù)目進(jìn)行限制,對(duì)于過大的表達(dá)式尺寸,將會(huì)增加兩個(gè)元組的距離,這樣就需要增加更多的中間連接,從而導(dǎo)致檢測(cè)結(jié)果失真。
在關(guān)系數(shù)據(jù)庫中,基于模式圖的查詢方法,一般需要通過以下三個(gè)階段才能完成對(duì)關(guān)鍵字的查詢。第一個(gè)階段:將與關(guān)鍵字相關(guān)的候選答案一一列舉出來,而且保證每個(gè)候選答案都擁有單獨(dú)的元組連接樹;第二個(gè)階段,為每個(gè)答案進(jìn)行分析和評(píng)價(jià),并保證與查詢相關(guān)的答案排到所有答案的前邊;第三個(gè)階段,將符合要求的結(jié)果反饋給用戶。以DBXplorer為例,其一般需要通過以下兩個(gè)步驟才能完成查詢過程:(1)發(fā)布:主要是為數(shù)據(jù)庫創(chuàng)建一個(gè)輔助符號(hào)和結(jié)構(gòu)表,使其擁有一定的查詢功能,此外在關(guān)鍵詞查詢過程中符號(hào)表起到了至關(guān)重要的作用,在查詢時(shí)通過符號(hào)表的使用可以對(duì)數(shù)據(jù)庫中關(guān)鍵詞的具體位置給予準(zhǔn)確的判定,從而加快查詢結(jié)果的速度。(2)搜索:其能夠從發(fā)布的數(shù)據(jù)庫中搜尋到自己想要的結(jié)果,但是其一般需要借助系統(tǒng)來完成符號(hào)表的查找工作,從而確定關(guān)鍵詞在數(shù)據(jù)庫中的相關(guān)信息。其次,對(duì)所有連接樹進(jìn)行一一列舉,并且任何一個(gè)連接樹對(duì)于數(shù)據(jù)庫模式圖來說都具有十分重要的意義。最后,為每個(gè)連接樹編寫SQL語句,其不僅可以獲得元組連接樹,而且還可以完成對(duì)連接樹中各個(gè)表的連接操作,并對(duì)所有關(guān)鍵詞的元組連接樹進(jìn)行一一對(duì)應(yīng),然后并對(duì)取進(jìn)行排序,并將最終的排序結(jié)果傳輸給用戶。
2 數(shù)據(jù)庫關(guān)鍵字查詢清理技術(shù)分析
2.1語義矩陣及實(shí)例分析
語義矩陣最初是由Yu和Pu提出來的,是用于數(shù)據(jù)庫中數(shù)據(jù)庫單元和關(guān)鍵字序列中查詢單元的一個(gè)矩陣組合,每一列表示數(shù)據(jù)庫中查詢單元和數(shù)據(jù)庫單元在拼寫上的距離,并按照大小進(jìn)行排序。語義矩陣是數(shù)據(jù)庫關(guān)鍵字查詢清理中比較常用的技術(shù),其一般是借助WordNet的同義詞功能來組建語義方陣,并列舉出與之相關(guān)的語義方陣算法。通過WordNet功能可以完成對(duì)關(guān)鍵字的同義詞進(jìn)行查詢,而且WordNet中所有的關(guān)鍵字同義詞序列會(huì)按照與關(guān)鍵字相似程度進(jìn)行排序。因此,我們就能夠按照WordNet列舉出的同義詞序列來完成語義方陣的構(gòu)建??偟膩碚f,語義方陣構(gòu)建,和語義矩陣的形成具有一定的相似性,其一般是借助關(guān)鍵字序列中所具有的查詢單元來實(shí)現(xiàn)的,而且任何一個(gè)查詢單元都會(huì)由一個(gè)擴(kuò)展單元與其相對(duì)應(yīng),并最終由擴(kuò)展單元組成矩陣。在對(duì)數(shù)據(jù)庫關(guān)鍵字查詢過程中,每個(gè)擴(kuò)展單元的建立,都需要遵循以下幾個(gè)方面的原則:1)在相同的距離下,與在WordNet里提供的查詢單元相比,查詢單元本身具有較高的優(yōu)先級(jí);2)在不同的距離下,如果距離比較下其優(yōu)先級(jí)就會(huì)越高,該過程一般區(qū)分是由查詢單元本身擴(kuò)展出來的還是由查詢單元同義詞擴(kuò)展出來的,而將距離小的擴(kuò)展直接排在前面,來組建查詢單元的單元擴(kuò)展序列。遵循上述原則我們可以將關(guān)鍵字序列中的某個(gè)擴(kuò)展的具體算法進(jìn)行介紹:
1)根據(jù)需求來調(diào)用WordNet的同義詞查詢函數(shù),對(duì)數(shù)據(jù)庫關(guān)鍵字中的每個(gè)同義詞序列進(jìn)行查詢。
2)對(duì)每個(gè)關(guān)鍵字查詢單元所具備的同義詞序列進(jìn)行全面的分析,然后按照擴(kuò)展因子來對(duì)每個(gè)關(guān)鍵字序列的長度n進(jìn)行分析,從而生成單元擴(kuò)展。
3)對(duì)關(guān)鍵字查詢中相同的查詢單元分別擴(kuò)展成與之相對(duì)應(yīng)的擴(kuò)展序列,然后將相似度比較高的擴(kuò)展單元進(jìn)行合并處理,該過程一般要遵循一定的標(biāo)準(zhǔn),即將優(yōu)先級(jí)高的排在最前面。對(duì)于擴(kuò)展單元優(yōu)先級(jí)的確定也要按照一定的規(guī)范進(jìn)行評(píng)估。擴(kuò)展序列的合并也要遵循以下兩個(gè)過程:第一是將前兩個(gè)擴(kuò)展序列進(jìn)行合并,然后將新生成的序列與下一序列進(jìn)行合并。第二是根據(jù)要求生成一個(gè)空白序列,然后按照上述原則要對(duì)每個(gè)序列的優(yōu)先級(jí)進(jìn)行判斷,并將其加入到空白序列中,并將該序列從原來的同義詞序列中刪除。一直這樣下去,直至空白序列被全部填滿為止。
4)將數(shù)據(jù)庫關(guān)鍵字序列中帶有同義詞的擴(kuò)展序列結(jié)合在一起,然后組建成一個(gè)具有同義詞的語義方陣。實(shí)例分析:例如,在進(jìn)行數(shù)據(jù)庫關(guān)鍵字查詢過程中,其中“movie”是關(guān)鍵字,但是在“film”在數(shù)據(jù)庫中也可以表示“電影”, 大多數(shù)的查詢方法并未將兩個(gè)單詞結(jié)合在一起進(jìn)行查詢,這樣一來會(huì)出現(xiàn)數(shù)據(jù)庫中關(guān)鍵字字符不匹配的問題,而且還會(huì)有一部分用戶感興趣與“film”相關(guān)的信息,從而導(dǎo)致大量結(jié)果無法查詢出來。本次分析結(jié)果表明,大部分?jǐn)?shù)據(jù)是從互聯(lián)網(wǎng)上獲取的,主要有電影、音樂等的數(shù)據(jù)庫IMDB。該過程中,最好將IMDB劃分成獨(dú)立的TEXT數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)集測(cè)試。其包括了983920個(gè)元組,并通過JDBC連接Oracle9i,預(yù)處理方法借助JAVA實(shí)現(xiàn),此外還引用了Lucene作為RDBMS的IR引擎。
實(shí)驗(yàn)一:測(cè)試同義詞關(guān)聯(lián)的有效性
在數(shù)據(jù)庫關(guān)鍵字搜索引擎上輸入一個(gè)查詢序列“movie”,就可以獲得如圖1所示。
從上述結(jié)果中可以看出,其結(jié)果中不僅包括了與“movie”相關(guān)的信息結(jié)果,而且還包括了與“movie”同義詞“film”的結(jié)果,從而說明語義矩陣具備了與同義詞向關(guān)聯(lián)的效果。隨后,在數(shù)據(jù)庫關(guān)鍵字搜索引擎中還可以將“movie Bruce Willis” 的查詢序列輸入,這樣就能夠獲得與查詢序列同義詞的結(jié)果,最終結(jié)果如圖2所示。
從圖2中我們同樣可以看到與“movie” 同義詞“film”的查詢結(jié)果,又一次證實(shí)了語義矩陣技術(shù)是有效的,并且能夠查詢到同義詞的。
實(shí)驗(yàn)二:在系統(tǒng)中測(cè)試糾錯(cuò)功能與測(cè)試糾錯(cuò)結(jié)果的有效性密不可分,為了確保該過程的順利進(jìn)行,我們嘗試查詢數(shù)據(jù)庫中的數(shù)據(jù),例如“Brad Pitt”在數(shù)據(jù)庫中對(duì)應(yīng)了某位演員的相關(guān)信息,我們可以故意輸入錯(cuò)誤信息,來測(cè)試其是否能夠查詢到我們希望得到的結(jié)果。因此在數(shù)據(jù)庫關(guān)鍵字搜索引擎上輸入了“Brad Pit”來進(jìn)行查詢,最終查詢結(jié)果如圖3所示。
圖3所示的結(jié)果顯示,“Brad Pit” 的查詢結(jié)果含有與“Brad Pitt”相關(guān)的信息,而且對(duì)“Brad Pit”中存在的錯(cuò)誤地方進(jìn)行了糾正。因此,語義矩陣在數(shù)據(jù)庫關(guān)鍵字查詢中具有糾錯(cuò)功能,以確保最終查詢結(jié)果的準(zhǔn)確性。
2.2 回溯算法及實(shí)驗(yàn)評(píng)估
回溯算法同樣是數(shù)據(jù)庫關(guān)鍵字查詢清理過程中比較常用的一項(xiàng)技術(shù),借助相關(guān)的函數(shù)和響應(yīng)理論,可以得到最優(yōu)分組問題。要想獲取一個(gè)問題的最優(yōu)解就是將與該問題相關(guān)的所有解逐一列舉出來,然后對(duì)所有可能正確的結(jié)果進(jìn)行檢查,隨后就能夠獲得我們所需要的結(jié)果。實(shí)際上,如果候選解數(shù)量有限時(shí),可以對(duì)所有解進(jìn)行一一檢查,從而查找出我們所需要的解,這樣不僅可以提高查詢的效率,而且還能提高查詢的最終結(jié)果。但是,在實(shí)際應(yīng)用過程中,該種方法并未得到我們想要的結(jié)果,因?yàn)樵摲椒ǖ暮蜻x解空間范圍比較大,一般可以達(dá)到指數(shù)級(jí)別,因此通常情況下可以借助回溯算法來實(shí)現(xiàn)關(guān)鍵字的查詢,其可以減少問題求解過程中所需要的時(shí)間。
回溯算法應(yīng)用過程中需要建立一個(gè)解空間,而且每一個(gè)解空間都含有一個(gè)與之對(duì)應(yīng)的解。在數(shù)據(jù)庫關(guān)鍵查詢過程中中,解空間將會(huì)根據(jù)不同的分組給予不同的定義,并且每一個(gè)函數(shù)的調(diào)用都會(huì)得到與之對(duì)應(yīng)的得分,這樣可以便于解能被容易的查詢到。實(shí)際情況下,我們會(huì)采用一個(gè)樹的方法來對(duì)解空間進(jìn)行有效的組織,該方法最重要的部分是樹的延伸及根節(jié)點(diǎn)的選取規(guī)則,而且要求查詢?nèi)藛T對(duì)樹的根節(jié)點(diǎn)進(jìn)行全面的分析和了解。首先對(duì)于序列查詢過濾階段,會(huì)生成一組附帶查詢編碼的查詢序列,然后對(duì)連續(xù)的查詢單元進(jìn)行一一查詢,并將最終的查詢結(jié)果組建一個(gè)查詢?cè)~組的候選。其次通過該候選查詢?cè)~組可以實(shí)現(xiàn)對(duì)相關(guān)數(shù)據(jù)庫詞組的查詢工作??偟膩碚f,就是將所有詞組候選進(jìn)行逐一搜索,并將每個(gè)擴(kuò)展序列中與之相等的擴(kuò)展單元結(jié)合在一起,就形成了一個(gè)新的查詢?cè)~組。最后,還需要對(duì)整個(gè)數(shù)據(jù)庫進(jìn)行查詢,如果得到的查詢結(jié)果與上述查詢結(jié)果一致,就說明該查詢結(jié)果符合用戶需求,可以反饋給用戶。
只要該查詢單元未按照要求進(jìn)行合并,就可以通過一些函數(shù)來組建一個(gè)單獨(dú)的查詢?cè)~組。通過該方法還可以將過濾后的查詢序列來進(jìn)行初步分組,最終形成一個(gè)符合初始化的分組情況,并將其定義成一個(gè)解空間樹的根節(jié)點(diǎn)。在對(duì)每一個(gè)查詢序列進(jìn)行分組時(shí),需要加強(qiáng)與語義矩陣的有效結(jié)合,這樣一來就會(huì)完成不同查詢序列的分組。此外,我們還可以根據(jù)得分函數(shù)來對(duì)每一個(gè)查詢序列分組情況進(jìn)行評(píng)估。通常情況下,在分組情況確定的條件下,如果一個(gè)查詢序列需要選擇一套比較靠前的語義矩陣,而且要選擇那些具備較小擴(kuò)展距離的元素,換句話說,就是語義矩陣中具有較小行號(hào)比的元素,因此我們先調(diào)用得分函數(shù)來對(duì)擴(kuò)展距離的大小進(jìn)行判定,然后該情況下所得到的結(jié)果就是最終查詢序列分組單元。然后再對(duì)剩下的情況進(jìn)行一一對(duì)比,對(duì)比結(jié)果一般是用得分更高分組來取代該分組,否則我們就會(huì)將該分組定義為我們所需要查詢的分組。
解空間樹的延伸規(guī)則主要是借助組合的方法來完成的,并且不同樹的節(jié)點(diǎn)具有與之對(duì)應(yīng)的分組情況,任何一個(gè)節(jié)點(diǎn)的分組情況都能夠找到與之對(duì)應(yīng)的最終的完全查詢序列分組。這樣一來我們能夠完成對(duì)解空間樹的搜索工作,并借助與之相應(yīng)的得分函數(shù)來對(duì)其進(jìn)行評(píng)價(jià),從而找到得分最高的那個(gè)分組,這樣一來就可以確定數(shù)據(jù)庫關(guān)鍵字查詢序列的分組情況。
實(shí)驗(yàn)評(píng)估:本次實(shí)驗(yàn)的配置為一臺(tái)內(nèi)存2GB的PC機(jī),其硬盤SATA7200轉(zhuǎn)80G,PCU英特爾酷睿雙核2.33GHz,操作系統(tǒng)是Windows XP SP3,數(shù)據(jù)庫是Oracle9i。具體操作過程中,一般需要從互聯(lián)網(wǎng)上獲得所分析的數(shù)據(jù),其包括了電影、音樂等的數(shù)據(jù)庫IMDB。該過程中,最好將IMDB劃分成獨(dú)立的TEXT數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)集測(cè)試。其包括了983920個(gè)元組,并通過JDBC連接RDBMS,預(yù)處理方法借助JAVA實(shí)現(xiàn),這樣一來我們就可以通過回溯算法來達(dá)到最終的清理算法。
如圖4描述的是實(shí)驗(yàn)清理前與后時(shí)間對(duì)比關(guān)系。圖4描述了數(shù)據(jù)庫關(guān)鍵字查詢從3逐漸增加到7的變化情況。從圖中我們可以看到相同的查詢序列中,經(jīng)過清理以后的查詢所需要花費(fèi)的時(shí)間明顯低于未經(jīng)過清理的查詢時(shí)間,因此通過對(duì)數(shù)據(jù)庫關(guān)鍵字查詢進(jìn)行清理處理后,可以有效提高其查詢效率。并且查詢序列的長度越長,查詢過程中所需要的時(shí)間就越長,而且呈現(xiàn)出指數(shù)級(jí)增長的趨勢(shì),從而說明處理后的查詢時(shí)間也具有一定的指數(shù)級(jí)增長現(xiàn)象。但是這樣的處理效果,一般在查詢較長序列時(shí),所起到的效果才是最明顯的。
3 結(jié)束語
近些年來,隨著我國互聯(lián)網(wǎng)技術(shù)的發(fā)展,數(shù)據(jù)庫關(guān)鍵字查詢清理技術(shù)得到了廣泛的應(yīng)用,并且相關(guān)技術(shù)的研發(fā)不斷深入,各種新成果不斷涌現(xiàn)。而語義矩陣和回溯算法在數(shù)據(jù)庫關(guān)鍵字查詢清理中應(yīng)用較多,其需要對(duì)查詢序列進(jìn)行有效的清理,只有這樣才能對(duì)其作出有效的查詢,提高查詢確效率,并確保了查詢結(jié)果的準(zhǔn)確性。
參考文獻(xiàn):
[1] 陳廷.數(shù)據(jù)庫關(guān)鍵字查詢清理技術(shù) [J].信息技術(shù)與信息化,2015,3(3):62-63.
[2] 沈文婷.數(shù)據(jù)庫關(guān)鍵字查詢清理技術(shù)研究 [J]. 電腦知識(shí)與技術(shù),2011,14(34):89-90.
[3] 馮麗敏,楊艷,鐘穎莉.基于相關(guān)查詢的關(guān)鍵字搜索優(yōu)化技術(shù)[J]. 計(jì)算機(jī)研究與發(fā)展,2013,5(z1):104-105.