DB2EXT.TEXTSEARCH(对于存储过程搜索)

函数语法

db2ext.TextSearch(

        IN      query                   VARCHAR(4096),
        IN      indexSchema             VARCHAR(128),
        IN      indexName               VARCHAR(128),
        IN      resultFirstRow          INTEGER,
        IN      resultNumberRows        INTEGER,
        IN      scoringFlag             INTEGER,
        IN      searchTermCountsFlag    INTEGER,
        OUT     searchTermCounts        VARCHAR(4096),
        OUT     totalNumberOfResults    INTEGER ) 

函数参数

下面是一些输入参数。

Query
有关进一步的信息,请参阅搜索自变量的语法
indexSchema, indexName
标识要搜索的索引。参阅CREATE INDEX
resultFirstrow
采用多个部分来返回查询结果列表。该参数描述查询结果列表的哪一行是要放置到存储过程的结果集中的第一行。查询结果列表中的第一行是用数字 0 标识的。
resultNumberRows
此参数描述将查询结果列表中的多少行放置到存储过程的结果集中。

这不会与查询中的 "result limit" 表达式混淆,该表达式确定查询结果列表的最大大小。

该值应当大于等于零。其中零表示需要返回所有结果。

注意

如果请求了一个较大的结果集,则应确保提供了临时用户表空间。如果没有提供临时表空间,则创建一个表空间。以下示例将在 UNIX 平台上创建一个表空间:

db2 "create user temporary tablespace tempts managed by system
            using ('/work/tempts.ts')"
scoringFlag
0 表示没有计算分数,而 1 表示计算了分数。如果请求了计算分数,则会返回一个具有分数值的附加列,首先填写的是最高值。
searchTermCountsFlag
此参数将控制 searchTermCounts 处理。如果 searchTermCountsFlag 为 0, 则不计算 searchTermCounts。

函数参数

下面是一些输出参数。

searchTermCounts
索引中每个搜索词条查询出现的次数。这些计数按照查询中搜索词条的顺序作为用空格隔开的列表来返回。

有关信息,请参阅 searchTermCountsFlag

totalNumberOfResults
在查询结果列表中找到的总结果数。

还要注意,当在查询中将 STOP SEARCH AFTERRESULT LIMITscoringFlag 语法一起使用时,此数值不再可靠。

用法

结果集中由存储过程返回的列是由 DB2TEXT CREATE INDEX 命令的 CACHE TABLE 选项给定的。如果 scoringFlag=1,则会添加类型为 double 的一列。此列包含 SCORE 值。

使用下列选项来提高与第一个查询具有相同字符串的第二个查询的性能。注意,这必须是在不需要 totalNumberOfResults 的另一个游标窗口中:

为了确保连接至正确的节点以进行搜索,可能必须设置 DB2NODE 环境变量。

对于 UNIX,使用以下命令:

export DB2NODE=<no>

注意,所有物理节点都具有同步时间很重要。

对于 Windows,使用:

set DB2NODE= <no>
注意

与实例所有者标识不同的受防护用户标识不使用分区数据库。