IBM Books
(C) IBM Corp. 2000, 2003.

Net Search Extender

管理和用户指南

DB2EXT.TEXTSEARCH

除了存储过程搜索和 SQL 标量搜索函数之外,Net Search Extender 还提供了与存储过程看起来非常相似的两个 SQL 表值函数。

这两个表值函数都称为 db2ext.textsearch。它们之间唯一的区别就是:一个表值函数支持 HIGHLIGHT 函数,并且具有两个附加参数:numberOfHitshitInformation

注意,不能对具有复合主键的表使用表值函数。

有关使用 HIGHLIGHT 函数的信息,参见DB2EXT.HIGHLIGHT

注意

仅当用户表存储在具有单个节点的表空间中时,才能在分布式 DB2 环境中使用表值函数。还必须确保使用 DB2NODE 环境变量连接至正确的节点。

函数语法

1. db2ext.textsearch without highlight support
 
                
                db2ext.textSearch
                (
                query	   	        VARCHAR(4096),
                indexSchema   	   VARCHAR(128),
                indexName        	VARCHAR(128),
                resultFirstRow   	INTEGER,
                resultNumberRows 	INTEGER,
                primKeyBinding   	<supported types>,// same type as primary key
                )
 
                return table
                (
                primKey           <supported types>,// same type as primary key
                numberOfMatches   INTEGER,
                score             DOUBLE,
                totalNbResults    INTEGER
                )
 
 
2. db2ext.textsearch with highlight support
 
 
                db2ext.textSearch
                (
                query	   	        VARCHAR(4096),
                indexSchema       VARCHAR(128),
                indexName        	VARCHAR(128),
                resultFirstRow   	INTEGER,
                resultNumberRows 	INTEGER,
                primKeyBinding   	<supported types>,// same type as primary key
                numberOfHits      INTEGER
                )
 
                return table
                (
                primKey           <supported types>,// same type as primary key
                numberOfMatches   INTEGER,
                score             DOUBLE,
                totalNbResults    INTEGER
                hitInformation    BLOB(20K)
                )
 
 

函数参数

下面是一些输入参数。

query
有关附加信息,参见Chapter 14, 搜索自变量的语法

indexSchema, indexName
标识要搜索的索引。有关更多信息,参见CREATE INDEX

resultFirstRow
各个部分返回的查询结果列表。此参数描述查询结果列表的哪一行是要输入到表值函数的结果表中的第一行。该值应当大于等于零。

注意,数字 0 标识查询结果列表中的第一行。

resultNumberRows
此参数描述将查询结果列表中的多少行输入到了表值函数的结果表中,如果该值为 0,则意味着所有结果都需要返回。

注意:此参数与用来确定查询结果列表的最大大小的结果限制查询参数是不同的。

primaryKeyBinding
此参数的类型确定 primaryKey Output 参数的类型。如果为具有 <type1> 类型的主键的基本表创建了文本索引,则 primaryKeyBinding 也必须是 <type1> 类型。

另外,该参数还确定文本搜索的范围。如果 primaryKeyBinding 设置为 NULL ("CAST(NULL as <type1>)", 则搜索范围将是存储在索引中的所有文档。或者,可以限制只对 primaryKeyBinding 绑定至的文档进行搜索。

例如,如果将 primaryKeyBinding 设置为 CAST(5 as BIGINT), 则限制只对 BIGINT 主键值为“5”的单个文档进行搜索。

注意,只支持下列类型的单个列主键:SMALLINTINTEGERBIGINTREALDOUBLEVARCHAR FOR BIT DATADATETIMETIMESTAMP

numberOfhits
此选项指定由 db2ext.textsearch 函数返回的匹配项的最大信息数。如果指定 0,则最多提供 1100 个匹配项的信息。这个过程可能很耗时间。

注意:只有构造 db2ext.highlight 函数必需的突出显示信息才需要此参数。

函数参数

下列返回值存储在临时表中,如果请求进一步的结果,则需要将该临时表连接至正常表。注意,仅当在 select 语句中请求了 NUMBEROFMATCHESSCORETOTALNUMBEROFRESULTSHITINFORMATION 时才会对这些函数求值。

primKey
找到的文档的主键。

numberofmatches
NUMBEROFMATCHES 是一个 INTEGER 值,它指示每个文档产生了多少个匹配项。

score
Score 将返回 DOUBLE 值。当搜索术语在文档中出现的频率提高时,文档的分数就会增大。

totalNumberOfResults
查询结果列表指示找到了多少个结果。注意,每一行都具有相同的值。

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

hitInformation
db2ext.textsearch 返回的匹配项信息对于进行突出显示处理是必需的。目前,此输出参数中大约可以包含 1100 个匹配项。如果匹配项数目超过了此阈值,则会忽略后续匹配项的匹配项信息。

注意,仅当指定了 numberOfHits 时才会返回此值。

用法

借助 SQL 表值函数,可以按搜索存储过程搜索的相同方式来搜索视图。唯一的例外就是不需要共享内存,因此不需要激活索引。

此函数主要供已经在存储过程搜索中使用了 SQL 查询的那些用户使用。但是,存在的限制就是只支持基本表的单列主键。

以下示例说明可以如何处理多列主键表:

select s.id from 
db2ext.sample s, table (db2ext.textSearch( 
        '"characteristics"',
       'DB2EXT',
         'COMMANDS',
         1,
       20,
         cast(NULL as INTEGER))) t 
where s.id = t.primkey

在此示例中,必须首先对具有单个唯一键的此表创建视图,然后对此视图创建索引。

有关将 SQL 表值函数与 db2ext.highlight 函数配合使用的示例,参见第 *** 页。


[ 页的顶部 | 上一页 | 下一页 | 目录 | 索引 ]