• 沒有找到結果。

XML 結構化資訊索引建置流程

第三章 漸進式結構化索引更新方法之設計

第二節 XML 結構化資訊索引建置流程

第二節 XML 結構化資訊索引建置流程

XML文件

Data Index

內部資料結構 DOM Tree 剖析處理 DOM Parser

k-ary Tree UID配置

轉換成內部 資料結構

XML 結構化資訊索引建置流程如圖 11 所示,其目的在於將 XML 文件的 結構資訊粹取出來建構成k-ary樹狀結構,透過此樹狀表示法提供給使用者進行 結構化檢索。本論文中的XML文件屬於以資料為主的 XML文件。以下詳細說 明結構化資訊索引的建置步驟:

1. DOM Parser:先將XML文件的階層式架構轉換成文件樹狀結構。在此 我們使用Apache Xerces DOM Parser來做為結構文件剖析處理的工具,

先利用Xerces DOM Parser將XML文件轉成一個DOM樹狀結構。

2. DOM Tree 剖析處理:由於步驟 1 中的文件樹狀結構會包含一些非資料 節點,我們在本步驟中將之刪除。

3. k-ary Tree UID配置:利用k-ary樹狀結構的概念來對文件樹狀結構做深 度優先搜尋法(Depth First Search),剖析出每個節點的資訊並配置UID。 UID配置演算法如圖 12 所示。

4. 轉換成內部資料結構:將剖析過的節點資訊存於本論文使用的內部資料 結構中。

pUID = 1;

Level = 1;

Function Traverse (Node p, long pUID, int level) { NodeList children = p.getChildNodes( );

k = children.getLength( ); //k 代表節點 p 的子節點個數 UID = 0;

//對節點 p 下的每個子節點再往下層配置 UID For (I = 0; I < k; I++) {

Node child = children.item(I);

NodeList childNodeNo = child.getChildNodes( );

childno = childNodeNo.getLength( );

UID = MaxBranch * (pUID –1) + (I+1) + 1;

Traverse (child, UID, level+1);

} }

圖 12:UID配置演算法

圖 13 為圖 2 XML球隊範例資料中一個球員的資料,我們以此XML簡例 來詳細說明配置節點UID的過程。

<?xml version="1.0"?>

<DIVISION>

<TEAM>

<TEAM_CITY>Los Angeles</TEAM_CITY>

<TEAM_NAME>Dodgers</TEAM_NAME>

<PLAYER>

<SURNAME>Darren</SURNAME>

<G_NAME>Hung</G_NAME>

<POSITION>Starting Pitcher</POSITION>

</PLAYER>

</TEAM>

</DIVISION>

圖 13:XML文件簡例

TEAM DIVISION

T_CITY T_NAME PLAYER

SURNAME G_NAME POSITION Los

Angeles Dodgers

Darren Hung Starting Pitcher

圖 14:圖 13 文件簡例之DOM樹狀結構

圖 13 的XML文件會先經由XML Parser轉換成圖 14 的DOM樹狀結構,

其中方框的節點表示實際資料內容,其餘節點為標籤元素的資訊。轉成DOM之 後,再根據每個節點在文件中的階層位置取出其對應的資料並將之轉存到 k-ary

Tree中。在此XML範例中「DIVISION」為根節點、「TEAM」為其子節點而「TEAM」 節點下又有其所屬的子節點與資料。依據這樣的關係,XML Parser 從根節點開 始做深度優先搜尋法並配置 UID。由圖 14 的文件樹狀結構可經由 XML Parser 分析出文件樹的最大分支為3,接著做深度優先法則走訪文件樹中的每一個節點 並將之存到3-ary Tree的對應位置。

依據k-ary Tree的特性,若取得一個節點的UID即可依據其子節點所在的分 支位置,透過計算子節點的公式child(i, j) = k(i-1) + j +1來算出子節點的UID, 其中i代表此節點的UID,j為子節點所在的分支位置,而k為k-ary Tree的最大 分支數。以「PLAYER」節點為例,其UID為7,則其第一個子節點「SURNAME」 的UID為3(7-1) + 1 + 1 = 20。由此方式即可配置完所有節點的UID,以圖 13 的 XML文件為例,則其UID配置完的結果如表 2 所示。

表 2:UID配置結果

Element UID Element UID DIVISION 1 SURNAME 20

TEAM 2 Darren 59

T_CITY 5 G_NAME 21

Los Angeles 14 Hung 62

T_NAME 6 POSITION 22 Dodgers 3 Starting Pitcher 65 PLAYER 7

配置完所有的 UID 後,本論文使用(SeqId, DID, UID, Level, ElementType, Value, ChildNo)的資料結構來將所有分析過的節點資訊儲存起來,資料結構中各 個欄位資訊如表 3 所示:

表 3:內部資料結構中各欄位資訊

欄位資訊 欄位意義

SeqId 每個節點的流水編號

DID XML文件識別號

UID 唯一元素識別號

Level 節點位於k-ary Tree中的層級 ElementType k-ary Tree中的節點型態 Value k-ary Tree中節點對應的資料 ChildNo 節點擁有的子節點個數

以圖 14 為例,最後真正儲存的索引資料如表 4 所示:

表 4:索引資料表

SeqId DID UID Level ElementType Value ChildNo

1 1 1 1 Root DIVISION 1

2 1 2 2 Element TEAM 3

3 1 5 3 Element T_CITY 1 4 1 14 4 Text Los Angeles 0 5 1 6 3 Element T_NAME 1

6 1 17 4 Text Dodgers 0

7 1 7 3 Element PLAYER 3 8 1 20 4 Element SURNAME 1

9 1 59 5 Text Darren 0

10 1 21 4 Element G_NAME 1

11 1 62 5 Text Hung 0

12 1 22 3 Element POSITION 1 13 1 65 5 Text Starting Pitcher 0

相關文件