亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法

文檔序號(hào):6401380閱讀:168來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)應(yīng)用技術(shù)領(lǐng)域,具體地說(shuō)是一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法。
背景技術(shù)
目前,Web應(yīng)用中如何在XML文檔中高效的查詢(xún)是一個(gè)關(guān)鍵問(wèn)題,尤其是路徑表達(dá)式的計(jì)算。在XPath中使用傳統(tǒng)的路徑表達(dá)式來(lái)瀏覽XML文檔的嵌套層次結(jié)構(gòu),而在XQuery查詢(xún)語(yǔ)言中,傳統(tǒng)的路徑表達(dá)式不僅是結(jié)構(gòu)化文檔上的一個(gè)基本操作,而且成為幾乎所有復(fù)雜操作的組成部分,但是這種XML查詢(xún)計(jì)算的方法需要遍歷整個(gè)文檔,效率低下。在現(xiàn)階段,這種傳統(tǒng)的XML查詢(xún)算法以及策略主要存在以下3個(gè)方面的問(wèn)題:
1)這些算法大都是基于先匹配后合并步驟進(jìn)行查詢(xún)匹配處理,缺點(diǎn)是產(chǎn)生了大量無(wú)用的中間結(jié)果,產(chǎn)生了許多無(wú)用的重復(fù)匹配;
2)現(xiàn)在算法存在著傳統(tǒng)索引效率不高的問(wèn)題,導(dǎo)致了查詢(xún)的效率下降比較大;
3)對(duì)查詢(xún)結(jié)果的連接算法存在著輸入集合中的元素必須有序,傳統(tǒng)的索引結(jié)構(gòu)是無(wú)序的,因此會(huì)產(chǎn)生大量不必要的重復(fù)匹配,引起性能的下降。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法。本發(fā)明的目的是按以下方式實(shí)現(xiàn)的,通過(guò)雙層的雙向樹(shù)索引結(jié)構(gòu)HPT在XML中直接找到一個(gè)查詢(xún)模式樹(shù)的匹配結(jié)果,所有的中間結(jié)果集在堆棧中保存起來(lái),最終形成最后的查詢(xún)匹配結(jié)果,以此提高查詢(xún)匹配的成功概率,達(dá)到了快速響應(yīng)用戶(hù)需求的目的,具體內(nèi)容如下:
兩層的HPT雙向樹(shù)索引結(jié)構(gòu),HPT是High-Performance-Tree的英文縮寫(xiě),HPT雙向樹(shù)索引結(jié)構(gòu),包括組層和元素層,元素層提供詳細(xì)的子節(jié)點(diǎn)到父節(jié)點(diǎn)的連接,能夠方便的找到相關(guān)節(jié)點(diǎn)的父節(jié)點(diǎn),因此雙向樹(shù)索引結(jié)構(gòu)HPT是一種能夠處理XML結(jié)構(gòu)查詢(xún)的快速索引,組層內(nèi)的元素索引是基于組的,這樣方便結(jié)構(gòu)查詢(xún)時(shí)根據(jù)組進(jìn)行,去掉多余的查詢(xún)空間,減少匹配次數(shù)能夠提高效率和方便查詢(xún),傳統(tǒng)的路徑索引方法是同一個(gè)組內(nèi)元素是無(wú)序的,而雙向樹(shù)索引結(jié)構(gòu)HPT是把具有相同路徑信息的節(jié)點(diǎn)放到一個(gè)組內(nèi),也就是說(shuō),如果兩個(gè)節(jié)點(diǎn)是等同的,在該索引結(jié)構(gòu)中就把它們放到一個(gè)組內(nèi),這樣就能大大的提高XML數(shù)據(jù)的查詢(xún)效率,HPT索引結(jié)構(gòu)的定義及具體實(shí)現(xiàn)方式如下:
HPT中的每個(gè)節(jié)點(diǎn)g稱(chēng)為一個(gè)組,每個(gè)組的信息包括標(biāo)識(shí)符g.1d和組名稱(chēng)g.name,查詢(xún)匹配時(shí),根據(jù)查詢(xún)模式樹(shù)中節(jié)點(diǎn)名稱(chēng)和g.name進(jìn)行匹配,第一,每個(gè)組包括一個(gè)元素?cái)?shù)組g.Pid□,在組中用一個(gè)數(shù)組保存組中元素的父節(jié)點(diǎn)信息,第二,HPT中邊是有方向的,假設(shè)有邊gl—〉g2,那么組gl叫做組g2的父組,組g2叫做組gl的子組;第三,組g中數(shù)組g.pid[]的索引下標(biāo)為k的數(shù)值表示組g中的第(k+1)個(gè)元素,g.Pid[k]的值表示組中第(k+1)個(gè)元素的父節(jié)點(diǎn)在組g的父組中的數(shù)組的索引位置;為了提高查詢(xún)效率,減少匹配次數(shù)采用HPM模式樹(shù)匹配方法進(jìn)行查詢(xún)模式樹(shù)的匹配,HPM是High-Performance-Match的英文縮寫(xiě),HPM模式樹(shù)匹配方法如下:
設(shè)定查詢(xún)HPM模式樹(shù)節(jié)點(diǎn)q和XML數(shù)據(jù)源中節(jié)點(diǎn)P,如果q是葉子節(jié)點(diǎn),且節(jié)點(diǎn)P和節(jié)點(diǎn)q標(biāo)記相同,則稱(chēng)P和q相匹配;如果q是非葉子節(jié)點(diǎn),同時(shí)存在節(jié)點(diǎn)p和以p為根結(jié)點(diǎn)的子樹(shù)和查詢(xún)模式樹(shù)中節(jié)點(diǎn)q以及以q為根結(jié)點(diǎn)的子樹(shù)相匹配,那么P和q相匹配,在HPM模式樹(shù)匹配方法中,對(duì)查詢(xún)模式樹(shù)中的每一個(gè)節(jié)點(diǎn),設(shè)計(jì)一個(gè)棧和一個(gè)列表,棧用來(lái)存儲(chǔ)和查詢(xún)模式樹(shù)節(jié)點(diǎn)相匹配的數(shù)據(jù)源中的節(jié)點(diǎn)集合,列表存儲(chǔ)的是查詢(xún)模式樹(shù)對(duì)應(yīng)的HPT中組P中的元素?cái)?shù)組,Gpacurrent表示目前正在匹配的組中的節(jié)點(diǎn),該方法的基本實(shí)現(xiàn)流程為:給一個(gè)查詢(xún)模式樹(shù)和生成的數(shù)據(jù)源HPT,首先調(diào)用廣度優(yōu)先算法把查詢(xún)模式樹(shù)中的節(jié)點(diǎn)壓棧,然后在棧上調(diào)用HPM模式樹(shù)匹配方法,在數(shù)據(jù)源中找到與查詢(xún)模式樹(shù)中節(jié)點(diǎn)相匹配的節(jié)點(diǎn),并且把結(jié)果存儲(chǔ)在堆棧中,最后調(diào)用函數(shù)把中間結(jié)果連接起來(lái)得到與查詢(xún)模式樹(shù)相匹配的節(jié)點(diǎn)集合;
HPM模式樹(shù)匹配算法的具體實(shí)現(xiàn)方式如下:
首先利用廣度優(yōu)先對(duì)查詢(xún)模式樹(shù)進(jìn)行遍歷,然后對(duì)遍歷到的節(jié)點(diǎn)壓棧,得到查詢(xún)模式樹(shù)棧S,HPM式樹(shù)匹配算法是用來(lái)查找查詢(xún)模式樹(shù)棧S在XML數(shù)據(jù)源中相匹配的節(jié)點(diǎn),在HPM式樹(shù)匹配算法中,對(duì)應(yīng)一個(gè)查詢(xún)模式樹(shù)的q節(jié)點(diǎn),Sq.value表示棧Sq中Gq.value的值集合,它表示棧Sq中元素的父節(jié)點(diǎn)在父組中的位置,再HPM模式樹(shù)匹配算法判斷查詢(xún)模式樹(shù)節(jié)點(diǎn)q是不是葉子節(jié)點(diǎn);
判斷方法如下,首先將查詢(xún)模式樹(shù)節(jié)點(diǎn)q出棧,如果q是葉子節(jié)點(diǎn),那么在數(shù)據(jù)源中對(duì)應(yīng)的組Gq中節(jié)點(diǎn)都和q相匹配,則需要把組q中所有節(jié)點(diǎn)都放入棧Sq ;如果q不是葉子節(jié)點(diǎn),需要首先查找節(jié)點(diǎn)q的所有子節(jié)點(diǎn)qi(i=0,…N-1)和子節(jié)點(diǎn)數(shù)目N,然后遍歷與查詢(xún)節(jié)點(diǎn)q相匹配的組Gq,對(duì)組的每一個(gè)節(jié)點(diǎn)Gq_>Current進(jìn)行匹配,判斷節(jié)點(diǎn)Gq->Current是否存在N個(gè)子節(jié)點(diǎn)分別和qi匹配,如果存在,說(shuō)明當(dāng)前節(jié)點(diǎn)Gq_>Current滿足以q為根結(jié)點(diǎn)的查詢(xún)模式樹(shù)分支匹配,則把節(jié)點(diǎn)對(duì)(Gq_>Current, Gq->Current.value)放入棧Sq中,HPM式樹(shù)匹配算法執(zhí)行后, 所有滿足子匹配的節(jié)點(diǎn)都放入對(duì)應(yīng)的棧中。本發(fā)明的有益效果是:針對(duì)XML讀取訪問(wèn)等方面存在的問(wèn)題提出了一種靈活的模式樹(shù)匹配算法HPM,該算法基于文中設(shè)計(jì)的一種兩層的雙向樹(shù)索引結(jié)構(gòu)HP T(High-Performance-Tree),能夠在XML文檔中直接找到一個(gè)查詢(xún)模式樹(shù)的匹配結(jié)果,不會(huì)產(chǎn)生無(wú)用的中間結(jié)果集,然后將中間結(jié)果集保存在堆棧中,然后通過(guò)連接運(yùn)算形成最后的查詢(xún)匹配結(jié)果,提高了查詢(xún)匹配的成功概率。


圖1是一個(gè)簡(jiǎn)單的XML文檔拓?fù)浣Y(jié)構(gòu)示例 圖2是傳統(tǒng)索引結(jié)構(gòu) 圖3是HPT索引結(jié)構(gòu)示例 圖4是HPM查詢(xún)模式樹(shù);
圖5是HPM堆棧示意 圖6是查詢(xún)模式樹(shù)中間匹配棧結(jié)構(gòu)示意 圖7是匹配結(jié)果棧結(jié)構(gòu)示例圖。
具體實(shí)施例方式本發(fā)明中兩層的雙向樹(shù)索引結(jié)構(gòu)HPT的主要實(shí)現(xiàn)思路為:
HPT是本文中設(shè)計(jì)的一種兩層的雙向樹(shù)索引結(jié)構(gòu),包括組層和元素層,該索引結(jié)構(gòu)是一個(gè)兩層樹(shù)結(jié)構(gòu),組層可以提供一個(gè)簡(jiǎn)單的結(jié)構(gòu)關(guān)系,元素層提供詳細(xì)的子節(jié)點(diǎn)到父節(jié)點(diǎn)的連接,能夠方便的找到相關(guān)節(jié)點(diǎn)的父節(jié)點(diǎn),因此HPT是一種能夠處理XML結(jié)構(gòu)查詢(xún)的快速索弓I。組層內(nèi)的元素索引是基于組的,這樣方便結(jié)構(gòu)查詢(xún)時(shí)根據(jù)組進(jìn)行,可以去掉多余的查詢(xún)空間,減少匹配次數(shù)能夠提高效率和方便查詢(xún)。HPT與傳統(tǒng)的路徑索引方法的同一個(gè)組內(nèi)元素是無(wú)序的相比,HPT索引把具有相同路徑信息的節(jié)點(diǎn)放到一個(gè)組內(nèi)。也就是說(shuō),如果兩個(gè)節(jié)點(diǎn)是等同的,在該索引結(jié)構(gòu)中就把它們放到一個(gè)組內(nèi),這樣就可以大大的提高XML數(shù)據(jù)的查詢(xún)效率。本發(fā)明中HPM模式樹(shù)匹配算法的主要實(shí)現(xiàn)思路為:
HPM模式樹(shù)匹配算法是本專(zhuān)利中為提高查詢(xún)效率設(shè)計(jì)的一個(gè)算法。我們?cè)O(shè)定查詢(xún)模式樹(shù)節(jié)點(diǎn)q和XML數(shù)據(jù)源中節(jié)點(diǎn)p,如果q是葉子節(jié)點(diǎn),且節(jié)點(diǎn)P和節(jié)點(diǎn)q標(biāo)記相同,則稱(chēng)P和q相匹配;如果q是非葉子節(jié)點(diǎn),同時(shí)存在節(jié)點(diǎn)P和以P為根結(jié)點(diǎn)的子樹(shù)和查詢(xún)模式樹(shù)中節(jié)點(diǎn)q以及以q為根結(jié)點(diǎn)的子樹(shù)相匹配,那么P和q相匹配。在HPM算法中,對(duì)查詢(xún)模式樹(shù)中的每一個(gè)節(jié)點(diǎn),我們?cè)O(shè)計(jì)了一個(gè)棧和一個(gè)列表,棧用來(lái)存儲(chǔ)和查詢(xún)模式樹(shù)節(jié)點(diǎn)相匹配的數(shù)據(jù)源中的節(jié)點(diǎn)集合,列表存儲(chǔ)的是查詢(xún)模式樹(shù)對(duì)應(yīng)的HPT中組p中的元素?cái)?shù)組。Gpacurrent表示目前正在匹配的組中的節(jié)點(diǎn)。該算法基本實(shí)現(xiàn)流程為:給一個(gè)查詢(xún)模式樹(shù)和生成的數(shù)據(jù)源HPT,首先調(diào)用廣度優(yōu)先算法把查詢(xún)模式樹(shù)中的節(jié)點(diǎn)壓棧,然后在棧上調(diào)用HPM方法,在數(shù)據(jù)源中找到與查詢(xún)模式樹(shù)中節(jié)點(diǎn)相匹配的節(jié)點(diǎn),并且把結(jié)果存儲(chǔ)在堆棧中,最后調(diào)用函數(shù)把中間結(jié)果連接起來(lái)得到與查詢(xún)模式樹(shù)相匹配的節(jié)點(diǎn)集合。本發(fā)明中涉及的HPT索引結(jié)構(gòu)的主要定義及實(shí)現(xiàn)方式如下:HPT中的每個(gè)節(jié)點(diǎn)g稱(chēng)為一個(gè)組,每個(gè)組的信息包括標(biāo)識(shí)符g.1d和組名稱(chēng)g.name,查詢(xún)匹配時(shí),根據(jù)查詢(xún)模式樹(shù)中節(jié)點(diǎn)名稱(chēng)和g.name進(jìn)行匹配,例如,1: a。每個(gè)組包括一個(gè)元素?cái)?shù)組g.p id □,在組中用一個(gè)數(shù)組保存組中元素的父節(jié)點(diǎn)信息,第二,HPT中邊是有方向的,假設(shè)有邊gl—〉g2,那么組gl叫做組g2的父組,組g2叫做組gl的子組;第三,組g中數(shù)組g.pid口的索引下標(biāo)為k的數(shù)值表示組g中的第(k+1)個(gè)元素,g.Pid[k]的值表示組中第(k+1)個(gè)元素的父節(jié)點(diǎn)在組g的父組中的數(shù)組的索引位置。
實(shí)施例利用HPT索引可以解決高效查詢(xún)問(wèn)題,它用數(shù)組索引表示元素信息和利用數(shù)組的值指向父元素。圖2中HPT索引結(jié)構(gòu)給出了 XML數(shù)據(jù)樹(shù)(圖1)的HPT表示T。在T中,保存的是Id的相對(duì)信息。例如,組2中的節(jié)點(diǎn)3、7、13、15在HPT中被轉(zhuǎn)化為O、1、2、3,通過(guò)這些相對(duì)位置可以直接映射為數(shù)組索引,HPT中的每個(gè)組g都和一個(gè)數(shù)組相關(guān)聯(lián),表示為T(mén).grps[g].pid[]。數(shù)組中的索引k表示一個(gè)節(jié)點(diǎn),簡(jiǎn)稱(chēng)為node-k,并且值T.grps[g].pid[k]指向父節(jié)點(diǎn)。比如,在查詢(xún)條件a/c[d and e]中,查詢(xún)條件是找到滿足條件父節(jié)點(diǎn)為a和包含子節(jié)點(diǎn)d和e的a節(jié)點(diǎn)。在圖2中包括數(shù)組索引1、2和3,則滿足條件的節(jié)點(diǎn)就是node-1 node-2 node-3,通過(guò)HPT索引結(jié)構(gòu),能夠提高查詢(xún)速率。
本發(fā)明中涉及的模式樹(shù)匹配算法HPM的主要實(shí)現(xiàn)方式如下:
HPM算法首先利用廣度優(yōu)先對(duì)查詢(xún)模式樹(shù)進(jìn)行遍歷,然后對(duì)遍歷到的節(jié)點(diǎn)壓棧,得到查詢(xún)模式樹(shù)棧S。例如,對(duì)圖3中查詢(xún)模式樹(shù)遍歷之后壓棧為圖3。HPM方法是用來(lái)查找查詢(xún)模式樹(shù)棧S在XML數(shù)據(jù)源中相匹配的節(jié)點(diǎn)。在HPM該方法中,對(duì)應(yīng)一個(gè)查詢(xún)模式樹(shù)的q節(jié)點(diǎn),Sq.value表示棧Sq中Gq.value的值集合,它表示棧Sq中元素的父節(jié)點(diǎn)在父組中的位置。IsLeaf (q)方法判斷查詢(xún)模式樹(shù)節(jié)點(diǎn)q是不是葉子節(jié)點(diǎn)。下面詳細(xì)說(shuō)明HPM(S)方法,首先將查詢(xún)模式樹(shù)節(jié)點(diǎn)q出棧,如果q是葉子節(jié)點(diǎn),那么在數(shù)據(jù)源中對(duì)應(yīng)的組Gq中節(jié)點(diǎn)都和q相匹配,則需要把組q中所有節(jié)點(diǎn)都放入棧Sq ;如果q不是葉子節(jié)點(diǎn),需要首先查找節(jié)點(diǎn)q的所有子節(jié)點(diǎn)qi(i=0,…N_l)和子節(jié)點(diǎn)數(shù)目N,然后遍歷與查詢(xún)節(jié)點(diǎn)q相匹配的組Gq,對(duì)組的每一個(gè)節(jié)點(diǎn)Gq->Current進(jìn)行匹配,判斷節(jié)點(diǎn)Gq->Current是否存在N個(gè)子節(jié)點(diǎn)分別和qi匹配,如果存在,說(shuō)明當(dāng)前節(jié)點(diǎn)Gq->Current滿足以q為根結(jié)點(diǎn)的查詢(xún)模式樹(shù)分支匹配,則把節(jié)點(diǎn)對(duì)(Gq_>Current, Gq->Current.value)放入棧Sq中。方法HPM()執(zhí)行后,所有滿足子匹配的節(jié)點(diǎn)都放入對(duì)應(yīng)的棧中。例如,查詢(xún)模式樹(shù)(圖3)在數(shù)據(jù)源(圖2)執(zhí)行HPM方法后子匹配結(jié)果為圖4所示。然后把棧中的子節(jié)點(diǎn)匹配結(jié)果連接起來(lái),得到在數(shù)據(jù)源和查詢(xún)模式樹(shù)相匹配的節(jié)點(diǎn)序列如圖4所示,整個(gè)HPM算法執(zhí)行結(jié)束,一共在數(shù)據(jù)源中得到4個(gè)匹配結(jié)果。如果需要得到查詢(xún)模式樹(shù)的子樹(shù)其它匹配,也可以直接通過(guò)圖4,調(diào)用合適的連接運(yùn)算,得到匹配結(jié)果,不必要再重新執(zhí)行一次算法HPM。除說(shuō)明書(shū)所 述的技術(shù)特征外,均為本專(zhuān)業(yè)技術(shù)人員的已知技術(shù)。
權(quán)利要求
1.一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法,其特征在于通過(guò)雙層的雙向樹(shù)索引結(jié)構(gòu)HPT在XML中直接找到一個(gè)查詢(xún)模式樹(shù)的匹配結(jié)果,所有的中間結(jié)果集在堆棧中保存起來(lái),最終形成最后的查詢(xún)匹配結(jié)果,以此提高查詢(xún)匹配的成功概率,達(dá)到了快速響應(yīng)用戶(hù)需求的目的,具體內(nèi)容如下: 兩層的HPT雙向樹(shù)索引結(jié)構(gòu),HPT是High-Performance-Tree的英文縮寫(xiě),HPT雙向樹(shù)索引結(jié)構(gòu),包括組層和元素層,元素層提供詳細(xì)的子節(jié)點(diǎn)到父節(jié)點(diǎn)的連接,能夠方便的找到相關(guān)節(jié)點(diǎn)的父節(jié)點(diǎn),因此雙向樹(shù)索引結(jié)構(gòu)HPT是一種能夠處理XML結(jié)構(gòu)查詢(xún)的快速索引,組層內(nèi)的元素索引是基于組的,這樣方便結(jié)構(gòu)查詢(xún)時(shí)根據(jù)組進(jìn)行,去掉多余的查詢(xún)空間,減少匹配次數(shù)能夠提高效率和方便查詢(xún),傳統(tǒng)的路徑索引方法是同一個(gè)組內(nèi)元素是無(wú)序的,而雙向樹(shù)索引結(jié)構(gòu)HPT是把具有相同路徑信息的節(jié)點(diǎn)放到一個(gè)組內(nèi),也就是說(shuō),如果兩個(gè)節(jié)點(diǎn)是等同的,在該索引結(jié)構(gòu)中就把它們放到一個(gè)組內(nèi),這樣就能大大的提高XML數(shù)據(jù)的查詢(xún)效率,HPT索引結(jié)構(gòu)的定義及具體實(shí)現(xiàn)方式如下: HPT雙向樹(shù)索引結(jié)構(gòu)中的每個(gè)節(jié)點(diǎn)g稱(chēng)為一個(gè)組,每個(gè)組的信息包括標(biāo)識(shí)符g.1d和組名稱(chēng)g.name,查詢(xún)匹配時(shí),根據(jù)查詢(xún)模式樹(shù)中節(jié)點(diǎn)名稱(chēng)和g.name進(jìn)行匹配,第一,每個(gè)組包括一個(gè)元素?cái)?shù)組g.Pid□,在組中用一個(gè)數(shù)組保存組中元素的父節(jié)點(diǎn)信息,第二,HPT中邊是有方向的,假設(shè)有邊gl—〉g2,那么組gl叫做組g2的父組,組g2叫做組gl的子組;第三,組g中數(shù)組g.pid[]的索引下標(biāo)為k的數(shù)值表示組g中的第(k+1)個(gè)元素,g.Pid[k]的值表示組中第(k+1)個(gè)元素的父節(jié)點(diǎn)在組g的父組中的數(shù)組的索引位置; 為了提高查詢(xún)效率,減少匹配次數(shù)采用HPM模式樹(shù)匹配方法進(jìn)行查詢(xún)模式樹(shù)的匹配,HPM是High-Performance-Match的英文縮寫(xiě),HPM模式樹(shù)匹配方法如下: 設(shè)定查詢(xún)HPM模式樹(shù)節(jié)點(diǎn)q和XML數(shù)據(jù)源中節(jié)點(diǎn)P,如果q是葉子節(jié)點(diǎn),且節(jié)點(diǎn)P和節(jié)點(diǎn)q標(biāo)記相同,則稱(chēng)P和q相匹配;如果q是非葉子節(jié)點(diǎn),同時(shí)存在節(jié)點(diǎn)p和以p為根結(jié)點(diǎn)的子樹(shù)和查詢(xún)模式樹(shù)中節(jié)點(diǎn)q以及以q為根結(jié)點(diǎn)的子樹(shù)相匹配,那么P和q相匹配,在HPM模式樹(shù)匹配方法中, 對(duì)查詢(xún)模式樹(shù)中的每一個(gè)節(jié)點(diǎn),設(shè)計(jì)一個(gè)棧和一個(gè)列表,棧用來(lái)存儲(chǔ)和查詢(xún)模式樹(shù)節(jié)點(diǎn)相匹配的數(shù)據(jù)源中的節(jié)點(diǎn)集合,列表存儲(chǔ)的是查詢(xún)模式樹(shù)對(duì)應(yīng)的HPT中組P中的元素?cái)?shù)組,Gpacurrent表示目前正在匹配的組中的節(jié)點(diǎn),該方法的基本實(shí)現(xiàn)流程為:給一個(gè)查詢(xún)模式樹(shù)和生成的數(shù)據(jù)源HPT,首先調(diào)用廣度優(yōu)先算法把查詢(xún)模式樹(shù)中的節(jié)點(diǎn)壓棧,然后在棧上調(diào)用HPM模式樹(shù)匹配方法,在數(shù)據(jù)源中找到與查詢(xún)模式樹(shù)中節(jié)點(diǎn)相匹配的節(jié)點(diǎn),并且把結(jié)果存儲(chǔ)在堆棧中,最后調(diào)用函數(shù)把中間結(jié)果連接起來(lái)得到與查詢(xún)模式樹(shù)相匹配的節(jié)點(diǎn)集合; HPM模式樹(shù)匹配算法的具體實(shí)現(xiàn)方式如下: 首先利用廣度優(yōu)先對(duì)查詢(xún)模式樹(shù)進(jìn)行遍歷,然后對(duì)遍歷到的節(jié)點(diǎn)壓棧,得到查詢(xún)模式樹(shù)棧S,HPM式樹(shù)匹配算法是用來(lái)查找查詢(xún)模式樹(shù)棧S在XML數(shù)據(jù)源中相匹配的節(jié)點(diǎn),在HPM式樹(shù)匹配算法中,對(duì)應(yīng)一個(gè)查詢(xún)模式樹(shù)的q節(jié)點(diǎn),Sq.value表示棧Sq中Gq.value的值集合,它表示棧Sq中元素的父節(jié)點(diǎn)在父組中的位置,再HPM模式樹(shù)匹配算法判斷查詢(xún)模式樹(shù)節(jié)點(diǎn)q是不是葉子節(jié)點(diǎn); 判斷方法如下,首先將查詢(xún)模式樹(shù)節(jié)點(diǎn)q出棧,如果q是葉子節(jié)點(diǎn),那么在數(shù)據(jù)源中對(duì)應(yīng)的組Gq中節(jié)點(diǎn)都和q相匹配,則需要把組q中所有節(jié)點(diǎn)都放入棧Sq ;如果q不是葉子節(jié)點(diǎn),需要首先查找節(jié)點(diǎn)q的所有子節(jié)點(diǎn)qi(i=0,…N-1)和子節(jié)點(diǎn)數(shù)目N,然后遍歷與查詢(xún)節(jié)點(diǎn)q相匹配的組Gq,對(duì)組的每一個(gè)節(jié)點(diǎn)Gq_>Current進(jìn)行匹配,判斷節(jié)點(diǎn)Gq->Current是否存在N個(gè)子節(jié)點(diǎn)分別和qi匹配,如果存在,說(shuō)明當(dāng)前節(jié)點(diǎn)Gq_>Current滿足以q為根結(jié)點(diǎn)的查詢(xún)模式樹(shù)分支匹配,則把節(jié)點(diǎn)對(duì)(Gq_>Current, Gq->Current.value)放入棧Sq中,HPM式樹(shù)匹配算法執(zhí) 行后,所有滿足子匹配的節(jié)點(diǎn)都放入對(duì)應(yīng)的棧中。
全文摘要
本發(fā)明提供一種基于XML的Web數(shù)據(jù)快速查詢(xún)方法,在現(xiàn)在Web領(lǐng)域,對(duì)數(shù)據(jù)的快速查找和響應(yīng)成為影響用戶(hù)使用的重要指標(biāo),而大部分的Web的數(shù)據(jù)是以XML提供的文檔結(jié)構(gòu)來(lái)實(shí)現(xiàn)的,針對(duì)XML匹配等方面存在的問(wèn)題提出了一種靈活的模式樹(shù)匹配方法HPM(High-Performance-Match),該方法能夠在XML中直接找到一個(gè)查詢(xún)模式樹(shù)的匹配結(jié)果,所有的中間結(jié)果集在堆棧中保存起來(lái),通過(guò)連接運(yùn)算很好的形成最后的查詢(xún)匹配結(jié)果,提高了查詢(xún)匹配的成功概率,達(dá)到了快速響應(yīng)用戶(hù)需求的目的。
文檔編號(hào)G06F17/30GK103186674SQ201310112178
公開(kāi)日2013年7月3日 申請(qǐng)日期2013年4月2日 優(yōu)先權(quán)日2013年4月2日
發(fā)明者張硯波 申請(qǐng)人:浪潮電子信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1