• 沒有找到結果。

系統說明

在文檔中 XML文件搜尋引擎的研究 (頁 40-45)

四、 系統實作

4.2 系統說明

本系統提出一個以 Web 為介面,可以儲存(Store)並查詢(Query)XML 文件 的解決方案,而這方案主要的工作如下:

(1) 選 擇 indexing 方 法 , 將 XML 文 件 shredding , 取 得 Elements , Attributes 和 Texts 在 XML 文 件 中 的 相 關 位 置 資 訊 ( position information)。

(2) 建立關聯式資料表(tables)來儲存 XML 文件。將保留原文件中順序

(order)的 shredding 資料,存入關聯式資料表的列(rows)中。

(3) 提供以 XPath Expression 為查詢語句的查詢功能。

(4) 轉換 XPath Expression 為 SQL 命令,進行關聯式資料庫查詢動作。

(5) 將查詢結果按照原 XML 文件的順序,重構(Reconstruct)XML 文件或片 段。

首先,在 indexing 方法方面,系統採用 BEL(Begin, End, Level)方法

(類似傳統 IR 的 inverted index),透過 SAX 將 XML 文件資料 shredding,以 獲取其中元素(element)、屬性、屬性值以及文字(text)節點的位置資料

(position information)做為 BEL 的索引值。實際運作如圖 20:

圖 20 BEL 編碼建立 XML 文件索引

圖 20(a)說明 XML 文件經由 SAX 解析後,取得每個節點,包含文字節點及元 素節點序號(number)資訊透過這些序號資訊再加上圖 20(b)的 level,即可完 成圖 20(c)中元素(element)、文字(text)、屬性(Attribute)以及屬性值

(value)的 BEL 編碼。

不過,實際上 BEL 編碼並未針對屬性及屬性值編碼做說明,本文以(屬性, 屬性值,begin)作為屬性的編碼格式,因為屬性在 XML 文件中並無次序性,與 之相關的僅與其所屬的元素的 begin 序號,因為按照 XML 文件規定,屬性僅出 現在元素的開始標籤,因此只要獲得該屬性的 begin 值以及其文件 id 就能決定 該屬性屬於哪一個文件的哪一個元素的屬性。

在建立索引資料庫時,本論文提供兩種介面供使用:

一種是 Web 介面一次解析單一 XML 文件,並將取得的索引資料存入關連式 資料庫,如圖 21。

圖 21 線上 XML 文件索引建立系統

另一種方式是 console 端的 GUI 應用程式,主要是批次處理大量的 XML 文 件的索引,如圖 22。BEL Index Builder 可以快速且方便的進行大量 XML 文件 的索引建立工作。

圖 22 批次 XML 文件索引建立程式畫面

第二步建立關聯式資料庫的資料表 schema 如下圖 23,圖 24,圖 25,圖 26:

圖 23 關聯式資料表 Documents 的 schema

圖 24 關聯式資料表 Elements 的 schema

圖 25 關聯式資料表 Texts 的 schema

圖 26 關聯式資料表 Attributes 的 schema

根據前面 BEL 所得的 position 資料無損失地(lossless)存入上述資料表 中。

經過前面兩個步驟後,系統提供以 XPATH 表示式的查詢介面,透過 3.3.1 的 轉 換 模 組 , 將 XPath expression 轉 換 成 SQL command 之 後 , 透 過 SQL command 來存取關聯式資料庫,所得到的資料集(dataset)將經由兩個階段完成 reconstruct 回原來 XML 文件。

第一個階段是選取(Select)階段,在這階段所有符合 XPath expression 的元素節點(element)是所謂的 inter-element order,由資料庫傳回的資料 集(dataset),只是一筆一筆的元素(element)紀錄(record),不管到底 是哪一文件的,為了在使用者介面更清楚的表達出文件的區別,因為這也是搜 尋引擎的目的,在這個階段只要傳回 docno 即可。

接著是第二個階段,重建(reconstruct)階段,是所謂的(intra-element order),這個階段利用第一階段所獲得的 docno 查出該文件中所有符合的節 點,然後進行文件或是文件片段的(reconstruct)。

在文檔中 XML文件搜尋引擎的研究 (頁 40-45)

相關文件