使用 DB2 Text Search 进行全文本搜索
2009-11-20 00:00:00 来源:WEB开发网更新文本索引
数据列的更改(插入、更新或删除行)是在 staging 表中进行跟踪的,并通过增量索引更新应用到文本索引。
清单 21. 将另一行插入到表 “books” 中INSERT INTO books VALUES ('456-456456456', 'John Doe', 'The Database Book', 2005,
XMLPARSE(
DOCUMENT '<bookinfo>
<author>John Doe</author>
<title>The Database Book</title>
<story>The ultimate book about contemporary databases. </story>
<year>2005</year>
<price>55.00</price>
<pages>176</pages>
</bookinfo>'));
为了使文本索引与数据列同步,请像下面这样更新文本索引:
清单 22. 填充文本索引db2ts "UPDATE INDEX myschema.mytitleidx FOR TEXT"
db2ts "UPDATE INDEX myschema.myxmlidx FOR TEXT"
如果遇到警告或错误,可以查看文本索引的事件表:
清单 23. 查看文本索引的事件表db2 "SELECT * FROM eventviewschema.eventviewname"
with event table values as listed by db2 "SELECT eventviewschema, eventviewname from SYSIBMTS.TSINDEXES"。
索引更改成功完成后,新的数据出现在文本索引中,并且可以搜索:
清单 24. 使用 XPath 表达式的文本搜索SELECT
author, year, substr(title,1,30) FROM books
WHERE contains(bookinfo, '@xpath:''/bookinfo/story [. contains("database")]''')=1
AUTHOR YEAR 3
------------------------------ ----------- ------------------------------
Samantha Smitt 2001 The Database Compendium
John Doe 2005 The Database Book
2 record(s) selected.
清理
删除一个表或数据库不会自动删除文本搜索集合。在删除一个表或数据库之前,使用以下步骤确保删除所有工件:
清单 25. 删除文本索引的命令db2ts "DROP INDEX myschema.mytitleidx FOR TEXT"
db2ts "DROP INDEX myschema.myxmlidx FOR TEXT"
最后,禁用数据库文本搜索,断开与数据库的连接并删除数据库:
清单 26. 禁用数据库文本搜索的命令db2ts "DISABLE DATABASE FOR TEXT"
如果数据库中仍然存在文本索引,则不能禁用数据库文本搜索。虽然可以使用强制选项 “disable database for text force” 强制执行该命令,但是建议用 drop index for text 命令删除文本索引。
清单 27. 停止文本搜索服务的命令 db2ts "STOP FOR TEXT"
db2 DISCONNECT CURRENT
db2 DROP DATABASE mytstest
结束语
本教程指导您如何设置 DB2 Text Search 环境、准备和更新文本索引,以及如何使用 CONTAINS 和 SCORE 函数。要获得 DB2 Text Search 功能的详细信息,请参阅 DB2 Text Search User Guide。
本文示例源代码或素材下载
更多精彩
赞助商链接