UPDATE INDEX

此命令通过显示最新索引来立即启动建立索引过程,以反映与索引相关联的文本列的当前内容。

当正在执行更新时,可以执行使用 CONTAINS 谓词的搜索。对于具有已激活的高速缓存结果表的索引,在更新期间,也可以执行通过存储过程执行的搜索。但是,高速缓存表中的列可能会显示新值,即使尚未将已更改的文本落实到全文本索引中也是如此。

在 CREATE INDEX 命令中使用 RECREATE INDEX ON UPDATE 选项将在重新创建之前清除索引。在完成更新之前,将返回空结果。

权限

根据 DB2 目录视图,此命令中的用户标识必须对为其创建全文本索引的表必须具有 CONTROL 特权。

命令语法

阅读语法图跳过直观语法图>>-UPDATE-INDEX--+------------------+--index-name--FOR-TEXT----->
                 '-index-schema-"."-'

>--+------------+--+--------------------+----------------------->
   '-REORGANIZE-'  '-COMMITCOUNT--count-'

>--+----------------------+--+----------------------+----------><
   '-USING-UPDATE-MINIMUM-'  '-|connection-options|-'

connection-options:

|--+--------------------------------------------------------------+--|
   '-CONNECT-TO--database-name--+-------------------------------+-'
                                '-USER--userid--USING--password-'

命令参数

index-schema
文本索引的模式。这是在 CREATE INDEX 命令中指定的。如果没有指定任何模式,则使用 DB2 连接的用户标识。
index-name
文本索引的名称。这是在 CREATE INDEX 命令中指定的。
REORGANIZE
如果频繁更新文本列,则对索引的后续更新可能会变得不足。要使更新过程再次变得是足够的,可以重组索引。使用 DB2EXT.TEXTINDEXES 视图来确定是否需要重组索引。

使用 CREATE INDEX 命令的 REORGANIZE AUTOMATIC 选项来避免手工检查和重组索引。

注意

重组过程是在常规更新之后进行的。

USING UPDATE MINIMUM
仅当达到了指定的更改数时才在 CREATE INDEX 命令中使用 UPDATE MINIMUM 设置并启动增量更新。缺省值是无条件启动更新。

对于分布式数据库,对每个节点检查 UPDATE MINIMUM。

要获取更多信息,请参阅CREATE INDEX

COMMITCOUNT count
>=0 的 INTEGER 值显示由搜索引擎和由 DB2 在一个事务中为增量索引更新处理的文档数。

但是,对于首次更新,例如,执行 CREATE INDEX 命令之后的第一次更新或者使用 RECREATE INDEX ON UPDATE 选项进行的任何更新,只存在一个逻辑事务,它忽略了 COMMITCOUNT。可以使用 ALTER INDEX 命令来更改它。

CONNECT TO database-name
作为此命令的目标的数据库的名称。如果设置了 DB2DBDFT 并且用户正在服务器上运行命令,则可以省略此参数。注意,用户标识必须具有必需的 DB2 权限。
USER userid USING password
使用 passworduserid 来连接至数据库。如果未指定它们,则会尝试使用当前用户标识而不带密码来建立连接。

用法

此命令以同步方式运行。它在分布式 DB2 环境中的所有必需的 DB2 逻辑/物理节点上启动更新处理。持续时间取决于要建立索引的文件数和已经建立索引的文档数。可以通过为每个索引创建的视图来查看更新的状态。可以从 DB2EXT.TEXTINDEXES 的 EVENTVIEWNAME 列中检索此视图的名称。有关进一步的信息,参阅附录C. Net Search Extender 信息目录

可以使用两个选项来查看已经处理的已落实文档的数目。要确定一个更新是否仍然在运行以及已经将多少个文档落实到索引中,使用 DB2EXT.TEXTINDEXES(NUMBER_DOCS)视图。使用与索引相关联的事件视图以获取有关启动、落实更改和完成更新处理的信息。

要查看要处理的未落实的文档数,使用 CONTROL LIST ALL LOCKS FOR INDEX 命令。

注意

这些视图只显示来自于已连接的节点的信息。

对于具有物理节点的基本表的增量更新,每个节点上的时间必须同步。如果时间不同步,则更新可能丢失或根本不发生。

如果正在对索引运行下列命令的其中一个命令,则不能发出该命令:

在使用已取消激活的持久高速缓存结果表更新了索引之后,就会删除持久高速缓存,以便下一个 ACTIVATE CACHE 命令根据数据库内容重新创建它。

如果用户中断此命令,则更新功能涉及到的所有进程都会停止。如果在增量更新中使用了落实计数,则在索引中可能可以看见某些更新,而其它更新可能需要新的更新命令。

要停止自动更新索引,在用于更新服务的分区上查找正在运行更新索引命令的 DB2 实例所有者进程。停止所有分区上的此进程和更新处理。

注意

由于该命令在所有分区上的索引创建和初始索引更新的两个独立阶段起作用,因此,发出 db2text drop index 命令来确保索引不是部分可用。如果不发出此命令,则可能由更新命令或更新频率选项触发的下一次更新可能会执行完全重新建立索引来确保一致状态。

对数据库的更改
  • 插入到事件表
  • 从索引日志表中删除
当使用复制捕获表时,对数据库进行了下列更改。
  • 在启动初始更新之前将信号添加至 IBMSNAP_SIGNAL 表
  • 在增量更新之后更改 IBMSNAP_PRUNE_SET 的同步点