文章詳情頁
DB2 XML 全文搜索之為文本搜索做準備
搜索 DB2 中的 XML 文檔需要執行的任務分成兩部分:1、索引治理任務2、全文搜索本節簡要討論這兩種任務,使用的示例針對 清單 1 中定義的 “product 表。注重,“product 表的 “description 和 “comments 列是 XML 類型的(換句話說,“description 和 “comments XML 文檔原生存儲在數據庫中)。清單 1. 表定義:create table product (pid varchar(10) primary key not null,description xml,comments xml);“product.description 和 “product.comment 列中存儲的 XML 數據示例分別見 圖 1 和 圖 2。后面的查詢示例搜索這些 XML 文檔的特定元素。“DB2 Viper 快速入門 (developerWorks,2006 年 3 月)討論了如何在 DB2 中插入 XML 文檔。
圖 1. “product.description 列的數據示例圖 2. “product.comments 列的數據示例首先考慮一下對 “product 表執行文本搜索操作時需要做什么,比如搜索在評論的 “message 元素中有單詞 “satisfactory 的產品的名稱,或者在描述的 “details 元素中有短語 “sugar and creamer 的產品的名稱。在使用 Net Search Extender 之前,必須先啟動它的實例服務,見清單 2:啟動 Net Search Extender 實例服務的命令:db2text start注重,這個命令調用一個單獨的可執行程序 db2text。以后會看到,任何文本索引治理任務都需要用命令 db2text 來執行。在啟動 Net Search Extender 之后,對 DB2 數據庫啟用文本搜索操作。這個步驟創建必需的治理表以及各種用戶定義函數(UDF)和存儲過程(STP),這是對 DB2 數據進行全文搜索所需要的,而且對每個數據庫只執行一次。對數據庫 “test 啟用文本搜索操作的命令如下:清單 3. 對數據庫 “test 啟用文本搜索操作的命令db2text enable database for text connect to test假如還沒有設置 DB2DBDFT 環境變量,那么所有 Net Search Extender 治理任務都需要 connect to 子句,其中的 是數據庫的名稱。以下命令假設設置了 DB2DBDFT。在為數據庫啟用文本搜索操作之后,可以在以各種格式(比如 XML)存儲文本數據的列上創建文本索引。create index 命令定義文本索引屬性,比如更新頻率、文檔格式、索引目錄等等,從而建立文本索引基礎設施。關于各種索引屬性的更多信息,請參考 Net Search Extender 文檔。本文中的示例使用一個基本的文本索引創建過程,見清單4:在 “product.description 上創建文本索引 ix1db2text create index ix1 for text on product(description)。清單 4 中的命令在 “product 表的 “description 列中本機存儲的 XML 文檔上創建一個名為 “ix1 的全文索引。注重,在創建文本索引之后,文本搜索還不能找到任何結果,因為此時文本索引不包含任何數據。假如沒有指定更新頻率,那么需要顯式地對數據和文本索引進行同步。對文本索引進行同步的任務稱為索引更新,通常在創建文本索引之后立即執行。清單 5. 使文本索引與基表中的數據同步db2text update index ix1 for text索引更新過程可以使用清單5中的命令手工執行,也可以使用后臺守護進程自動執行。自動索引更新可以在創建索引時用索引屬性指定,也可以以后使用 alter index 命令指定。下面總結一下在 DB2 中預備全文搜索操作所需完成的步驟:表 1. 在 DB2 中預備全文搜索操作的步驟在完成這四個治理步驟之后,就可以對 XML 數據進行全文搜索了。那么,可以用來尋找相關信息的實際搜索特性是什么?

排行榜