欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

結(jié)構(gòu)化文檔管理設(shè)備、搜索設(shè)備、存儲(chǔ)和搜索方法及程序的制作方法

文檔序號(hào):6630562閱讀:231來(lái)源:國(guó)知局
專利名稱:結(jié)構(gòu)化文檔管理設(shè)備、搜索設(shè)備、存儲(chǔ)和搜索方法及程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種具有層級(jí)邏輯結(jié)構(gòu)的結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)。
背景技術(shù)
存在不同方案的結(jié)構(gòu)化文檔管理系統(tǒng),用于存儲(chǔ)并搜索由例如可擴(kuò)展的標(biāo)注語(yǔ)言(XML)寫成的結(jié)構(gòu)化文檔數(shù)據(jù)。
(1)一種用于將結(jié)構(gòu)化文檔數(shù)據(jù)作為文本文件數(shù)據(jù)管理的簡(jiǎn)單方案在這種方案中,當(dāng)所述數(shù)據(jù)數(shù)量或大小增加時(shí),存儲(chǔ)器的效率可能降低,或者其可能變得難以利用結(jié)構(gòu)化文檔的特性來(lái)執(zhí)行搜索。
(2)用于將結(jié)構(gòu)化文檔數(shù)據(jù)存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)(RDB)中的方案。
(3)用于利用為管理結(jié)構(gòu)化文檔數(shù)據(jù)而開發(fā)的面向?qū)ο蟮臄?shù)據(jù)庫(kù)(OODB)執(zhí)行管理的方案。
RDB廣泛地使用的在基本系統(tǒng)中。而且,作為擴(kuò)展RDB的XML使能的RDB是可利用的。由于RDB以平面表格形式存儲(chǔ)數(shù)據(jù),它們要求能夠?qū)蛹?jí)結(jié)構(gòu)的XML數(shù)據(jù)對(duì)應(yīng)到表格的復(fù)雜的映射。由于這種映射,所述性能可能降低,除非對(duì)于表格預(yù)先設(shè)計(jì)滿意的圖表。
除了上述提到的方案(1至3),近來(lái)已經(jīng)建議了新的方案。
(4)用于簡(jiǎn)單地管理結(jié)構(gòu)化文檔數(shù)據(jù)的方案在這種方案中,不用任何特殊的映射處理來(lái)存儲(chǔ)具有不同層級(jí)結(jié)構(gòu)的XML數(shù)據(jù)。因此,在數(shù)據(jù)的存儲(chǔ)或獲取期間不存在特殊的開銷。而且,這個(gè)方案不需要成本高的預(yù)設(shè)計(jì)圖表,這使XML數(shù)據(jù)的結(jié)構(gòu)可以根據(jù)商業(yè)環(huán)境中的變化而容易地變化。
即使結(jié)構(gòu)化文檔數(shù)據(jù)是有效存儲(chǔ)的,如果沒有用于獲取所存儲(chǔ)的數(shù)據(jù)的手段也是沒有意義的。查詢語(yǔ)言作為用于獲取所存儲(chǔ)數(shù)據(jù)的手段而存在。如同在RDB領(lǐng)域的結(jié)構(gòu)化查詢語(yǔ)言(SQL),定義了XML查詢語(yǔ)言(XQuery)。XQuery是用于將XML數(shù)據(jù)作為數(shù)據(jù)庫(kù)操作的語(yǔ)言。提供了用于獲取、收集和/或分析符合條件的數(shù)據(jù)集。而且,由于XML數(shù)據(jù)具有層級(jí)結(jié)構(gòu),其中諸如父/子和兄弟的元素被結(jié)合,提供了用于遵循所述結(jié)構(gòu)的手段。
例如,KOKAI申請(qǐng)的公開號(hào)為No.2002-34618與No.2000-57163的日本專利,公開了一種用于遵循所存儲(chǔ)的結(jié)構(gòu)化文檔數(shù)據(jù)的層級(jí)結(jié)構(gòu)的技術(shù),以搜索包括由搜索條件指定的特定元素和結(jié)構(gòu)的結(jié)構(gòu)化文檔數(shù)據(jù)。
通常,保存在數(shù)據(jù)庫(kù)中的結(jié)構(gòu)化文檔數(shù)據(jù)的規(guī)模越大、結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)量越大,搜索條件越復(fù)雜,跟隨包括在每一個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的層級(jí)結(jié)構(gòu)內(nèi)的元素的處理越多的時(shí)間。而且,由于所存儲(chǔ)的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)量和每一個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的尺寸的增加,變得不可能處理在存儲(chǔ)器內(nèi)的數(shù)據(jù)項(xiàng),由此其中多數(shù)是保存在諸如硬盤的輔助存儲(chǔ)器中。
在用于簡(jiǎn)單管理結(jié)構(gòu)化文檔數(shù)據(jù)的方案中,所述結(jié)構(gòu)化文檔數(shù)據(jù)的元素的層級(jí)結(jié)構(gòu)是直接存儲(chǔ)的。因此,為了檢查是否具有由搜索條件指定的元素或結(jié)構(gòu),必須頻繁地訪問保存在輔助存儲(chǔ)器中的結(jié)構(gòu)化文檔數(shù)據(jù)的元素。對(duì)于更加復(fù)雜的搜索條件來(lái)說(shuō)也是相同的。
在引用的現(xiàn)有技術(shù)中,當(dāng)具有期望元素或結(jié)構(gòu)的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)是從存儲(chǔ)有具有層級(jí)結(jié)構(gòu)的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)據(jù)庫(kù)中檢索的時(shí),在遍歷數(shù)據(jù)庫(kù)內(nèi)的每一個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的層級(jí)結(jié)構(gòu)的元素時(shí),使用搜索條件搜索。因此,高速搜索是不可能的。所要搜索的每一個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的尺寸越大、結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)量越大、搜索條件越復(fù)雜,提高搜索處理的速度越困難。

發(fā)明內(nèi)容
按照以上描述的情況展開了本發(fā)明,目的是提供一種結(jié)構(gòu)化文檔管理設(shè)備以及能夠以高速搜索結(jié)構(gòu)化文檔數(shù)據(jù)的搜索設(shè)備。
根據(jù)本發(fā)明的第一方面,提供了一種結(jié)構(gòu)化文檔管理設(shè)備,包括存儲(chǔ)有多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)據(jù)存儲(chǔ)器,每一個(gè)數(shù)據(jù)項(xiàng)包括多個(gè)元素;存儲(chǔ)包括多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu)的公共結(jié)構(gòu)存儲(chǔ)器,所述多個(gè)結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi);被配置來(lái)獲取新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的第一獲取單元;被配置來(lái)將所述公共結(jié)構(gòu)更新為包括所述結(jié)構(gòu)和包括在所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)多個(gè)結(jié)構(gòu)的新公共結(jié)構(gòu)的更新單元;被配置為獲取所述新公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu)的第二獲取單元;存儲(chǔ)所述差分結(jié)構(gòu)的差分結(jié)構(gòu)存儲(chǔ)器;以及配置為將所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述數(shù)據(jù)存儲(chǔ)器里的存儲(chǔ)單元,所述數(shù)組是基于所述差分結(jié)構(gòu)排列的。
根據(jù)本發(fā)明的第二方面,提供了一種搜索設(shè)備,包括存儲(chǔ)有多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的存儲(chǔ)器,每一個(gè)數(shù)據(jù)項(xiàng)包括多個(gè)元素;被配置來(lái)獲取用于搜索包括在所述元素內(nèi)的期望的元素的搜索條件的獲取單元;以及被配置來(lái)從搜索包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索所期望的元素的搜索單元,所述搜索單元包括被配置來(lái)基于在所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)的重構(gòu)單元,所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu),還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);以及被配置來(lái)從所述重構(gòu)的結(jié)構(gòu)中檢測(cè)所期望的元素的檢測(cè)單元。
根據(jù)本發(fā)明的第三方面,提供了一種方法,包括將新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)存儲(chǔ)到存儲(chǔ)有多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的存儲(chǔ)器里,每一個(gè)數(shù)據(jù)項(xiàng)包括多個(gè)元素;獲取包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu);獲取所述公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu);以及將所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述存儲(chǔ)器里,所述數(shù)組是基于所述新的差分結(jié)構(gòu)排列的。
根據(jù)本發(fā)明的第四方面,提供了一種方法,包括從搜索包括在多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索所期望的元素,每一個(gè)數(shù)據(jù)項(xiàng)包括多個(gè)元素;基于在所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu),所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu),還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);以及從所述重構(gòu)的結(jié)構(gòu)中檢測(cè)期望的元素。
根據(jù)本發(fā)明的第五方面,提供了一種存儲(chǔ)在由計(jì)算機(jī)讀取的媒質(zhì)中的程序,所述程序包括用于指示計(jì)算機(jī)存儲(chǔ)每一個(gè)都包括多個(gè)元素的多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的裝置,通過(guò)所述程序指令存儲(chǔ)新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng);用于指示計(jì)算機(jī)獲取包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)和新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu)的裝置;用于指示計(jì)算機(jī)獲取所述公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu)的裝置;以及用于指示計(jì)算機(jī)將所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述存儲(chǔ)器里的裝置,所述數(shù)組是基于所述新的差分結(jié)構(gòu)排列的。
根據(jù)本發(fā)明的第六方面,提供了一種在由計(jì)算機(jī)讀取的媒質(zhì)中存儲(chǔ)的程序,所述程序包括用于指示計(jì)算機(jī)存儲(chǔ)每一個(gè)都包括多個(gè)元素的多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的裝置,所述程序用作從包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索所期望的元素的搜索設(shè)備;用于基于所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)的裝置,所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu),還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);以及用于指示計(jì)算機(jī)從所述重構(gòu)的結(jié)構(gòu)中檢測(cè)所期望元素的裝置。


圖1是說(shuō)明按照本發(fā)明實(shí)施例的結(jié)構(gòu)化文檔管理系統(tǒng)的功能配置例子的視圖;圖2是說(shuō)明服務(wù)器的硬件配置例子的視圖;圖3是說(shuō)明結(jié)構(gòu)化文檔數(shù)據(jù)的例子(文檔A)的視圖;圖4是說(shuō)明結(jié)構(gòu)化文檔數(shù)據(jù)的另一個(gè)例子(文檔B)的視圖;圖5是說(shuō)明結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)的視圖;圖6是說(shuō)明所述文檔A的文檔樹的視圖;圖7是說(shuō)明所述文檔A的結(jié)構(gòu)化數(shù)據(jù)的視圖;圖8是說(shuō)明公共結(jié)構(gòu)化數(shù)據(jù)例子的視圖;圖9是說(shuō)明指示在圖8的公共結(jié)構(gòu)化數(shù)據(jù)和文檔A之間差異的第一差分結(jié)構(gòu)的視圖;圖10是說(shuō)明指示在圖8的公共結(jié)構(gòu)化數(shù)據(jù)和文檔A之間差異的第二差分結(jié)構(gòu)的視圖;圖11是說(shuō)明所述文檔B的文檔樹的視圖;圖12是說(shuō)明所述文檔B的結(jié)構(gòu)化數(shù)據(jù)的視圖;圖13是說(shuō)明另一個(gè)公共結(jié)構(gòu)化數(shù)據(jù)例子的視圖;圖14是說(shuō)明指示在圖13的公共結(jié)構(gòu)化數(shù)據(jù)和文檔B之間差異的第一差分結(jié)構(gòu)的視圖;圖15是說(shuō)明指示在圖13的公共結(jié)構(gòu)化數(shù)據(jù)和文檔B之間差異的第二差分結(jié)構(gòu)的視圖;圖16是說(shuō)明差分結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)裝置例子的視圖;圖17是說(shuō)明文檔對(duì)象記錄(數(shù)組)的存儲(chǔ)裝置例子的視圖;圖18是有利于解釋結(jié)構(gòu)化數(shù)據(jù)提取處理的流程圖;圖19是有利于解釋公共結(jié)構(gòu)注冊(cè)處理的流程圖;圖20是有利于解釋差分結(jié)構(gòu)注冊(cè)處理的流程圖;圖21是有利于解釋差分結(jié)構(gòu)注冊(cè)處理的另一個(gè)流程圖;圖22是說(shuō)明結(jié)構(gòu)化文檔數(shù)據(jù)的另一個(gè)例子(文檔C)的視圖;圖23是說(shuō)明所述文檔C的文檔樹的視圖;
圖24是說(shuō)明所述文檔C的數(shù)據(jù)結(jié)構(gòu)的視圖;圖25是說(shuō)明指示在圖13的公共結(jié)構(gòu)化數(shù)據(jù)和文檔C之間差異的第一差分結(jié)構(gòu)的視圖;圖26是說(shuō)明指示在圖13的公共結(jié)構(gòu)化數(shù)據(jù)和文檔C之間差異的第二差分結(jié)構(gòu)的視圖;圖27是說(shuō)明差分結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)裝置例子的視圖;圖28是有利于解釋文檔對(duì)象存儲(chǔ)處理的流程圖;圖29是說(shuō)明保存在索引數(shù)據(jù)存儲(chǔ)裝置中的索引數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)的示意圖;圖30是說(shuō)明文檔對(duì)象記錄(數(shù)組)的存儲(chǔ)裝置例子的視圖;圖31是說(shuō)明查詢數(shù)據(jù)例子的視圖;圖32是有利于解釋搜索處理單元的操作的概要的流程圖;圖33是有利于解釋結(jié)構(gòu)化掃描單元的操作的流程圖;圖34是說(shuō)明從圖31的查詢數(shù)據(jù)獲取的查詢圖表的視圖;圖35是有利于解釋基于圖34的查詢圖表的搜索處理的視圖;圖36是說(shuō)明結(jié)果數(shù)據(jù)例子的視圖;圖37是說(shuō)明另一個(gè)查詢數(shù)據(jù)例子的視圖;圖38是說(shuō)明從圖37的查詢數(shù)據(jù)獲取的查詢圖表的視圖;圖39是有利于解釋基于圖38的查詢圖表的搜索處理的視圖;以及圖40是說(shuō)明另一個(gè)結(jié)果數(shù)據(jù)例子的視圖。
具體實(shí)施例方式
本發(fā)明的實(shí)施例將參照附圖來(lái)描述。
圖1是說(shuō)明按照本發(fā)明實(shí)施例的結(jié)構(gòu)化文檔管理系統(tǒng)的功能結(jié)構(gòu)例子的視圖。如所示,所述結(jié)構(gòu)化文檔管理系統(tǒng)基本上包括客戶機(jī)201和服務(wù)器101。當(dāng)從所述客戶機(jī)201接收儲(chǔ)存數(shù)據(jù)或搜索數(shù)據(jù)的請(qǐng)求時(shí),所述服務(wù)器101執(zhí)行相對(duì)應(yīng)的處理。
所述客戶機(jī)201主要包括結(jié)構(gòu)化文檔注冊(cè)單元202、搜索單元203、輸入單元204和輸出單元205。由諸如鍵盤和鼠標(biāo)的輸入裝置形成的輸入單元204用來(lái)輸入結(jié)構(gòu)化文檔和多種指令。所述結(jié)構(gòu)化文檔注冊(cè)單元202用來(lái)將例如預(yù)先存儲(chǔ)在與客戶機(jī)201結(jié)合的存儲(chǔ)器內(nèi)的結(jié)構(gòu)化文檔存儲(chǔ)到結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)(結(jié)構(gòu)化文檔DB)111中。所述結(jié)構(gòu)化文檔注冊(cè)單元202將存儲(chǔ)請(qǐng)求連同所要存儲(chǔ)的結(jié)構(gòu)化文檔發(fā)送以所述服務(wù)器101。
根據(jù)由用戶通過(guò)所述輸入單元204輸入的指令,所述搜索單元203產(chǎn)生查詢數(shù)據(jù)并且將包括所述查詢數(shù)據(jù)的搜索請(qǐng)求發(fā)送到所述服務(wù)器101,所述查詢數(shù)據(jù)例如包括為了所期望的數(shù)據(jù)而搜索所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111的搜索條件。而且,所述搜索單元203接收從所述服務(wù)器101返回的對(duì)應(yīng)于所述搜索請(qǐng)求的結(jié)果數(shù)據(jù),并且將其顯示在所述輸出單元205上。
所述服務(wù)器101包括請(qǐng)求處理單元102、存儲(chǔ)處理單元103和搜索處理單元104。而且,所述服務(wù)器101連接到所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111。所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111包括公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112、差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113、索引數(shù)據(jù)存儲(chǔ)裝置114、文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115。
所述請(qǐng)求處理單元102判斷從所述客戶機(jī)201發(fā)送的請(qǐng)求是否是存儲(chǔ)請(qǐng)求或搜索請(qǐng)求,將所判斷的請(qǐng)求分配到所述存儲(chǔ)處理單元103或搜索處理單元104,以及將所述存儲(chǔ)處理單元103或搜索處理單元104的處理結(jié)果返回到所述客戶機(jī)201。
所述存儲(chǔ)處理單元103從所述客戶機(jī)201接收存儲(chǔ)請(qǐng)求,以及將從所述客戶機(jī)201來(lái)的結(jié)構(gòu)化文檔存儲(chǔ)到所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111中。所述存儲(chǔ)處理單元103包括文檔數(shù)據(jù)分析單元31、結(jié)構(gòu)化數(shù)據(jù)提取單元32、公共結(jié)構(gòu)注冊(cè)單元33、差分結(jié)構(gòu)注冊(cè)單元34和文檔對(duì)象存儲(chǔ)單元35。
所述文檔數(shù)據(jù)分析單元31分析從所述請(qǐng)求處理單元102發(fā)送的每一個(gè)結(jié)構(gòu)化文檔的結(jié)構(gòu)?;谒龇治鼋Y(jié)果,所述結(jié)構(gòu)化數(shù)據(jù)提取單元32提取所述結(jié)構(gòu)化文檔的(文檔)結(jié)構(gòu)化數(shù)據(jù)。所述差分結(jié)構(gòu)注冊(cè)單元34將保存在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中的所述結(jié)構(gòu)化數(shù)據(jù)和所述公共結(jié)構(gòu)化數(shù)據(jù)之間的差異存儲(chǔ)到所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中。所述公共結(jié)構(gòu)注冊(cè)單元33更新保存在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中的公共結(jié)構(gòu)化數(shù)據(jù)。
所述文件對(duì)象存儲(chǔ)單元35將結(jié)構(gòu)化文檔數(shù)據(jù)存儲(chǔ)到所述文件對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中、還將用于檢測(cè)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)中項(xiàng)的位置的索引數(shù)據(jù)存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中。由所述文檔數(shù)據(jù)分析單元31分析的對(duì)應(yīng)于結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的每一個(gè)元素(節(jié)點(diǎn))的對(duì)象數(shù)據(jù),是基于從所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)提取的差分結(jié)構(gòu)化數(shù)據(jù)的次序來(lái)存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里的。
所述搜索處理單元104從所述客戶機(jī)201接收搜索請(qǐng)求,在所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111中檢測(cè)相應(yīng)于在所述請(qǐng)求中指定的條件(查詢數(shù)據(jù))的數(shù)據(jù),以及返回作為檢測(cè)結(jié)果數(shù)據(jù)的所檢測(cè)的數(shù)據(jù)到所述客戶機(jī)201。所述搜索處理單元104基本上包括查詢數(shù)據(jù)分析單元41、查詢執(zhí)行單元42和結(jié)果產(chǎn)生單元46。所述查詢執(zhí)行單元42包括結(jié)構(gòu)掃描單元43、索引掃描單元44和數(shù)據(jù)聯(lián)接單元45。
所述查詢數(shù)據(jù)分析單元41分析從所述請(qǐng)求處理單元102發(fā)送的查詢數(shù)據(jù)的結(jié)構(gòu)?;谒龇治鼋Y(jié)果,所述查詢執(zhí)行單元42利用所述結(jié)構(gòu)掃描單元43和索引掃描單元44,查閱存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中的公共結(jié)構(gòu)化數(shù)據(jù)、存儲(chǔ)在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中的差分結(jié)構(gòu)化數(shù)據(jù)和存儲(chǔ)在所述索引數(shù)據(jù)存儲(chǔ)裝置114中的索引數(shù)據(jù)。所述查詢執(zhí)行單元42然后利用所述數(shù)據(jù)聯(lián)接單元45聯(lián)接所述參照結(jié)果。
基于從所述數(shù)據(jù)聯(lián)接單元45獲取的數(shù)據(jù),所述結(jié)果產(chǎn)生單元46從所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115讀取對(duì)象數(shù)據(jù),以及產(chǎn)生與包含于所述查詢數(shù)據(jù)中的條件相同的數(shù)據(jù)。
圖2示出了所述服務(wù)器101的硬件配置例子。如所示,總線1連接到通信I/F(接口)單元2、便攜式記錄媒質(zhì)驅(qū)動(dòng)單元3、顯示單元4、輸入單元5、輸出單元6、運(yùn)算單元(CPU)7、外部存儲(chǔ)單元8以及存儲(chǔ)器9。在圖2的配置中,所述總線1還連接到在圖1中出現(xiàn)的所述結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)111。
用于實(shí)現(xiàn)所述請(qǐng)求處理單元102、存儲(chǔ)處理單元103和搜索處理單元104的功能的程序,預(yù)先存儲(chǔ)在圖2中示出的外部存儲(chǔ)單元8中,以及從那里讀取到所述存儲(chǔ)器9以被運(yùn)行。
圖3示出了結(jié)構(gòu)化文檔數(shù)據(jù)的例子??蓴U(kuò)展標(biāo)注語(yǔ)言(XML)是作為用以表示結(jié)構(gòu)化文檔的典型語(yǔ)言來(lái)示范。在圖3中示出的文檔(文檔A)是由XML寫成的。在XML中,結(jié)構(gòu)化文檔的每一個(gè)組成部分稱作“元素”,每一個(gè)元素使用標(biāo)記來(lái)編寫。特別地,每一個(gè)元素是通過(guò)在兩個(gè)標(biāo)記之間插入文本數(shù)據(jù)來(lái)表示,也就是一個(gè)標(biāo)記(開始標(biāo)記)指示每一個(gè)元素的開始,一個(gè)標(biāo)記(結(jié)束標(biāo)記)指示每一個(gè)元素的結(jié)束。保持在所述開始和結(jié)束標(biāo)記之間的文本數(shù)據(jù)是包括在由所述開始和結(jié)束標(biāo)記表示的一個(gè)元素中的文本元素(文本節(jié)點(diǎn))。
在圖3的例子中,保持在標(biāo)記<書>和</書>之間的元素包括根元素以及保持在<標(biāo)題>和</標(biāo)題>之間、在<作者>和</作者>之間、和在<摘要>和</摘要>之間的三個(gè)子元素。保持在<標(biāo)題>和</標(biāo)題>之間的子元素包括文本元素“數(shù)據(jù)庫(kù)”。而且,保持在<作者>和</作者>之間的子元素包括兩個(gè)子元素,每一個(gè)子元素保持在<作者>和</作者>之間。
圖4示出了所述結(jié)構(gòu)化文檔數(shù)據(jù)的另一個(gè)例子,其類似于圖3的例子。在圖3和4中示出的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的不同在于,在后者中,所述結(jié)構(gòu)化文檔數(shù)據(jù)(文檔B)包括三個(gè)<作者>元素、以及代替<摘要>元素的<關(guān)鍵詞>元素。
例如在XML中表示的結(jié)構(gòu)化文檔具有以下特點(diǎn)它們是層級(jí)數(shù)據(jù)模型;它們可以包含相同的元素;它們包含按次序排列的元素;以及它們可以或可以不具有圖表。
圖5邏輯上示出了結(jié)構(gòu)化文檔數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),其具有形式為節(jié)點(diǎn)和弧線(arc)的樹狀結(jié)構(gòu)。多個(gè)結(jié)構(gòu)化文檔是使用作為根的節(jié)點(diǎn)“根”而存儲(chǔ)為一個(gè)結(jié)構(gòu)化文檔的一部分。
節(jié)點(diǎn)“書夾”作為所述根節(jié)點(diǎn)“根”的子節(jié)點(diǎn)而存在。在節(jié)點(diǎn)“書夾”下面,存在有在圖3和4中示出的文檔A和B的各自的子樹。
在圖5的情況下,使用“文件夾”和“文檔”的概念。特別地,所述節(jié)點(diǎn)“根”和“書夾”被認(rèn)為是文件夾,多個(gè)文檔(在這種情況下,兩個(gè)文檔A和B)存在于所述文件夾下面。
實(shí)際上,每一個(gè)節(jié)點(diǎn)(包括每個(gè)文本節(jié)點(diǎn))是作為用于在所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中的對(duì)象數(shù)據(jù)的文件而保持的。稱作對(duì)象ID(OID)的標(biāo)識(shí)符分配給每個(gè)節(jié)點(diǎn)(包括每個(gè)文本節(jié)點(diǎn))。在圖5中,為了簡(jiǎn)化說(shuō)明,OID由數(shù)字表示。任何期望的對(duì)象數(shù)據(jù)可以通過(guò)指定其OID來(lái)獲取。實(shí)際上,每個(gè)OID包含有作為分配給包括每個(gè)節(jié)點(diǎn)(包括每個(gè)文本節(jié)點(diǎn))的結(jié)構(gòu)化文檔的標(biāo)識(shí)符的文檔ID、以及指示在所述結(jié)構(gòu)化文檔的存儲(chǔ)區(qū)中的存儲(chǔ)槽位置的存儲(chǔ)槽ID,所述結(jié)構(gòu)化文檔是相應(yīng)于每個(gè)節(jié)點(diǎn)的對(duì)象數(shù)據(jù)的結(jié)構(gòu)化文檔。
對(duì)應(yīng)于各自節(jié)點(diǎn)的對(duì)象的屬性包括諸如子節(jié)點(diǎn)OID和父節(jié)點(diǎn)OID、相關(guān)弧線的信息,還包括標(biāo)記名稱。
(存儲(chǔ))現(xiàn)在參照?qǐng)D6至10,將簡(jiǎn)短地描述當(dāng)在圖3中示出的文檔A存儲(chǔ)到所述結(jié)構(gòu)化文檔DB 111里時(shí)執(zhí)行的所述存儲(chǔ)處理單元103的操作。這里假定所述文檔A是存儲(chǔ)在所述結(jié)構(gòu)化文檔DB 111中的第一個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)。在這種情況下,還不存在公共的結(jié)構(gòu)化數(shù)據(jù)。
為接收從所述客戶機(jī)201發(fā)出的存儲(chǔ)所述文檔A的請(qǐng)求時(shí),首先,所述文檔數(shù)據(jù)分析單元31分析所述文檔A的結(jié)構(gòu),由此輸出文檔樹,其位于作為根節(jié)點(diǎn)的節(jié)點(diǎn)“書”下面,如圖6所示。這種處理可以使用由公眾已知的編譯程序和編譯程序工具代表的結(jié)構(gòu)分析技術(shù)來(lái)實(shí)現(xiàn),諸如Yacc和Lex。
所述結(jié)構(gòu)化數(shù)據(jù)提取單元32從如圖6中示出的這種文檔樹中獲取如圖7中示出的這種結(jié)構(gòu)化數(shù)據(jù)。所述公共結(jié)構(gòu)注冊(cè)單元33從圖7中示出的公共結(jié)構(gòu)獲取如圖8中示出的這種公共結(jié)構(gòu),以及將其存儲(chǔ)到所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112里。所述公共結(jié)構(gòu)表示在所存儲(chǔ)的結(jié)構(gòu)化文檔中通常采用的結(jié)構(gòu)。如圖8所示,在所述公共結(jié)構(gòu)中,具有相同標(biāo)記名稱的多個(gè)兄弟節(jié)點(diǎn)由一個(gè)節(jié)點(diǎn)代表。注意到在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中,用于公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“根”是作為根節(jié)點(diǎn)而最初產(chǎn)生的,其統(tǒng)率表示所述公共結(jié)構(gòu)化數(shù)據(jù)的樹。
所述差分結(jié)構(gòu)注冊(cè)單元34獲取與所述結(jié)構(gòu)有關(guān)的信息,也就是獲取如圖10所示的這種差分結(jié)構(gòu)化數(shù)據(jù)(第二差分結(jié)構(gòu)化數(shù)據(jù)),所述結(jié)構(gòu)包括在圖7所示文檔A的結(jié)構(gòu)化數(shù)據(jù)中、而不是包括在圖8所示的公共結(jié)構(gòu)化數(shù)據(jù)中。在這種實(shí)施例中,為了獲取所述第二差分結(jié)構(gòu)化數(shù)據(jù),將獲取如圖9所示的這種第一差分結(jié)構(gòu)化數(shù)據(jù)。在以下說(shuō)明中,如果僅僅指示包括在所述第一和第二差分結(jié)構(gòu)化數(shù)據(jù)中的第二差分結(jié)構(gòu)化數(shù)據(jù),其可以簡(jiǎn)單地稱為“差分結(jié)構(gòu)化數(shù)據(jù)”。
所述文檔A的結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“作者們”包括兩個(gè)節(jié)點(diǎn)“作者”。也就是,存在相同的子結(jié)構(gòu)(子樹)。然而,由于這種重復(fù)結(jié)構(gòu)是從所述公共結(jié)構(gòu)排除的,其可以寫成如圖10所示的第二差分結(jié)構(gòu)化數(shù)據(jù)。
在所述第二差分結(jié)構(gòu)化數(shù)據(jù)中,如果在結(jié)構(gòu)化數(shù)據(jù)的某個(gè)節(jié)點(diǎn)下面重復(fù)地檢測(cè)到相同子樹(部分或全部的相同子樹),則將指示所述子樹檢測(cè)的數(shù)量的信息將作為屬性信息增加到所述特定節(jié)點(diǎn),并且僅使用一個(gè)子樹來(lái)表示相同的子樹,如圖10所示。在這種情況下,如果存在不一定包括在相同子樹中的節(jié)點(diǎn)(不定節(jié)點(diǎn)),則將指示所述節(jié)點(diǎn)是不定節(jié)點(diǎn)的標(biāo)志“?”將作為屬性信息附加到所述節(jié)點(diǎn)。
所述公共結(jié)構(gòu)化數(shù)據(jù)覆蓋至此存儲(chǔ)的多個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng),而對(duì)于所存儲(chǔ)的每個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)存在一個(gè)差分結(jié)構(gòu)化數(shù)據(jù)項(xiàng)。而且,當(dāng)存儲(chǔ)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)時(shí),如果此數(shù)據(jù)項(xiàng)包含有不包括在當(dāng)前公共結(jié)構(gòu)化數(shù)據(jù)內(nèi)的節(jié)點(diǎn),所述節(jié)點(diǎn)將增加到所述公共結(jié)構(gòu)化數(shù)據(jù)。因此,簡(jiǎn)單地增加了所述公共結(jié)構(gòu)化數(shù)據(jù)大小。
用于識(shí)別的節(jié)點(diǎn)ID分配給存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中公共結(jié)構(gòu)化數(shù)據(jù)的各個(gè)節(jié)點(diǎn)。在圖8所示的公共結(jié)構(gòu)情況下,節(jié)點(diǎn)ID“T0”指示根節(jié)點(diǎn),節(jié)點(diǎn)ID“T1”到“T7”分配給另一個(gè)節(jié)點(diǎn)。也就是,當(dāng)存儲(chǔ)所述文檔A時(shí),用于去獲取差分結(jié)構(gòu)化數(shù)據(jù)的公共結(jié)構(gòu)化數(shù)據(jù)包含具有節(jié)點(diǎn)ID“T0”至“T7”的節(jié)點(diǎn)。當(dāng)增加了其它結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)時(shí),新的節(jié)點(diǎn)將增加到所述公共結(jié)構(gòu)化數(shù)據(jù)。指示所述增加次序的新的節(jié)點(diǎn)ID將附加到所述新的節(jié)點(diǎn)。在所述實(shí)施例中,為了區(qū)分作為時(shí)標(biāo)的公共結(jié)構(gòu)化數(shù)據(jù),所述公共結(jié)構(gòu)化數(shù)據(jù)的最后節(jié)點(diǎn)ID將與所述差分結(jié)構(gòu)化數(shù)據(jù)一起存儲(chǔ)在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中。
所述文檔A的差分結(jié)構(gòu)化數(shù)據(jù)與用來(lái)獲取所述差分結(jié)構(gòu)化數(shù)據(jù)的公共結(jié)構(gòu)化數(shù)據(jù)的最后節(jié)點(diǎn)ID“T7”一起存儲(chǔ)在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中,該存儲(chǔ)是例如圖16所示的“ManagementT7[1][1][2*][1][1][1]”的數(shù)據(jù)組的形式。
基于在圖10中所示的差分結(jié)構(gòu)化數(shù)據(jù),所述文檔對(duì)象存儲(chǔ)單元35將排列的對(duì)象數(shù)據(jù)項(xiàng)存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里,所述對(duì)象數(shù)據(jù)項(xiàng)對(duì)應(yīng)于所述文檔樹的各個(gè)節(jié)點(diǎn)(包括文本節(jié)點(diǎn))。所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115具有用于存儲(chǔ)各個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的多個(gè)存儲(chǔ)區(qū),每個(gè)存儲(chǔ)區(qū)分成多個(gè)存儲(chǔ)槽。每個(gè)存儲(chǔ)槽具有指示其位置的存儲(chǔ)槽ID,以及用來(lái)存儲(chǔ)對(duì)應(yīng)于每個(gè)存儲(chǔ)區(qū)的結(jié)構(gòu)化文檔數(shù)據(jù)的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)。存儲(chǔ)在一個(gè)存儲(chǔ)區(qū)中的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)被稱作文檔對(duì)象記錄。所述文檔對(duì)象記錄是形成所述結(jié)構(gòu)化文檔數(shù)據(jù)的多個(gè)元素的數(shù)組。所述數(shù)組元素的位置信息項(xiàng)對(duì)應(yīng)于各自的存儲(chǔ)槽ID。
如圖17所示,在存儲(chǔ)文檔(也就是文檔A)的存儲(chǔ)區(qū)中,首先存儲(chǔ)對(duì)應(yīng)于所述公共結(jié)構(gòu)化數(shù)據(jù)的各個(gè)節(jié)點(diǎn)的對(duì)象數(shù)據(jù)項(xiàng),然后順序存儲(chǔ)在所述文檔樹中的不定節(jié)點(diǎn)或文本節(jié)點(diǎn)。所述對(duì)象數(shù)據(jù)項(xiàng)是以從所述差分結(jié)構(gòu)化數(shù)據(jù)的左邊節(jié)點(diǎn)開始的次序、以及以從所述差分結(jié)構(gòu)化數(shù)據(jù)的最高級(jí)節(jié)點(diǎn)開始的次序存儲(chǔ)的。
將給出當(dāng)將圖4的文檔B存儲(chǔ)到所述結(jié)構(gòu)化文檔DB 111中時(shí)、執(zhí)行的所述存儲(chǔ)處理單元103的操作的簡(jiǎn)短說(shuō)明。更具體地說(shuō),將給出其中在圖8中所示的公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)到所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112里的情況的說(shuō)明。
當(dāng)接收從所述客戶機(jī)201發(fā)出的存儲(chǔ)所述文檔B的請(qǐng)求時(shí),所述文檔數(shù)據(jù)分析單元31分析所述文檔B的結(jié)構(gòu),由此輸出文檔樹,其位于作為根節(jié)點(diǎn)的節(jié)點(diǎn)“書”下面,如圖11所示。
所述結(jié)構(gòu)化數(shù)據(jù)提取單元32從如圖11中所示的這種文檔樹中獲取如圖12中所示的這種結(jié)構(gòu)化數(shù)據(jù)。
所述公共結(jié)構(gòu)注冊(cè)單元33將存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112和在圖8中所示的公共結(jié)構(gòu)化數(shù)據(jù)與圖12中所示的結(jié)構(gòu)化數(shù)據(jù)相比較,由此更新圖8的公共結(jié)構(gòu)化數(shù)據(jù)。也就是,在這種情況下,將增加作為如圖13所示的節(jié)點(diǎn)“書”的子節(jié)點(diǎn)的所述節(jié)點(diǎn)“關(guān)鍵詞”,所述節(jié)點(diǎn)“關(guān)鍵詞”不是包括在圖8的公共結(jié)構(gòu)化數(shù)據(jù)中、而是包括在圖12的結(jié)構(gòu)化數(shù)據(jù)中。注意所述節(jié)點(diǎn)“關(guān)鍵詞”的節(jié)點(diǎn)ID是“T8”。如圖8所示的這種公共結(jié)構(gòu)是從在圖12中所示的結(jié)構(gòu)化數(shù)據(jù)獲取的,并且存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中。
所述差分結(jié)構(gòu)注冊(cè)單元34獲取差分結(jié)構(gòu)化數(shù)據(jù)(見圖15),其指示在圖12的結(jié)構(gòu)化數(shù)據(jù)和圖13的公共結(jié)構(gòu)化數(shù)據(jù)之間的差分結(jié)構(gòu)。特別地,所述單元34獲取如圖14所示的這種第一差分結(jié)構(gòu)化數(shù)據(jù)。如可以從圖14所理解,所述第一差分結(jié)構(gòu)化數(shù)據(jù)另外包括不是包括在圖12的結(jié)構(gòu)化數(shù)據(jù)中、而是包括在圖13的公共結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn),也就是節(jié)點(diǎn)“摘要”。將指示檢測(cè)數(shù)量是零的屬性信息“0”附加到這個(gè)節(jié)點(diǎn)。這意味著由所述節(jié)點(diǎn)“摘要”表示的元素不存在于所述文檔B中,而是存在于所述公共結(jié)構(gòu)化數(shù)據(jù)中。
包括在文檔B的結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn)“作者們”具有三個(gè)節(jié)點(diǎn)“作者”,其意味著存在相同的子結(jié)構(gòu)(子樹)。為表示這些,在圖15的第二差分結(jié)構(gòu)化數(shù)據(jù)中,使用代表所述重復(fù)結(jié)構(gòu)的一個(gè)子結(jié)構(gòu),其具有附加在該處的指示檢測(cè)數(shù)量是3的屬性信息“3*”。
所述文檔B的差分結(jié)構(gòu)化數(shù)據(jù)與用來(lái)獲取所述差分結(jié)構(gòu)化數(shù)據(jù)的公共結(jié)構(gòu)化數(shù)據(jù)的最后節(jié)點(diǎn)ID“T8”一起存儲(chǔ)在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中,所述存儲(chǔ)是以例如圖16所示的“ManagementT8[1][1][3*][1][1]
[1]”的數(shù)據(jù)組的形式。
如圖17所示,在存儲(chǔ)文檔B的存儲(chǔ)區(qū)中,首先存儲(chǔ)對(duì)應(yīng)于所述公共結(jié)構(gòu)化數(shù)據(jù)的各自節(jié)點(diǎn)的對(duì)象數(shù)據(jù)項(xiàng),然后順序存儲(chǔ)在所述文檔樹中的不定節(jié)點(diǎn)或文本節(jié)點(diǎn)。所述對(duì)象數(shù)據(jù)項(xiàng)是以從在所述根節(jié)點(diǎn)下的結(jié)構(gòu)的第一子節(jié)點(diǎn)開始的次序存儲(chǔ)的,使用所述差分結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)作為起始點(diǎn)。對(duì)于在每個(gè)子節(jié)點(diǎn)下的結(jié)構(gòu),所述對(duì)象數(shù)據(jù)項(xiàng)是以從所述差分結(jié)構(gòu)化數(shù)據(jù)的最高級(jí)節(jié)點(diǎn)開始、并且以最低級(jí)節(jié)點(diǎn)結(jié)束的次序存儲(chǔ)的。
圖18是有利于解釋所述結(jié)構(gòu)化數(shù)據(jù)提取單元32的結(jié)構(gòu)化數(shù)據(jù)提取處理的流程圖。將給出從圖6的文檔樹中提取圖7的結(jié)構(gòu)化數(shù)據(jù)的情況的說(shuō)明。所述結(jié)構(gòu)化數(shù)據(jù)是通過(guò)向下跟隨從所述根節(jié)點(diǎn)開始的文檔樹的節(jié)點(diǎn),以及增加作為用于所述結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)的所檢測(cè)的節(jié)點(diǎn)而提取的。
特別地,首先,從所述文檔數(shù)據(jù)分析單元31輸出的圖6中所示文檔A的文檔樹的根節(jié)點(diǎn)被設(shè)置為所述結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)(步驟S1)。為了將所述文檔樹的節(jié)點(diǎn)增加到在所述根節(jié)點(diǎn)下的結(jié)構(gòu)化數(shù)據(jù),所述文檔樹的根節(jié)點(diǎn)被設(shè)置為“d”節(jié)點(diǎn),以及所述結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)被設(shè)置為“f”節(jié)點(diǎn)(步驟S2)。如果所述“d”節(jié)點(diǎn)包括子節(jié)點(diǎn)(在步驟S3為是),所述“d”節(jié)點(diǎn)的第一子節(jié)點(diǎn)被設(shè)置為“d”節(jié)點(diǎn)′(步驟S4)。所述“d”節(jié)點(diǎn)′將作為所述“f”節(jié)點(diǎn)的子節(jié)點(diǎn)被增加,指示檢測(cè)數(shù)量是1的屬性信息“1”附加到所述子節(jié)點(diǎn)“d”節(jié)點(diǎn)′(步驟S5)。在屬于所述“d”節(jié)點(diǎn)的所有子節(jié)點(diǎn)上執(zhí)行步驟S4和S5之后,將更新所述“d”節(jié)點(diǎn)和“f”節(jié)點(diǎn),直到在所述文檔樹的所有節(jié)點(diǎn)上執(zhí)行了步驟S4和S5(步驟S6和S7)。也就是在步驟S7,所述文檔樹的下一個(gè)節(jié)點(diǎn)(也就是跟隨被設(shè)置作為當(dāng)前“d”節(jié)點(diǎn)的節(jié)點(diǎn))將被設(shè)置為新的“d”節(jié)點(diǎn),以及對(duì)應(yīng)于所述新的“d”節(jié)點(diǎn)的結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)被設(shè)置為新的“f”節(jié)點(diǎn)。隨后,所述程序回到步驟S3,以及重復(fù)步驟S3至35。
在圖18所示的處理中,將以在所述結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)下依次增加節(jié)點(diǎn)“書”、“標(biāo)題”和“作者”。然后,在所述節(jié)點(diǎn)“作者”下增加所述節(jié)點(diǎn)“作者們”的第一子節(jié)點(diǎn),也就是節(jié)點(diǎn)“作者”,以及在所述節(jié)點(diǎn)“作者”下增加所述節(jié)點(diǎn)“作者”的子節(jié)點(diǎn),也就是節(jié)點(diǎn)“名”和“姓”。類似地,在所述節(jié)點(diǎn)“作者們”下增加所述節(jié)點(diǎn)“作者們”的第二子節(jié)點(diǎn),也就是另一個(gè)節(jié)點(diǎn)“作者”,以及在其下面增加這個(gè)節(jié)點(diǎn)的“作者”的子節(jié)點(diǎn),也就是節(jié)點(diǎn)“名”和“姓”。最后,增加作為所述結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“書”的子節(jié)點(diǎn)的節(jié)點(diǎn)“摘要”。指示檢測(cè)數(shù)量是1的屬性信息將附加到每個(gè)節(jié)點(diǎn)。
圖19是有利于解釋所述公共結(jié)構(gòu)注冊(cè)單元33的公共結(jié)構(gòu)注冊(cè)處理的流程圖。將給出當(dāng)存儲(chǔ)包括在圖7的結(jié)構(gòu)化數(shù)據(jù)中的第一文檔A時(shí)、產(chǎn)生新的公共結(jié)構(gòu)化數(shù)據(jù)的情況的說(shuō)明。在這種情況下,所述公共結(jié)構(gòu)化數(shù)據(jù)是通過(guò)在向下跟隨圖7的結(jié)構(gòu)化數(shù)據(jù)時(shí)、將所述結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)與所述公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)相比較而更新的,由此將不包括在所述公共結(jié)構(gòu)化數(shù)據(jù)內(nèi)的節(jié)點(diǎn)(“g”節(jié)點(diǎn))增加到所述公共結(jié)構(gòu)化數(shù)據(jù)。如上所述,當(dāng)在所述結(jié)構(gòu)化數(shù)據(jù)中檢測(cè)到相同節(jié)點(diǎn)(相同元素名稱的節(jié)點(diǎn))時(shí),僅將其中一個(gè)節(jié)點(diǎn)增加到所述公共結(jié)構(gòu)化數(shù)據(jù)。
特別地,從所述結(jié)構(gòu)化數(shù)據(jù)提取單元32輸出的圖7中所示文檔A的結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)“書”被設(shè)置為“f”節(jié)點(diǎn)(步驟S11),。如果所述公共結(jié)構(gòu)化數(shù)據(jù)在所述根節(jié)點(diǎn)“根”下面包含對(duì)應(yīng)于“f”節(jié)點(diǎn)的節(jié)點(diǎn),則程序進(jìn)行到步驟S15,反之如果其不包含這種節(jié)點(diǎn),則程序進(jìn)行到步驟S13(步驟S12)。由于這種情況是指向新的公共結(jié)構(gòu)化數(shù)據(jù)的產(chǎn)生的,在所述節(jié)點(diǎn)“根”下面不存在公共結(jié)構(gòu)化數(shù)據(jù),因此程序進(jìn)行到步驟S13,其中增加作為所述節(jié)點(diǎn)“根”的子節(jié)點(diǎn)的“f”節(jié)點(diǎn)。也就是,增加所述節(jié)點(diǎn)“書”,以及將所述結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“書”設(shè)置為“g”節(jié)點(diǎn)(步驟S14)。
其后,重復(fù)步驟S16到S21,由此在所述“g”節(jié)點(diǎn)下構(gòu)造公共結(jié)構(gòu)化數(shù)據(jù)。特別地如果所述“f”節(jié)點(diǎn)具有子節(jié)點(diǎn)(在步驟S16為是),則所述“f”節(jié)點(diǎn)的第一子節(jié)點(diǎn)設(shè)置為“f”節(jié)點(diǎn)′(步驟S17)。而且,如果所述公共結(jié)構(gòu)化數(shù)據(jù)的“g”節(jié)點(diǎn)不包含與所述“f”節(jié)點(diǎn)′相同的節(jié)點(diǎn)(在步驟S18為否),所述“f”節(jié)點(diǎn)′將作為所述“g”節(jié)點(diǎn)的子節(jié)點(diǎn)而增加,并且將節(jié)點(diǎn)ID附加到所述子節(jié)點(diǎn)(步驟S19)。相反,如果所述公共結(jié)構(gòu)化數(shù)據(jù)的“g”節(jié)點(diǎn)包含與所述“f”節(jié)點(diǎn)′相同的子節(jié)點(diǎn)(在步驟S18為是),程序回到步驟S16,由此將所述“f”節(jié)點(diǎn)的第二子節(jié)點(diǎn)設(shè)置為新的“f”節(jié)點(diǎn)′。對(duì)屬于所述“f”節(jié)點(diǎn)的所有子節(jié)點(diǎn)執(zhí)行步驟S18和S19之后,更新所述“f”節(jié)點(diǎn)和“g”節(jié)點(diǎn),直到對(duì)所述結(jié)構(gòu)化數(shù)據(jù)的所有節(jié)點(diǎn)執(zhí)行了步驟S18和S19(步驟S20和S21)。也就是在步驟S21,所述結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)(也就是跟隨被設(shè)置為當(dāng)前“f”節(jié)點(diǎn)的節(jié)點(diǎn))被設(shè)置為新的“f”節(jié)點(diǎn)而設(shè)置,并且對(duì)應(yīng)于所述新的“f”節(jié)點(diǎn)的公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)被設(shè)置為新的“g”節(jié)點(diǎn)。隨后,所述程序回到步驟S16,并且重復(fù)步驟S16至S19。
通過(guò)上述的處理,獲取如圖8所示的這種公共結(jié)構(gòu)化數(shù)據(jù),其中在所述結(jié)構(gòu)化數(shù)據(jù)中檢測(cè)到的相同的多個(gè)子樹中的一個(gè)代表所述多個(gè)子樹。最后,如圖8所示的這種公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中(步驟S22)。
現(xiàn)在將給出在將具有圖12所示結(jié)構(gòu)化數(shù)據(jù)的文檔B存儲(chǔ)在其中已經(jīng)存儲(chǔ)了圖8所示這種公共結(jié)構(gòu)化數(shù)據(jù)的狀態(tài)中時(shí)、執(zhí)行所述公共結(jié)構(gòu)注冊(cè)處理的說(shuō)明。在這種情況下,將僅描述與存儲(chǔ)所述文檔A的情況有關(guān)的不同點(diǎn)。在步驟S15,所述公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“書”被設(shè)置為“g”節(jié)點(diǎn)。在步驟S16到S21,更新存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中的公共結(jié)構(gòu)化數(shù)據(jù)。包括在圖12的結(jié)構(gòu)化數(shù)據(jù)中、而不包括在圖8的公共結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn)是節(jié)點(diǎn)“關(guān)鍵詞”。因此,當(dāng)在步驟S17將作為所述節(jié)點(diǎn)“書”的第三子節(jié)點(diǎn)的節(jié)點(diǎn)“關(guān)鍵詞”設(shè)置為“f”節(jié)點(diǎn)′時(shí),在步驟S18對(duì)所述詢問的應(yīng)答為否(由于圖8的公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“書”的子節(jié)點(diǎn)不包括所述節(jié)點(diǎn)“關(guān)鍵詞”)。這時(shí),程序進(jìn)行到步驟S19,其中所述節(jié)點(diǎn)“關(guān)鍵詞”作為所述節(jié)點(diǎn)“書”的另一個(gè)子節(jié)點(diǎn)而增加,節(jié)點(diǎn)ID“T8”附加到所增加的節(jié)點(diǎn)。
從上述處理,獲取了如圖13所示的這種公共結(jié)構(gòu)化數(shù)據(jù)。最后,更新存儲(chǔ)在所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112中的公共結(jié)構(gòu)化數(shù)據(jù)(步驟S22),其類似于在圖13中所示的公共結(jié)構(gòu)化數(shù)據(jù)。
圖20和21是有利于解釋由所述差分結(jié)構(gòu)注冊(cè)單元34執(zhí)行的差分結(jié)構(gòu)注冊(cè)處理的流程圖。將例如使用其中存儲(chǔ)有具有圖12所示結(jié)構(gòu)化數(shù)據(jù)的文檔B的情況,給出所述差分結(jié)構(gòu)注冊(cè)處理的說(shuō)明。
首先,將圖12的結(jié)構(gòu)化數(shù)據(jù)和圖13的公共結(jié)構(gòu)化數(shù)據(jù)相比,由此檢測(cè)不是包括在圖的結(jié)構(gòu)化數(shù)據(jù)中、而是包括在圖13的公共結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn),也就是節(jié)點(diǎn)“摘要”。隨后,將具有附加其上的屬性信息“0”的所述節(jié)點(diǎn)“摘要”增加到所述結(jié)構(gòu)化數(shù)據(jù),所述屬性信息指示檢測(cè)的數(shù)量是零。因此,產(chǎn)生如圖14所示的這種第一差分結(jié)構(gòu)化數(shù)據(jù)。
特別地,圖12中所示結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)“書”將設(shè)置為“f”節(jié)點(diǎn)(步驟S31)。然后,對(duì)應(yīng)于所述“f”節(jié)點(diǎn)的所述公共結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn)被設(shè)置為“g”節(jié)點(diǎn)(步驟S32)。
如果所述“g”節(jié)點(diǎn)具有子節(jié)點(diǎn)(在步驟S33為是),所述“g”節(jié)點(diǎn)的第一子節(jié)點(diǎn)被設(shè)置為“g”節(jié)點(diǎn)′(步驟S44)。而且,如果所述結(jié)構(gòu)化數(shù)據(jù)的“f”節(jié)點(diǎn)不包含與所述“g”節(jié)點(diǎn)′相同的節(jié)點(diǎn)(在步驟S35為否),所述“g”節(jié)點(diǎn)′作為所述“f”節(jié)點(diǎn)的子節(jié)點(diǎn)而添加,以及將指示檢測(cè)數(shù)量是零的屬性信息“0”附加到這個(gè)子節(jié)點(diǎn)(步驟S36)。相反,如果所述結(jié)構(gòu)化數(shù)據(jù)的“f”節(jié)點(diǎn)包含與所述“g”節(jié)點(diǎn)′相同的節(jié)點(diǎn)(在步驟S35為是),程序回到步驟S33,由此將所述“g”節(jié)點(diǎn)的第二子節(jié)點(diǎn)設(shè)置為新的“g”節(jié)點(diǎn)′(步驟S34)。
例如,如果在步驟S34將作為所述節(jié)點(diǎn)“書”的第三子節(jié)點(diǎn)的節(jié)點(diǎn)“摘要”設(shè)置為新的“g”節(jié)點(diǎn)′,在步驟S35對(duì)所述詢問的應(yīng)答為否(由于圖12的結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)“書”的子節(jié)點(diǎn)不包括節(jié)點(diǎn)“摘要”)。這時(shí),程序進(jìn)行到步驟S36,其中增加作為所述節(jié)點(diǎn)“書”的另一個(gè)子節(jié)點(diǎn)的節(jié)點(diǎn)“摘要”,以及將指示檢測(cè)數(shù)量是零的屬性信息“0”附加到所增加的節(jié)點(diǎn)。
在屬于所述“g”節(jié)點(diǎn)的所有子節(jié)點(diǎn)上執(zhí)行步驟S35和S36之后,更新所述“f”節(jié)點(diǎn)和“g”節(jié)點(diǎn),直到在所述公共結(jié)構(gòu)化數(shù)據(jù)的所有節(jié)點(diǎn)上執(zhí)行了步驟S35和S36(步驟S37和S38)。也就是在步驟S38,所述結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)(也就是跟隨被設(shè)置為當(dāng)前“g”節(jié)點(diǎn)的節(jié)點(diǎn))被設(shè)置為新的“g”節(jié)點(diǎn),以及對(duì)應(yīng)于所述新的“g”節(jié)點(diǎn)的結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)被設(shè)置為新的“f”節(jié)點(diǎn)。隨后,所述程序回到步驟S33,以及重復(fù)步驟S33至S36。
從上述描述的處理中,獲取如圖14所示的這種第一差分結(jié)構(gòu)化數(shù)據(jù)。
隨后,產(chǎn)生如圖15所示的這種第二差分結(jié)構(gòu)化數(shù)據(jù),其中包括在所述第一差分結(jié)構(gòu)化數(shù)據(jù)中的相同子結(jié)構(gòu)中的一個(gè)代表它們。如果在所述第一差分結(jié)構(gòu)化數(shù)據(jù)的特定節(jié)點(diǎn)下多次檢測(cè)到相同的子樹(在圖21中的步驟S41為是),就以完全重復(fù)形式重寫這個(gè)重復(fù)結(jié)構(gòu)(步驟S42)。也就是,相同的子樹由包括在它們中的一個(gè)子樹代表,并且指示所述子樹的檢測(cè)數(shù)量的屬性信息將附加到所述子樹的根節(jié)點(diǎn)。
圖14的第一差分結(jié)構(gòu)化數(shù)據(jù)包含在所述節(jié)點(diǎn)“作者們”下的三個(gè)相同的子樹,其使用節(jié)點(diǎn)“作者”作為根。因此,如圖15所示,所述三個(gè)子樹中的一個(gè)代表它們,并且將指示所述子樹的檢測(cè)數(shù)量是3的屬性信息“3”附加到所述子樹的根節(jié)點(diǎn)“作者”。
如果在所述第一差分結(jié)構(gòu)化數(shù)據(jù)的特定節(jié)點(diǎn)下檢測(cè)到相同的子樹,并且如果至少其中一個(gè)子樹僅僅具有任何其它子樹的部分結(jié)構(gòu)(在步驟S43為是),就以部分重復(fù)形式重寫所述重復(fù)結(jié)構(gòu)(步驟S44)。
現(xiàn)在將描述部分重復(fù)形式,使用在圖24中所示的結(jié)構(gòu)化數(shù)據(jù)作為例子。圖24的結(jié)構(gòu)化數(shù)據(jù)包含在節(jié)點(diǎn)“作者們”下的、使用有節(jié)點(diǎn)“作者”作為根的的兩個(gè)子樹。其中一個(gè)子樹不包括節(jié)點(diǎn)“姓”,而另一個(gè)子樹具有如所述文檔B的結(jié)構(gòu)化數(shù)據(jù)的相同結(jié)構(gòu)(見圖12)。
圖25示出了指示在圖24的結(jié)構(gòu)化數(shù)據(jù)和圖13的公共結(jié)構(gòu)化數(shù)據(jù)之間差異的第一差分結(jié)構(gòu)化數(shù)據(jù)。而且,圖26示出了第二差分結(jié)構(gòu)化數(shù)據(jù),其中在圖25中的其中一個(gè)相同子結(jié)構(gòu)代表它們。
圖25的第一差分結(jié)構(gòu)化數(shù)據(jù)包含在所述節(jié)點(diǎn)“作者”下的兩個(gè)相同的子樹,其使用節(jié)點(diǎn)“作者”作為根。其中一個(gè)子樹不包括所述節(jié)點(diǎn)“姓”。因此,在圖21所示的步驟S44,如圖26所示,所述兩個(gè)子樹中的一個(gè)被用作代表,并且指示所述子樹的檢測(cè)數(shù)量的屬性信息“2”附加到所述子樹的根節(jié)點(diǎn)“作者”。而且,指示不定節(jié)點(diǎn)的屬性信息“?”附加到包括在所述子樹中的節(jié)點(diǎn)“名”。
參照前面的圖21,除在所述第一差分結(jié)構(gòu)化數(shù)據(jù)中的重復(fù)結(jié)構(gòu)的部分(也就是,不包括重復(fù)結(jié)構(gòu)并且可以由不多于預(yù)定門限值的信息數(shù)量表示的部分,其展開的形式未改變)是以展開的形式表示的(步驟S45)。也就是,由圖14的第一差分結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn)“書”、“標(biāo)題”、“作者”、“摘要”和“關(guān)鍵詞”形成的子樹在圖15的第二差分結(jié)構(gòu)化數(shù)據(jù)中保持不變。
由上述處理獲取的所述第二差分結(jié)構(gòu)化數(shù)據(jù)以數(shù)據(jù)數(shù)組形式重寫(步驟S46)。特別地,附加到圖15中第二差分結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)的各自檢測(cè)的數(shù)量是以從在所述根節(jié)點(diǎn)下的結(jié)構(gòu)的第一子節(jié)點(diǎn)開始的次序排列的,其中使用所述根節(jié)點(diǎn)作為起始點(diǎn)。涉及在每個(gè)子節(jié)點(diǎn)下的結(jié)構(gòu),所述檢測(cè)的數(shù)量是以從所述結(jié)構(gòu)化數(shù)據(jù)的最高級(jí)節(jié)點(diǎn)開始、并且以最低級(jí)節(jié)點(diǎn)結(jié)束的次序而排列的。換句話說(shuō),當(dāng)按所述節(jié)點(diǎn)“書”、“標(biāo)題”“作者們”、“作者”、“名”、“姓”、“摘要”和“關(guān)鍵詞”的次序排列節(jié)點(diǎn)的各自檢測(cè)的數(shù)量時(shí),獲取數(shù)據(jù)[1][1][3*][1][1]
[1]。
如圖16所示,所述差分結(jié)構(gòu)注冊(cè)單元34在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中存儲(chǔ)所獲取的差分結(jié)構(gòu)化數(shù)據(jù),其具有附加的節(jié)點(diǎn)ID“T8”(稱作管理信息),節(jié)點(diǎn)ID“8”被分配給所述公共結(jié)構(gòu)化數(shù)據(jù)的最后節(jié)點(diǎn)來(lái)獲取所述差分結(jié)構(gòu)化數(shù)據(jù)。
圖16示出了差分結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)器的例子。如所示,所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113存儲(chǔ)文檔A和文檔B的差分結(jié)構(gòu)化數(shù)據(jù)。
所述文檔A的差分結(jié)構(gòu)化數(shù)據(jù)是以數(shù)據(jù)數(shù)組形式排列,實(shí)際上以[1][1][2*][1][1][1]的數(shù)字序列形式排列。每個(gè)數(shù)據(jù)項(xiàng)具有以下意義[1]檢測(cè)到所述節(jié)點(diǎn)“標(biāo)題”一次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者”一次;[2*]檢測(cè)到使用所述節(jié)點(diǎn)“作者”作為根的結(jié)構(gòu)兩次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者/名”一次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者/姓”一次;和 檢測(cè)到所述節(jié)點(diǎn)“摘要”一次。
所述文檔A的差分結(jié)構(gòu)化數(shù)據(jù)是以數(shù)據(jù)數(shù)組形式排列,實(shí)際上以[1][1][3*][1][1]
[1]的數(shù)字序列形式排列。每個(gè)數(shù)據(jù)項(xiàng)具有以下意義[1]檢測(cè)到所述節(jié)點(diǎn)“標(biāo)題”一次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者”一次;[3*]檢測(cè)到使用所述節(jié)點(diǎn)“作者”作為根的結(jié)構(gòu)三次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者/名”一次;[1]檢測(cè)到所述節(jié)點(diǎn)“作者/姓”一次;和檢測(cè)到所述節(jié)點(diǎn)“摘要”零次,也就是沒有檢測(cè)到;和[1]檢測(cè)到所述節(jié)點(diǎn)“關(guān)鍵詞”一次。
附加到每個(gè)差分結(jié)構(gòu)化數(shù)據(jù)項(xiàng)的管理信息指示最大節(jié)點(diǎn)數(shù)量,從其中可以確定用于每個(gè)差分結(jié)構(gòu)化數(shù)據(jù)項(xiàng)的公共結(jié)構(gòu)化數(shù)據(jù)的范圍。每次存儲(chǔ)具有不包括在所述公共結(jié)構(gòu)化數(shù)據(jù)中的新的結(jié)構(gòu)化文檔數(shù)據(jù)時(shí),就將這個(gè)節(jié)點(diǎn)增加到所述公共結(jié)構(gòu)化數(shù)據(jù)。由于因此簡(jiǎn)單地增加所述節(jié)點(diǎn)的數(shù)量,所述管理信息指示用于產(chǎn)生每個(gè)差分結(jié)構(gòu)化數(shù)據(jù)項(xiàng)的公共結(jié)構(gòu)化數(shù)據(jù)的范圍。
圖22示出了所述結(jié)構(gòu)化文檔數(shù)據(jù)的另一個(gè)例子,其具有類似于圖3的結(jié)構(gòu)化文檔數(shù)據(jù)(文檔A)、或者圖4的結(jié)構(gòu)化文檔數(shù)據(jù)(文檔B)的結(jié)構(gòu)。也就是,在圖22的結(jié)構(gòu)化文檔數(shù)據(jù)(文檔C)中,所述節(jié)點(diǎn)“作者”具有兩個(gè)節(jié)點(diǎn)“作者”,所述第二個(gè)節(jié)點(diǎn)“作者”不具有節(jié)點(diǎn)“姓”。而且,不存在節(jié)點(diǎn)“摘要”,而存在節(jié)點(diǎn)“關(guān)鍵詞”。
圖23示出了在圖22中所示的文檔C的文檔樹。
圖24示出了通過(guò)基于在圖23中所示的文檔C的文檔樹、而執(zhí)行在圖18中所示的結(jié)構(gòu)化數(shù)據(jù)提取處理所獲取的結(jié)構(gòu)化數(shù)據(jù)。
當(dāng)存儲(chǔ)圖22的文檔C時(shí),將由圖19的公共結(jié)構(gòu)注冊(cè)處理來(lái)存儲(chǔ)到所述公共結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)裝置112里的公共結(jié)構(gòu)化數(shù)據(jù)和圖13中所示的相同。因此,如果圖13中所示的公共結(jié)構(gòu)化數(shù)據(jù)已經(jīng)存儲(chǔ)在所述公共結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)裝置112中,就不對(duì)其進(jìn)行更新。圖25示出了通過(guò)使用圖24的結(jié)構(gòu)化數(shù)據(jù)和圖13的公共結(jié)構(gòu)化數(shù)據(jù)來(lái)執(zhí)行圖24的差分結(jié)構(gòu)注冊(cè)處理所獲取的第一差分結(jié)構(gòu)化數(shù)據(jù)。
在圖25的第一差分結(jié)構(gòu)化數(shù)據(jù)中,在所述節(jié)點(diǎn)“作者們”下面存在有使用節(jié)點(diǎn)“作者”作為根的兩個(gè)子樹,其中一個(gè)子樹不具有所述節(jié)點(diǎn)“姓”。而且,將具有指示所述檢測(cè)數(shù)量是零的屬性信息的節(jié)點(diǎn)“摘要”增加到所述節(jié)點(diǎn)“書”。類似地,將具有指示所述檢測(cè)數(shù)量是零的屬性信息的節(jié)點(diǎn)“姓”增加到所述第二節(jié)點(diǎn)“作者”。在圖26中所示的第二差分結(jié)構(gòu)化數(shù)據(jù)包括具有指示所述檢測(cè)數(shù)量是零的屬性信息“0”的節(jié)點(diǎn)“摘要”。
在圖26中所示的第二差分結(jié)構(gòu)化數(shù)據(jù)可以[1][1][2*][1][?]
[1]的數(shù)字序列來(lái)表示。如圖27所示,所述差分結(jié)構(gòu)注冊(cè)單元34在所述差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113中存儲(chǔ)具有附加的節(jié)點(diǎn)ID“T8”的差分結(jié)構(gòu)化數(shù)據(jù),節(jié)點(diǎn)ID“8”被分配給所述公共結(jié)構(gòu)化數(shù)據(jù)的最后節(jié)點(diǎn)來(lái)獲取所述差分結(jié)構(gòu)化數(shù)據(jù)。
參照?qǐng)D28的流程圖,將使用所述文檔B的文檔樹(見圖11)的情況作為例子給出所述文檔對(duì)象存儲(chǔ)單元35的操作的說(shuō)明。當(dāng)以從所述根節(jié)點(diǎn)開始的次序向下跟隨圖15的第二差分結(jié)構(gòu)時(shí),首先,對(duì)應(yīng)于所述公共結(jié)構(gòu)化數(shù)據(jù)的節(jié)點(diǎn)的所述文檔樹的對(duì)象數(shù)據(jù)項(xiàng)將順序存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里,然后將所述文檔的不定節(jié)點(diǎn)和文本節(jié)點(diǎn)順序存儲(chǔ)到其中。
特別地,在圖15中所示的由所述差分結(jié)構(gòu)注冊(cè)單元34獲取的第二差分結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)(節(jié)點(diǎn)“書”)被設(shè)置為“S”節(jié)點(diǎn)。而且,圖11的所述文檔樹的根節(jié)點(diǎn)(節(jié)點(diǎn)“書”)設(shè)置為“d”節(jié)點(diǎn)(步驟S51)。
如果以展開的形式表示所述“S”節(jié)點(diǎn)(在步驟S52為是),則對(duì)應(yīng)于所述文檔樹的“d”節(jié)點(diǎn)的對(duì)象數(shù)據(jù)將存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里(步驟S53)。目前,由于所述“s”節(jié)點(diǎn)處于展開的形式設(shè)置到了的所述節(jié)點(diǎn)“書”,所述對(duì)象數(shù)據(jù)、也就是對(duì)應(yīng)于所述“d”節(jié)點(diǎn)的“書”,被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔B存儲(chǔ)區(qū)的第一存儲(chǔ)槽(存儲(chǔ)槽ID=0)里,如圖17所示。
然后,在步驟S59,更新所述“s”節(jié)點(diǎn)和“d”節(jié)點(diǎn),隨后程序回到步驟S52。在步驟S59,所述第二差分結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)、也就是節(jié)點(diǎn)“標(biāo)題”,將設(shè)置為“s”節(jié)點(diǎn),并且對(duì)應(yīng)于此“s”節(jié)點(diǎn)的文檔樹的節(jié)點(diǎn)、也就是節(jié)點(diǎn)“標(biāo)題”,將設(shè)置為“d”節(jié)點(diǎn)。
并且在這種情況下,所述“s”節(jié)點(diǎn)是以展開形式表示(在步驟S52為是),因此對(duì)應(yīng)于所述“d”節(jié)點(diǎn)的對(duì)象數(shù)據(jù)、也就是“標(biāo)題”,被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔B存儲(chǔ)區(qū)的第二存儲(chǔ)槽(存儲(chǔ)槽ID=1)里,如圖17所示(步驟S53)。
其后,在步驟S59,所述第二差分結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者們”,被設(shè)置為“s”節(jié)點(diǎn),并且對(duì)應(yīng)于此“s”節(jié)點(diǎn)的文檔樹的節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者們”,被設(shè)置為“d”節(jié)點(diǎn),隨后程序回到步驟S52。
另外在這種情況下,所述“s”節(jié)點(diǎn)是以展開形式表示(在步驟S52為是),因此對(duì)應(yīng)于所述“d”節(jié)點(diǎn)的對(duì)象數(shù)據(jù)、也就是“作者們”,被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔B存儲(chǔ)區(qū)的第三存儲(chǔ)槽(存儲(chǔ)槽ID=2)里,如圖17所示(步驟S53)。
其后在步驟S59,所述第二差分結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者”,被設(shè)置為“s”節(jié)點(diǎn),并且對(duì)應(yīng)于此“s”節(jié)點(diǎn)的文檔樹的節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者”,被設(shè)置為“d”節(jié)點(diǎn),隨后程序回到步驟S52。
在這種情況下,由于附加到所述“s”節(jié)點(diǎn)的屬性信息“3”指示檢測(cè)數(shù)量是3(在步驟S52為否),在“s”節(jié)點(diǎn)下的子樹以完全重復(fù)形式表示(在步驟S54為是),在所述文檔樹的“d”節(jié)點(diǎn)下的子樹中的對(duì)象數(shù)據(jù)項(xiàng)將以完全重復(fù)形式存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里(步驟S55)。更具體地說(shuō),在圖11所示的文檔樹中,由于檢測(cè)到使用“d”節(jié)點(diǎn)(也就是,節(jié)點(diǎn)“作者”)作為根的三個(gè)子樹,將包括在每個(gè)子樹中的對(duì)象數(shù)據(jù)項(xiàng)“作者”、“名”和“姓”順序存儲(chǔ)到三個(gè)連續(xù)的存儲(chǔ)槽的操作重復(fù)三次。結(jié)果,如圖17所示,包括在所述第一子樹中的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔B存儲(chǔ)區(qū)的第四存儲(chǔ)槽(存儲(chǔ)槽ID=3)至第六存儲(chǔ)槽(存儲(chǔ)槽ID=5)中。類似地,包括在所述第二子樹中的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到第七存儲(chǔ)槽(存儲(chǔ)槽ID=6)至第九存儲(chǔ)槽(存儲(chǔ)槽ID=8)里,以及包括在所述第三子樹中的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到第十存儲(chǔ)槽(存儲(chǔ)槽ID=9)至第十二存儲(chǔ)槽(存儲(chǔ)槽ID=11)里。
由于包括在所述第二差分結(jié)構(gòu)化數(shù)據(jù)中的節(jié)點(diǎn)“摘要”的檢測(cè)數(shù)量是“0”,所以在步驟S59忽略此節(jié)點(diǎn)并將所述節(jié)點(diǎn)“關(guān)鍵詞”設(shè)置為“s”節(jié)點(diǎn),并且將包括在所述文檔樹中的對(duì)應(yīng)于所述“s”節(jié)點(diǎn)的節(jié)點(diǎn)、也就是所述節(jié)點(diǎn)“關(guān)鍵詞”設(shè)置為“d”節(jié)點(diǎn)。然后,程序回到步驟S52。
另外在這種情況下,所述“s”節(jié)點(diǎn)是以展開形式表示(在步驟S52為是),因此對(duì)應(yīng)于所述當(dāng)前“d”節(jié)點(diǎn)的對(duì)象數(shù)據(jù)、也就是“關(guān)鍵詞”,被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔B存儲(chǔ)區(qū)的第十三存儲(chǔ)槽(存儲(chǔ)槽ID=12)里,如圖17所示(步驟S53)。
因此,完成了所述第二差分結(jié)構(gòu)化數(shù)據(jù)的所有節(jié)點(diǎn)的檢測(cè)(在步驟S58為是),隨后程序進(jìn)行到步驟S60,其中還沒有存儲(chǔ)的所述文檔樹的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里。更具體地說(shuō),對(duì)應(yīng)于文本數(shù)據(jù)項(xiàng)的對(duì)象數(shù)據(jù)項(xiàng)被順序存儲(chǔ)到例如所述具有存儲(chǔ)槽ID=21的存儲(chǔ)槽里,并且以和對(duì)應(yīng)于所述公共結(jié)構(gòu)化數(shù)據(jù)的各個(gè)節(jié)點(diǎn)的對(duì)象數(shù)據(jù)項(xiàng)相同的存儲(chǔ)次序,如圖17所示。
將作為例子使用存儲(chǔ)所述文檔C的文檔樹的情況給出所述文檔對(duì)象存儲(chǔ)單元35的操作的說(shuō)明(見圖23)。所述文檔對(duì)象存儲(chǔ)單元35使用在圖26中所示的第二差分結(jié)構(gòu)化數(shù)據(jù)來(lái)存儲(chǔ)所述文檔樹的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)。存儲(chǔ)對(duì)應(yīng)于從所述根節(jié)點(diǎn)到節(jié)點(diǎn)“作者”范圍的節(jié)點(diǎn)的對(duì)象數(shù)據(jù)項(xiàng)的操作和在所述文檔B中所執(zhí)行的相同。僅描述與所述文檔B的不同點(diǎn)。
在步驟S59,所述第二差分結(jié)構(gòu)化數(shù)據(jù)的下一個(gè)節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者”,被設(shè)置為“s”節(jié)點(diǎn),并且對(duì)應(yīng)于此“s”節(jié)點(diǎn)的文檔樹C的節(jié)點(diǎn)、也就是節(jié)點(diǎn)“作者”,被設(shè)置為“d”節(jié)點(diǎn),隨后程序回到步驟S52。
在這種情況下,由于附加到所述“s”節(jié)點(diǎn)的屬性信息“2”指示檢測(cè)數(shù)量是2(在步驟S52為否),并且在所述“s”節(jié)點(diǎn)下的子樹以部分重復(fù)形式表示(在步驟S54為否,在步驟S56為是),在所述文檔樹“d”節(jié)點(diǎn)下的子樹中的對(duì)象數(shù)據(jù)項(xiàng)將以部分重復(fù)形式存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里(步驟S57)。
更具體地,在圖23所示的文檔樹中,盡管檢測(cè)到使用“d”節(jié)點(diǎn)(也就是,節(jié)點(diǎn)“作者”)作為根的兩個(gè)子樹,所述第二子樹不具有節(jié)點(diǎn)“姓”。因此,在所述第二差分結(jié)構(gòu)化數(shù)據(jù)中,所述節(jié)點(diǎn)“LAST NAME”當(dāng)作為不定節(jié)點(diǎn)。在步驟S57不存儲(chǔ)對(duì)應(yīng)于所述不定節(jié)點(diǎn)的對(duì)象數(shù)據(jù),而是在步驟S60存儲(chǔ)。
在步驟S57,首先,將包括在每個(gè)子樹中的對(duì)象數(shù)據(jù)項(xiàng)“作者”和“名”順序存儲(chǔ)到兩個(gè)連續(xù)存儲(chǔ)槽里的操作重復(fù)兩次。結(jié)果,如圖30所示,包括在所述第一子樹中的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115的文檔C存儲(chǔ)區(qū)的第四存儲(chǔ)槽(存儲(chǔ)槽ID=3)和第五存儲(chǔ)槽(存儲(chǔ)槽ID=4)中。類似地,包括在所述第二子樹中的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到第六存儲(chǔ)槽(存儲(chǔ)槽ID=5)和第七存儲(chǔ)槽(存儲(chǔ)槽ID=6)里。
此后,以和在存儲(chǔ)所述文檔B的情況相同的方式,所述對(duì)象數(shù)據(jù)“關(guān)鍵詞”被存儲(chǔ)到具有存儲(chǔ)槽ID=7的存儲(chǔ)槽里。
因此,完成了所述第二差分結(jié)構(gòu)化數(shù)據(jù)的所有節(jié)點(diǎn)的檢測(cè)(在步驟S58為是),隨后程序進(jìn)行到步驟S60,其中在步驟S57還沒有存儲(chǔ)的所述文檔樹的對(duì)象數(shù)據(jù)項(xiàng)被存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里。更具體地說(shuō),所述第一子樹的對(duì)象數(shù)據(jù)“姓”被存儲(chǔ)到例如如圖30所示具有存儲(chǔ)槽ID=30的存儲(chǔ)槽里。然后,對(duì)應(yīng)于文本數(shù)據(jù)項(xiàng)的對(duì)象數(shù)據(jù)項(xiàng)順序存儲(chǔ)到例如所述具有存儲(chǔ)槽ID=31的存儲(chǔ)槽里,并且以和對(duì)應(yīng)于所述公共結(jié)構(gòu)化數(shù)據(jù)的各個(gè)節(jié)點(diǎn)的對(duì)象數(shù)據(jù)項(xiàng)相同的存儲(chǔ)次序,如圖30所示。
圖30示出了文檔對(duì)象記錄,也就是所述文檔A、B和C的文檔對(duì)象記錄的例子。所述文檔對(duì)象記錄與對(duì)應(yīng)其的文檔ID相關(guān)地存儲(chǔ)。在每個(gè)文檔中的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)是由所述文檔ID和存儲(chǔ)槽ID中唯一指定的。換句話說(shuō),如果給定了包括文檔ID和存儲(chǔ)槽ID的對(duì)象ID,可以訪問任何對(duì)象數(shù)據(jù)項(xiàng)。
所述文檔對(duì)象存儲(chǔ)單元35將每個(gè)文檔樹的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)存儲(chǔ)到所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115里,并且基于在每個(gè)文檔樹中的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)更新所述索引數(shù)據(jù)存儲(chǔ)裝置114。索引數(shù)據(jù)指示在所存儲(chǔ)結(jié)構(gòu)化文檔數(shù)據(jù)中的文本元素的文本數(shù)據(jù)、和分配給在包括所述文本數(shù)據(jù)的所述結(jié)構(gòu)化文檔數(shù)據(jù)內(nèi)的元素的對(duì)象ID(OID)之間的關(guān)系。
如圖29所示,所述索引數(shù)據(jù)存儲(chǔ)裝置114存儲(chǔ)有術(shù)語(yǔ)表格,以及多個(gè)存儲(chǔ)分配給文本元素的OID的表格,所述文本元素鏈接到包含于所述術(shù)語(yǔ)表格中的術(shù)語(yǔ)并且包括所述術(shù)語(yǔ)本身。通過(guò)跟隨包含于所述術(shù)語(yǔ)表格中的術(shù)語(yǔ)的鏈接,獲取了包括有所述術(shù)語(yǔ)的文本元素的檢測(cè)位置,也就是OID。
每個(gè)對(duì)象數(shù)據(jù)項(xiàng)的對(duì)象ID以<文檔ID,存儲(chǔ)槽ID>來(lái)表示。所述文檔A、B和C的文檔ID分別是“文檔A”、“文檔B”和“文檔C”。
(搜索)將描述圖1的搜索處理單元104的操作。
圖31示出了輸入到所述搜索處理單元104的查詢數(shù)據(jù)的例子。在XML中,使用由W3C開發(fā)的XQuery(XML查詢語(yǔ)言),并且使用了基于這種語(yǔ)言的查詢描述方法。
在圖31中所示的查詢數(shù)據(jù)描述了以下情況的AND(與)條件,這些情況是元素“書”存在于結(jié)構(gòu)化文檔DB“DB”的層次樹中、元素“作者”存在于所述元素“書”中,以及所述元素“作者”包括具有包含字符串“Taro”的文本元素的元素“名”以及具有包含字符串“Tanaka”的文本元素的元素“姓”。
如圖31所示的這種查詢數(shù)據(jù)將從所述客戶機(jī)201的搜索單元203發(fā)送到所述服務(wù)器101的請(qǐng)求處理單元102。
然后參照?qǐng)D32和33的流程圖,將給出當(dāng)接收如圖31所示這種查詢數(shù)據(jù)時(shí)所執(zhí)行的所述搜索處理單元104的操作的簡(jiǎn)短說(shuō)明。
由所述請(qǐng)求處理單元102接收的查詢數(shù)據(jù)傳送到所述搜索處理單元104的查詢數(shù)據(jù)分析單元41。所述查詢數(shù)據(jù)分析單元41分析所接收的查詢數(shù)據(jù)的結(jié)構(gòu),并且基于所述分析結(jié)果提取稱作查詢圖表的圖形結(jié)構(gòu)(步驟S101和S102)。例如,如圖34所示的這種查詢圖表是從圖31所示的查詢數(shù)據(jù)獲取的。可以由所述查詢圖表表示的在查詢數(shù)據(jù)內(nèi)的這種結(jié)構(gòu)以下將稱為“Sc”。
如圖34所示,所述查詢圖表是將與包含在查詢數(shù)據(jù)內(nèi)的元素(比如db“DB”、“書”、“作者”、“名”和“姓”)相對(duì)應(yīng)的變量以及根據(jù)在所述元素之間的層次關(guān)系和在所述字符串之間的包含關(guān)系的變量連接而形成的。
在圖34所示的查詢圖表內(nèi),變量是由圓形節(jié)點(diǎn)代表,變量名稱寫入所述圓周中。這些節(jié)點(diǎn)是所謂的變量節(jié)點(diǎn)。而且,在所述查詢數(shù)據(jù)內(nèi)指定的元素由在其中寫有“TAG(標(biāo)記)”的六邊形節(jié)點(diǎn)代表。這些節(jié)點(diǎn)是所謂的標(biāo)記節(jié)點(diǎn)。此外,在所述查詢數(shù)據(jù)內(nèi)指定的字符串是由其中寫有“CMP”的六邊形節(jié)點(diǎn)代表。這些節(jié)點(diǎn)是所謂的值比較標(biāo)記。
然后,為了將所述查詢圖表內(nèi)的全部變量實(shí)例化,所述查詢執(zhí)行單元42順序地產(chǎn)生稱為表格的代表所述變量組可以采用的值的全部可能組合的數(shù)據(jù)。
特別地,其首先判斷包含在所述查詢圖表內(nèi)的全部變量是否由一個(gè)表格實(shí)例化(步驟S103)。如果對(duì)在步驟S103的詢問的應(yīng)答為是,也就是,如果實(shí)例化了全部變量,所實(shí)例化的變量是作為在步驟S111搜索結(jié)果的輸出。所述變量可以采用的值指示OID。
如果包含在所述查詢圖表內(nèi)的全部變量沒有被實(shí)例化的值(在步驟S104為是),則從步驟S104到步驟S110范圍的處理將重復(fù),直到它們被實(shí)例化。
在步驟S104,判斷使用保存在所述索引數(shù)據(jù)存儲(chǔ)裝置114中的索引的搜索是否可能。如果具有術(shù)語(yǔ)索引功能,比如存在“contains(包含)”,可以實(shí)現(xiàn)使用在所述結(jié)構(gòu)化文檔DB 111內(nèi)的索引數(shù)據(jù)的高速搜索。在這種情況下,所述索引掃描單元44執(zhí)行索引掃描(步驟S105)。
如果在所述查詢圖表上的特定變量被實(shí)例化,如果屬于比所述特定變量低等級(jí)的變量被實(shí)例化,并且如果屬于比所述特定變量高等級(jí)的變量沒有被示例(在步驟S106為否),則所述結(jié)構(gòu)掃描單元43執(zhí)行結(jié)構(gòu)掃描(步驟S107)。
在步驟S108,判斷多個(gè)表格是否包含相同的變量。如果對(duì)在步驟S108的詢問的應(yīng)答為是,所述數(shù)據(jù)聯(lián)接單元45執(zhí)行聯(lián)接處理以聯(lián)接所述多個(gè)列表(步驟S109)。
如果對(duì)在步驟S108的詢問的應(yīng)答為否,在步驟S110運(yùn)行不同于上述的處理。
如上述的,在步驟S111,執(zhí)行結(jié)果輸出處理。這時(shí),獲取所述變量可以采用的值的可能組合(即可能的OID的組合)作為表格。每個(gè)組合是由具有相同文檔ID的多個(gè)OID所形成的。因此,每個(gè)組合對(duì)應(yīng)于一個(gè)結(jié)構(gòu)化數(shù)據(jù)項(xiàng)。可以通過(guò)從所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中取得與每個(gè)文檔ID相對(duì)應(yīng)的結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取與所述查詢數(shù)據(jù)相對(duì)應(yīng)的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的組,所述每個(gè)ID文檔是從作為表格的組合獲取的。
圖35是有利于解釋基于圖34的查詢圖表的搜索處理的視圖。
(1)由于所述查詢圖表包含值比較標(biāo)記節(jié)點(diǎn)、以及所述項(xiàng)索引功能“contains”,使用如圖29所示的這種索引數(shù)據(jù)對(duì)所述字符串“Taro”執(zhí)行索引掃描。結(jié)果,實(shí)例化了變量節(jié)點(diǎn)34(見圖35中的表格1)。也就是,獲取作為與變量節(jié)點(diǎn)$4相對(duì)應(yīng)的OID的<文檔A,4>、<文檔B,4>和<文檔B,7>。
(2)類似地,使用如圖29所示的這種索引數(shù)據(jù)對(duì)所述字符串“Tanaka”執(zhí)行索引掃描。結(jié)果,實(shí)例化了變量節(jié)點(diǎn)$5(見圖35的表格2)。也就是,獲取作為與變量節(jié)點(diǎn)$5相對(duì)應(yīng)的OID的<文檔A,5>和<文檔B,8>。
(3)由于實(shí)例化了所述變量節(jié)點(diǎn)$4和$5,執(zhí)行結(jié)構(gòu)掃描以實(shí)例化屬于比這些變量節(jié)點(diǎn)更高等級(jí)的變量節(jié)點(diǎn)。
參考圖33的流程圖描述結(jié)構(gòu)掃描。
首先,從圖35中的表格1和2,讀取包含在所述對(duì)象ID內(nèi)的與變量節(jié)點(diǎn)$4和$5相對(duì)應(yīng)的文檔ID(步驟S121)。
從所述公共結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置112和差分結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)裝置113分別讀取與每個(gè)文檔ID相對(duì)應(yīng)的差分結(jié)構(gòu)化數(shù)據(jù)和公共結(jié)構(gòu)化數(shù)據(jù)(與附加到所述差分結(jié)構(gòu)化數(shù)據(jù)的管理信息相應(yīng))(步驟S122)。
從與每個(gè)文檔ID相對(duì)應(yīng)的所述差分結(jié)構(gòu)化數(shù)據(jù)和公共結(jié)構(gòu)化數(shù)據(jù),重構(gòu)與每個(gè)文檔ID相對(duì)應(yīng)的結(jié)構(gòu)化數(shù)據(jù)(步驟S123)。
例如,為了重構(gòu)所述文檔A的結(jié)構(gòu)化數(shù)據(jù),以圖10所示的完全重復(fù)形式表示的差分結(jié)構(gòu)化數(shù)據(jù)的子樹被以原始展開的形式表示,從而重構(gòu)如圖7所示的這種結(jié)構(gòu)化數(shù)據(jù)。
而且,為了重構(gòu)所述文檔B的結(jié)構(gòu)化數(shù)據(jù),以圖15中所示的完全重復(fù)形式表示的差分結(jié)構(gòu)化數(shù)據(jù)的子樹被以原始展開的形式表示,并且消除了具有指示檢測(cè)數(shù)量是零的屬性信息“0”的節(jié)點(diǎn)“摘要”。結(jié)果,重構(gòu)了如圖12所示的這種結(jié)構(gòu)化數(shù)據(jù)。
隨后,從在表格1中的每個(gè)對(duì)象數(shù)據(jù)項(xiàng)開始,向上遍歷每個(gè)重構(gòu)文檔的結(jié)構(gòu)化數(shù)據(jù),從而檢測(cè)和在所述查詢圖表上的高等級(jí)變量節(jié)點(diǎn)相同的節(jié)點(diǎn)(步驟S124)。
如果和在所述查詢圖表上的高等級(jí)變量節(jié)點(diǎn)相同的節(jié)點(diǎn)是不定節(jié)點(diǎn),由于不能確定所述不定節(jié)點(diǎn)的存儲(chǔ)槽ID(在步驟S125為否),程序進(jìn)行到步驟S127。相反,如果和在所述查詢圖表上的高等級(jí)變量節(jié)點(diǎn)相同的節(jié)點(diǎn)是固定節(jié)點(diǎn),由于可以從所述結(jié)構(gòu)化數(shù)據(jù)確定所述固定節(jié)點(diǎn)的存儲(chǔ)槽ID(在步驟S125為是),程序進(jìn)行到步驟S126。
現(xiàn)在將給出用于判斷是否可以在步驟S125確定所述存儲(chǔ)槽ID的方法的說(shuō)明。如先前描述的,所述文檔對(duì)象存儲(chǔ)單元35以對(duì)象數(shù)據(jù)數(shù)組形式存儲(chǔ)每個(gè)文檔。分配給數(shù)組中各個(gè)元素的位置信息項(xiàng)是存儲(chǔ)槽ID。如圖30所示,與所述公共結(jié)構(gòu)化數(shù)據(jù)的各個(gè)節(jié)點(diǎn)相對(duì)應(yīng)的對(duì)象數(shù)據(jù)項(xiàng)是以從所述數(shù)組的最先的數(shù)據(jù)項(xiàng)開始的次序保存的(從所述差分結(jié)構(gòu)化數(shù)據(jù)的最左邊節(jié)點(diǎn)開始,以及從所述差分結(jié)構(gòu)化數(shù)據(jù)的最高等級(jí)節(jié)點(diǎn)開始)。然后,存儲(chǔ)在所述文檔樹內(nèi)的不定節(jié)點(diǎn)或正文節(jié)點(diǎn)。
通過(guò)遍歷從所述根節(jié)點(diǎn)開始的重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),獲取除不定節(jié)點(diǎn)“?”之外的節(jié)點(diǎn)的檢測(cè)數(shù)量的總和。如果檢測(cè)到若干次高等級(jí)的節(jié)點(diǎn)(例如,2*),則執(zhí)行考慮到所述高等級(jí)節(jié)點(diǎn)的檢測(cè)數(shù)量的總和計(jì)算。如果存儲(chǔ)槽ID大于所述總和,則不能確定所述存儲(chǔ)槽ID。
例如在圖23的文檔C情況下,除所述不定節(jié)點(diǎn)“姓”外,檢測(cè)到所述元素“標(biāo)題”一次,也檢測(cè)到所述元素“作者們”一次,檢測(cè)到所述元素“作者”兩次,檢測(cè)到屬于每個(gè)元素“作者”的元素“名”一次,并且檢測(cè)到所述元素“關(guān)鍵詞”一次。因此,所述文檔C的全部節(jié)點(diǎn)的檢測(cè)總數(shù)由以下給出1+1+2×(1+1)+1=7因此,不能確定高于“7”的存儲(chǔ)槽ID。
在步驟S126,計(jì)算當(dāng)向下跟隨每個(gè)結(jié)構(gòu)數(shù)據(jù)項(xiàng)時(shí)所獲取的存儲(chǔ)槽ID。例如,可以通過(guò)計(jì)算存在于從每個(gè)結(jié)構(gòu)數(shù)據(jù)項(xiàng)的根節(jié)點(diǎn)到所述的范圍中的所述對(duì)象數(shù)據(jù)項(xiàng)的數(shù)量來(lái)檢測(cè)特定節(jié)點(diǎn)的存儲(chǔ)槽ID。
在步驟S127,為了檢測(cè)每個(gè)所獲取節(jié)點(diǎn)的存儲(chǔ)槽ID,搜索與每個(gè)文檔ID相對(duì)應(yīng)并且保存在所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中的對(duì)象記錄。
因此,掃描重構(gòu)的每個(gè)結(jié)構(gòu)化數(shù)據(jù)項(xiàng)。結(jié)果,從在圖35內(nèi)所示與變量節(jié)點(diǎn)$4相對(duì)應(yīng)的表格1中獲取在圖35內(nèi)所示的與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的表格3,以及從在圖35內(nèi)所示并且與變量節(jié)點(diǎn)$5相對(duì)應(yīng)的表格2中獲取在圖35內(nèi)所示并且與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的表格4。
將給出如何從表格1獲取在圖35內(nèi)所示的與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的表格3的說(shuō)明。在圖34內(nèi)的變量節(jié)點(diǎn)$3與所述節(jié)點(diǎn)“作者”有關(guān)。參照?qǐng)D7文檔A所重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),通過(guò)從具有存儲(chǔ)槽ID=4的節(jié)點(diǎn)“名”向上地跟隨所述結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第四存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“3”。
類似地,參照?qǐng)D12文檔B的重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),通過(guò)從具有存儲(chǔ)槽ID=4的節(jié)點(diǎn)“名”向上地跟隨所述結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第四存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“3”。
類似地,參照?qǐng)D12文檔B的重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),通過(guò)從具有存儲(chǔ)槽ID=7的節(jié)點(diǎn)“名”向上地跟隨所述結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第七存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“6”。
因此,所述變量節(jié)點(diǎn)$3是從表格1來(lái)實(shí)例化的,如圖35的表格3中所示。也就是,獲取作為與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的OID的<文檔A,3>、<文檔B,3>和<文檔B,6>。
將給出如何從表格2獲取在圖35內(nèi)所示的與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的表格4的說(shuō)明。在圖34內(nèi)的變量節(jié)點(diǎn)$3與所述節(jié)點(diǎn)“作者”有關(guān)。參照?qǐng)D7文檔A的重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),通過(guò)從具有存儲(chǔ)槽ID=5的節(jié)點(diǎn)“姓”向上地跟隨所述結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第四存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“3”。
類似地,參照?qǐng)D12文檔B所重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),通過(guò)從具有存儲(chǔ)槽ID=8的節(jié)點(diǎn)“姓”向上地跟隨所述結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第七存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“6”。
因此,所述變量節(jié)點(diǎn)$3是從表格2來(lái)實(shí)例化的,如圖35的表格4中所示。也就是,獲取作為與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的OID的數(shù)據(jù)項(xiàng)<文檔A,3>和<文檔B,6>。
(4)如上述項(xiàng)(2)和(3)所描述的,所述變量節(jié)點(diǎn)$3是以不同方式實(shí)例化的,如表格3和4所示。隨后聯(lián)接表格3和4。特別地,由于表格3和4包含公共OID<文檔A,3>和<文檔B,6>。因此,獲取了如圖35所示的包含這些OID的表格5。
(5)由于實(shí)例化了所述變量節(jié)點(diǎn)$4、$5和$3,執(zhí)行結(jié)構(gòu)掃描以實(shí)例化與比這些變量節(jié)點(diǎn)更高等級(jí)的變量節(jié)點(diǎn)$2(“書”)相對(duì)應(yīng)的元素。
首先,在OID<文檔A,3>上執(zhí)行如圖33所示的結(jié)構(gòu)掃描。特別地,參照?qǐng)D7文檔A所重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),規(guī)定了作為具有存儲(chǔ)槽ID=3的節(jié)點(diǎn)“作者”的更高級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)“書”。所述節(jié)點(diǎn)“書”的存儲(chǔ)槽ID是“0”,也就是,所述節(jié)點(diǎn)“書”是所述結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)。
隨后,在OID<文檔B,6>上執(zhí)行如圖33所示的結(jié)構(gòu)掃描。特別地,參照?qǐng)D12文檔B的重構(gòu)的結(jié)構(gòu)化數(shù)據(jù),規(guī)定了作為具有存儲(chǔ)槽ID=6的節(jié)點(diǎn)“作者”的更高級(jí)節(jié)點(diǎn)的節(jié)點(diǎn)“書”。所述節(jié)點(diǎn)“書”的存儲(chǔ)槽ID是“0”,也就是,所述節(jié)點(diǎn)“書”是所述結(jié)構(gòu)化數(shù)據(jù)的根節(jié)點(diǎn)。
因此,實(shí)例化了所述變量節(jié)點(diǎn)$2,如圖35的表格6中所示。也就是,獲取了作為與變量節(jié)點(diǎn)$2相對(duì)應(yīng)的OID的<文檔A,0>和<文檔B,0>。
OID<文檔A,0>和<文檔B,0>是作為搜索結(jié)果從所述查詢執(zhí)行單元42輸出的。所述結(jié)果產(chǎn)生單元46基于作為所述搜索結(jié)果獲取的OID產(chǎn)生結(jié)果數(shù)據(jù)(見圖36)。
圖36示出了滿足圖31中所示的查詢數(shù)據(jù)的結(jié)果數(shù)據(jù)例子。所述結(jié)果數(shù)據(jù)是通過(guò)從所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115讀取不低于包含在圖36表格6內(nèi)的OID的OID的節(jié)點(diǎn)結(jié)構(gòu)化文檔數(shù)據(jù)的部分或全部來(lái)產(chǎn)生的。在圖36內(nèi)所示的結(jié)果數(shù)據(jù)包含所述文檔A和B。
如圖36所示的這種搜索數(shù)據(jù)是從所述請(qǐng)求處理單元102發(fā)送到作為所述請(qǐng)求者所述客戶機(jī)201的。所述客戶機(jī)201在與所述輸出單元205結(jié)合的顯示器上顯示所接收的結(jié)構(gòu)化數(shù)據(jù)。
圖37示出了所述查詢數(shù)據(jù)的另一個(gè)例子。此查詢數(shù)據(jù)請(qǐng)求搜索包括在元素“書”中的元素“作者”的列表,所述元素“作者”包括各自的元素“姓”,每個(gè)元素“姓”包括字符串“Tanaka”。圖31的查詢數(shù)據(jù)請(qǐng)求搜索元素“書”的列表,而圖37的查詢數(shù)據(jù)請(qǐng)求搜索元素“作者”的列表。
在圖37所示查詢數(shù)據(jù)的情況下,獲取如圖38所示的這種查詢圖表。
圖39是有利于基于圖38的查詢圖表解釋搜索處理的視圖。
(1)由于所述查詢圖表包含值比較標(biāo)記節(jié)點(diǎn)、以及所述術(shù)語(yǔ)索引功能“contains”,使用如圖29所示的這種索引數(shù)據(jù)對(duì)所述字符串“Tanaka”執(zhí)行索引掃描。結(jié)果,實(shí)例化了所述變量節(jié)點(diǎn)$3(見圖39的表格7)。也就是,獲取作為與變量節(jié)點(diǎn)$3相對(duì)應(yīng)的OID的<文檔A,5>和<文檔B,8>。
(2)由于實(shí)例化了所述變量節(jié)點(diǎn)$3,執(zhí)行結(jié)構(gòu)掃描以實(shí)例化屬于比這些變量節(jié)點(diǎn)更高等級(jí)的變量節(jié)點(diǎn)$2。
首先,所述文檔A和B的結(jié)構(gòu)數(shù)據(jù)項(xiàng)是從在所述文檔A和B之間的差分結(jié)構(gòu)化數(shù)據(jù)、以及從與附加到所述差分結(jié)構(gòu)化數(shù)據(jù)的管理信息相對(duì)應(yīng)的公共結(jié)構(gòu)化數(shù)據(jù)中重構(gòu)的。
通過(guò)從具有存儲(chǔ)槽ID=5的節(jié)點(diǎn)“姓”向上地跟隨圖7文檔A的結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第四存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“3”。
類似地,通過(guò)從具有存儲(chǔ)槽ID=8的節(jié)點(diǎn)“姓”向上地跟隨圖12文檔B的結(jié)構(gòu)化數(shù)據(jù)、來(lái)獲取所述節(jié)點(diǎn)“作者”。由于這些節(jié)點(diǎn)保存在從具有存儲(chǔ)槽ID=0的根節(jié)點(diǎn)開始數(shù)起的第七存儲(chǔ)槽中,所述節(jié)點(diǎn)“作者”的存儲(chǔ)槽ID是“6”。
因此,實(shí)例化了所述變量節(jié)點(diǎn)$2,如圖39的表格3中所示。也就是,獲取作為與變量節(jié)點(diǎn)$2相對(duì)應(yīng)的OID的數(shù)據(jù)項(xiàng)<文檔A,3>和<文檔B,6>。
這兩個(gè)OID是滿足圖37所示的查詢數(shù)據(jù)的搜索結(jié)果。
所述結(jié)果產(chǎn)生單元46通過(guò)從所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115讀取不低于包含在圖39表格8內(nèi)的OID的OID的節(jié)點(diǎn)的結(jié)構(gòu)化文檔數(shù)據(jù)的部分或全部來(lái)產(chǎn)生結(jié)果數(shù)據(jù)。圖40所示的所述結(jié)果數(shù)據(jù)包含有屬于具有不低于3的存儲(chǔ)槽ID的節(jié)點(diǎn)(具有存儲(chǔ)槽ID=3的節(jié)點(diǎn)是第一節(jié)點(diǎn)“作者”)的所述文檔A的子文檔,以及屬于具有不低于6的存儲(chǔ)槽ID的節(jié)點(diǎn)(具有存儲(chǔ)槽ID=6的節(jié)點(diǎn)是第二節(jié)點(diǎn)“作者”)的所述文檔B的子文檔。
如上所述,在所述實(shí)施例中,為了將新的結(jié)構(gòu)化文檔數(shù)據(jù)存儲(chǔ)到所述結(jié)構(gòu)化文檔DB 111里,獲取在公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)的結(jié)構(gòu)之間的差分結(jié)構(gòu)。所述公共結(jié)構(gòu)是指包括在已經(jīng)保存在所述結(jié)構(gòu)化文檔DB 111內(nèi)的每個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中、以及包括在所述新結(jié)構(gòu)化文檔數(shù)據(jù)中的公共結(jié)構(gòu)??梢酝ㄟ^(guò)使用所述新結(jié)構(gòu)化文檔數(shù)據(jù)的結(jié)構(gòu)、更新已經(jīng)保存在所述結(jié)構(gòu)化文檔DB 111中的每個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的公共結(jié)構(gòu),來(lái)獲取此差分結(jié)構(gòu)。根據(jù)所述差分結(jié)構(gòu)排列的所述新結(jié)構(gòu)化文檔數(shù)據(jù)的元素的數(shù)組,存儲(chǔ)在所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115中。
在上述實(shí)施例中,當(dāng)存儲(chǔ)新的結(jié)構(gòu)化文檔數(shù)據(jù)時(shí),使用所述新結(jié)構(gòu)化文檔數(shù)據(jù)的結(jié)構(gòu)更新所述公共結(jié)構(gòu)。而且,存儲(chǔ)所更新的公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)的結(jié)構(gòu)之間的差分結(jié)構(gòu)以及所述新結(jié)構(gòu)化文檔數(shù)據(jù)的元素的數(shù)組。因此,可以顯著地減少存儲(chǔ)有關(guān)新結(jié)構(gòu)化文檔數(shù)據(jù)所必須的數(shù)據(jù)數(shù)量。而且,由于所述數(shù)組的每個(gè)元素的位置與所述差分結(jié)構(gòu)中每個(gè)元素的位置對(duì)應(yīng),可以從所述新結(jié)構(gòu)化文檔數(shù)據(jù)的結(jié)構(gòu)容易地確定任何元素的存儲(chǔ)區(qū)。
另外,當(dāng)為了檢測(cè)所期望的元素(由搜索條件指定)而搜索保存在所述結(jié)構(gòu)化文檔DB 111中的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)時(shí),所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)是從在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和覆蓋所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)以及存儲(chǔ)在所述DB 111中的其它結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)的公共結(jié)構(gòu)之間的差分結(jié)構(gòu)重構(gòu)的。從所重構(gòu)的結(jié)構(gòu),確定所期望的元素。所述文檔對(duì)象數(shù)據(jù)存儲(chǔ)裝置115存儲(chǔ)根據(jù)所述差分結(jié)構(gòu)排列的所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組。在所述數(shù)組內(nèi)的所期望元素的位置信息(存儲(chǔ)槽ID)是基于在所重構(gòu)的結(jié)構(gòu)內(nèi)的所期望元素的位置來(lái)檢測(cè)的。
如上所述,在所述實(shí)施例中,保存在所述結(jié)構(gòu)文檔DB 111中的每個(gè)結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)被重構(gòu)和遍歷、以判斷其是否包含期望的元素。而且,可以用少數(shù)次數(shù)對(duì)數(shù)據(jù)的參考來(lái)檢測(cè)所期望元素的存儲(chǔ)區(qū)(存儲(chǔ)槽ID)。結(jié)果,對(duì)于結(jié)構(gòu)化文檔數(shù)據(jù)的搜索可以以高速執(zhí)行。
所述實(shí)施例的流程圖說(shuō)明了按照本發(fā)明實(shí)施例的方法和系統(tǒng)。應(yīng)當(dāng)理解所述流程圖例圖的每個(gè)框圖、以及所述流程圖例圖中框圖的組合,可以由計(jì)算機(jī)程序指令來(lái)實(shí)現(xiàn)。這些計(jì)算機(jī)程序指令可以加載在計(jì)算機(jī)或其它可編程設(shè)備上、以產(chǎn)生機(jī)器,使得運(yùn)行在計(jì)算機(jī)或其它可編程設(shè)備上的所述指令創(chuàng)建用于實(shí)現(xiàn)在所述流程圖框圖或多個(gè)框圖內(nèi)指定的功能的裝置。這些計(jì)算機(jī)程序指令也可能保存在計(jì)算機(jī)可讀的存儲(chǔ)器上,其可以直接由計(jì)算機(jī)或其它可編程設(shè)備以特定方式運(yùn)行,使得保存在所述計(jì)算機(jī)可讀的存儲(chǔ)器中的指令產(chǎn)生制品,包括實(shí)現(xiàn)在所述流程圖框圖或多個(gè)框圖內(nèi)規(guī)定的功能的指令裝置。這些計(jì)算機(jī)程序指令也可以加載在計(jì)算機(jī)或其它可編程設(shè)備上,以引起在計(jì)算機(jī)或其它可編程設(shè)備上執(zhí)行的一系列操作步驟,以使計(jì)算機(jī)可編程設(shè)備提供產(chǎn)生對(duì)于實(shí)現(xiàn)在所述流程圖框圖或多個(gè)框圖內(nèi)指定的功能的步驟。
所屬領(lǐng)域技術(shù)人員將容易想到附加的優(yōu)點(diǎn)和修改。因此,本發(fā)明廣義上不局限于在這里所示和描述的細(xì)節(jié)和典型的實(shí)施例。因此,可以在不脫離由所附權(quán)利要求及其等同物限定的總的發(fā)明構(gòu)思的精神或范圍下,可以進(jìn)行多種修改。
權(quán)利要求
1.一種結(jié)構(gòu)化文檔管理設(shè)備,包括數(shù)據(jù)存儲(chǔ)裝置,其存儲(chǔ)多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng);公共結(jié)構(gòu)存儲(chǔ)裝置,其存儲(chǔ)包括多個(gè)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的結(jié)構(gòu)的公共結(jié)構(gòu);第一獲取單元,其被配置來(lái)獲取新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng);更新單元,其被配置來(lái)將所述公共結(jié)構(gòu)更新為新的公共結(jié)構(gòu),該新的公共結(jié)構(gòu)包括所述結(jié)構(gòu)和包括在所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的多個(gè)結(jié)構(gòu);第二獲取單元,其被配置來(lái)獲取所述新的公共結(jié)構(gòu)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu);差分結(jié)構(gòu)存儲(chǔ)裝置,其存儲(chǔ)所述差分結(jié)構(gòu);以及存儲(chǔ)單元,其被配置來(lái)將所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述數(shù)據(jù)存儲(chǔ)裝置里,所述數(shù)組是基于所述差分結(jié)構(gòu)排列的。
2.根據(jù)權(quán)利要求1的設(shè)備,其中所述第二獲取單元被配置來(lái)獲取所述差分結(jié)構(gòu),所述差分結(jié)構(gòu)包括指示所述新的公共結(jié)構(gòu)的每個(gè)元素是否存在的信息和指示檢測(cè)到多少次所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的子結(jié)構(gòu)的信息。
3.根據(jù)權(quán)利要求1的設(shè)備,其中所述存儲(chǔ)單元被配置來(lái)存儲(chǔ)所述數(shù)組,指示所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的每個(gè)元素在所述數(shù)組中的位置的位置信息是指示所述每個(gè)元素的標(biāo)識(shí)符。
4.一種搜索設(shè)備,包括存儲(chǔ)裝置,其存儲(chǔ)多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng);獲取單元,其被配置來(lái)獲取用于搜索包括在所述元素中的期望的元素的搜索條件;以及搜索單元,其被配置來(lái)從包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索所述期望的元素,所述搜索單元包括重構(gòu)單元,其被配置來(lái)基于所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu),所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的多個(gè)結(jié)構(gòu)、還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);和檢測(cè)單元,其被配置來(lái)從所述重構(gòu)的結(jié)構(gòu)檢測(cè)所述期望的元素。
5.根據(jù)權(quán)利要求4的設(shè)備,其中所述存儲(chǔ)裝置被配置來(lái)存儲(chǔ)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素?cái)?shù)組,所述數(shù)組是基于所述差分結(jié)構(gòu)排列的;并且所述搜索單元被配置來(lái)基于所述期望元素在所述重構(gòu)的結(jié)構(gòu)中的位置,獲取指示所述期望元素在所述數(shù)組中的位置的位置信息。
6.一種方法,包括將新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)存儲(chǔ)到存儲(chǔ)裝置里,該存儲(chǔ)裝置存儲(chǔ)有多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng);獲取包括多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu),所述多個(gè)結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中;獲取所述公共結(jié)構(gòu)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu);以及將所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述存儲(chǔ)裝置里,所述數(shù)組是基于所述新的差分結(jié)構(gòu)排列的。
7.一種方法,包括從包括在多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索期望的元素;基于所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu),所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的多個(gè)結(jié)構(gòu),還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);以及從所述重構(gòu)的結(jié)構(gòu)檢測(cè)所述期望的元素。
8.根據(jù)權(quán)利要求7的方法,還包括基于所述期望元素在所述重構(gòu)結(jié)構(gòu)中的位置,來(lái)獲取指示所述期望元素在數(shù)組中的位置的位置信息,所述數(shù)組是由基于所述差分結(jié)構(gòu)排列的所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素形成的。
9.一種存儲(chǔ)在由計(jì)算機(jī)讀取的媒質(zhì)上的程序,所述程序包括用于指示所述計(jì)算機(jī)存儲(chǔ)多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的裝置,新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)通過(guò)所述程序的指令被存儲(chǔ);用于指示所述計(jì)算機(jī)獲取包括多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu)的裝置,所述多個(gè)結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中;用于指示所述計(jì)算機(jī)獲取所述公共結(jié)構(gòu)和所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu)的裝置;以及用于指示所述計(jì)算機(jī)將所述新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到所述存儲(chǔ)裝置里的裝置,所述數(shù)組是基于所述新的差分結(jié)構(gòu)排列的。
10.一種存儲(chǔ)在由計(jì)算機(jī)讀取的媒質(zhì)上的程序,所述程序包括用于指示所述計(jì)算機(jī)存儲(chǔ)多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的裝置,所述程序用作從包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中搜索期望的元素的搜索設(shè)備;用于指示所述計(jì)算機(jī)基于在所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)和公共結(jié)構(gòu)之間的差分結(jié)構(gòu),來(lái)重構(gòu)所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)的裝置,所述公共結(jié)構(gòu)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)中的多個(gè)結(jié)構(gòu),還包括所述特定結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu);以及用于指示所述計(jì)算機(jī)從所述重構(gòu)的結(jié)構(gòu)檢測(cè)所述期望元素的裝置。
全文摘要
本發(fā)明涉及結(jié)構(gòu)化文檔管理設(shè)備、搜索設(shè)備、存儲(chǔ)和搜索方法及程序。一種結(jié)構(gòu)化文檔管理設(shè)備,包括存儲(chǔ)有多個(gè)分別包括多個(gè)元素的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的數(shù)據(jù)存儲(chǔ)器;存儲(chǔ)包括在所述結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu)的公共結(jié)構(gòu)的公共結(jié)構(gòu)存儲(chǔ)器;被配置來(lái)獲取新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的第一獲取單元;被配置來(lái)將公共結(jié)構(gòu)更新為包括所述結(jié)構(gòu)和包括在所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)內(nèi)的多個(gè)結(jié)構(gòu)的新公共結(jié)構(gòu)的更新單元;被配置來(lái)獲取所述新公共結(jié)構(gòu)和所述新結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的結(jié)構(gòu)之間的差分結(jié)構(gòu)的第二獲取單元;存儲(chǔ)差分結(jié)構(gòu)的差分結(jié)構(gòu)存儲(chǔ)器;以及被配置來(lái)將新的結(jié)構(gòu)化文檔數(shù)據(jù)項(xiàng)的元素的數(shù)組存儲(chǔ)到數(shù)據(jù)存儲(chǔ)器里的存儲(chǔ)單元,所述數(shù)組是基于差分結(jié)構(gòu)排列的。
文檔編號(hào)G06F17/30GK1722138SQ200510084628
公開日2006年1月18日 申請(qǐng)日期2005年7月15日 優(yōu)先權(quán)日2004年7月15日
發(fā)明者服部雅一 申請(qǐng)人:株式會(huì)社東芝
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
晋中市| 林芝县| 武乡县| 鹤岗市| 龙里县| 大冶市| 中西区| 孝义市| 尚志市| 文登市| 昆山市| 苍南县| 栖霞市| 博罗县| 五原县| 安义县| 保定市| 齐齐哈尔市| 信宜市| 岑溪市| 巴青县| 历史| 江阴市| 安丘市| 赞皇县| 宕昌县| 梓潼县| 临安市| 天峻县| 西畴县| 雅安市| 闽侯县| 香港| 桦川县| 龙门县| 陆河县| 固阳县| 得荣县| 青川县| 四平市| 兰州市|