技术开发 频道

数据库中如何实现XML文档的全文本搜索


【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> 元素。

0
相关文章