创建文本索引
启用数据库文本搜索之后,可以在文本数据类型和 XML 数据类型上创建文本索引。在文件系统上为每个文本索引创建一个文本搜索集合,该集合存放从文档中提取出的有效项。
DB2 Text Search 支持以下文档格式。
- TEXT:纯文本文档格式
- HTML:超文本标记语言(Hypertext Markup Language)
- XML:可扩展标记语言(Extensible Markup Language)
要在 “title” 列上创建一个纯文本索引,运行以下命令:
清单 9. 在列 “title” 上创建文本索引的命令
db2ts "CREATE INDEX myschema.mytitleidx FOR TEXT ON books(title)"
|
要在 XML 文档列 “bookinfo” 上创建索引,运行:
清单 10. 在列 “bookinfo” 上创建文本索引的命令
db2ts "CREATE INDEX myschema.myxmlidx FOR TEXT ON books(bookinfo)"
|
注意,在 XML 数据类型的列上创建的文本索引是自动使用 “XML” 文档格式创建的,这使我们可以在搜索查询中使用 XQUERY/XPath 语法。对于其他数据类型,默认格式是 “TEXT”。
该命令完成后,将在数据列上出现一个空索引、插入、更新和删除触发器,用于记录数据更改;以及一些额外的系统目录表,用于管理新文本索引。
要查看索引的特征,可以使用 DB2 text search 提供的信息视图:
db2 "SELECT * from SYSIBMTS.TSCOLLECTIONNAMES"
db2 "SELECT * from SYSIBMTS.TSINDEXES"
注意,对于新的文本索引,已经创建了一个事件表和一个 staging 表。事件表存放关于索引管理操作的报告消息和错误消息,而 staging 表则包含关于数据更新的更改日志,用于在数据表的内容与文本索引的内容之间进行同步。
填充文本索引
创建一个文本索引之后,便有了一个空的索引结构。第一次更新文本索引时(初始更新),将从已创建文本索引的列装载数据,并为该数据编制索引。DB2 Text Search 使用语言处理来解析文本和文档。
要填充文本索引,使用以下命令:
清单 11. 填充文本索引的命令
db2ts "UPDATE INDEX myschema.mytitleidx FOR TEXT"
db2ts "UPDATE INDEX myschema.myxmlidx FOR TEXT"
|
成功完成之后,将标记文本索引,随后的每个更新命令都使用记录在 staging 表中的更改日志进行增量更新。增量更新是异步地的,也就是说,只有发出 UPDATE INDEX 命令时,才将文本索引与基本的表行同步。更新可以像这里一样手动开始,也可以通过调度机制进行控制。要了解调度选项的详细信息,请参阅 DB2 Text Search User Guide。
|