当应用程序需要文本搜索结果的子集时,使用存储过程搜索界面,但是要采用一种高性能搜索方式。如果需要所有结果或者需要对大量文档建立索引,则不要使用存储过程。主要原因是已将用户表的多个部分复制到内存中,从而需要提供许多实际内存。
可以采用一种与游标导航相似的方式使用存储过程来首先请求 0 到 20 之间的结果,然后请求 21 到 40 的结果,依此类推。在具有此游标功能的情况下使用高速缓存(已在建立索引期间计算)会使搜索速度相当快,尤其是在不需要任何连接的情况下更是如此。
如果将使用存储过程,则务必考虑下列选项:
以下是存储过程搜索的一个示例:
db2 "call db2ext.textSearch('\"book\"','DB2EXT','COMMENT',0,2,1,1,?,?)"
第一个参数是搜索词条。该语法与 SQL 函数中的语法完全相同。然后,指定索引名和索引模式。如果尚未屏蔽该名称,则将它转换为大写。接着的两个数字提供了获得结果(以片计)的可能性。接下来的两个整数值指定是否请求了分数和命中信息。最后两个值是输出值。
有关这些参数进一步的详细信息,请参阅存储过程搜索函数。
如果请求较大的结果集,则需要用户表空间。如果没有提供任何表空间,则创建一个表空间。以下示例将在 UNIX 平台上创建一个表空间:
db2 "create user temporary tablespace tempts managed by system using ('/work/tempts.ts')"
在分布式 DB2 环境中,必须在存储过程的单个节点上为管理表显式指定表空间,并在此节点上显式调用。