【IT168技术文档】
在DB2 V9中,可以通过DB2 Net Search Extender工具,实现对存储在数据库中的 XML 数据进行全文本搜索。DB2 Net Search Extender 完全支持 XML 数据类型。它使得可以对存储在 XML 列中的文档建立全文本索引。通过对 XML 列创建文本索引,可以查询 XML 文档中的所有文本并执行一些搜索(如相似搜索或通配符搜索)。DB2 Net Search Extender 是DB2 数据服务器产品的一部分,需要单独安装。
下面示例显示了一个简单的全文本搜索,它要在 DEPTDOC 列中存储的 XML 文档的路径⁄dept⁄description 中的任意位置查找单词“marketing”:
SELECT DEPTDOC
FROM DEPT
WHERE contains (DEPTDOC, SECTIONS("⁄dept⁄description") "marketing") = 1
DB2 Net Search Extender 提供的 contains 函数允许在路径 ⁄dept⁄description 中的任何文本(包括元素或属性名以及元素或属性值)中搜索字符串“marketing”。
要使用全文本搜索,必须使用 SQL。但是,仍可以将 SQL 查询的结果返回至 XQuery 上下文以进行进一步处理。下面示例显示使用全文本搜索的 SQL 查询产生的结果如何参与 XQuery 表达式:
XQUERY for $i in db2-fn:sqlquery ('SELECT DEPTDOC FROM DEPT WHERE contains (DEPTDOC, SECTIONS("⁄dept⁄description") "marketing") = 1')//employee return $i/name
在此示例中,使用全文本搜索的 SQL 查询的结果返回至 XQuery FLWOR 表达式的 for 子句。然后,for 子句返回所有 <employee> 元素,并且 return 子句返回检索到的 <employee> 元素中的 <name> 元素。