此命令通过显示最新索引来立即启动建立索引过程,以反映与索引相关联的文本列的当前内容。
当正在执行更新时,可以执行使用 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-'
使用 CREATE INDEX 命令的 REORGANIZE AUTOMATIC 选项来避免手工检查和重组索引。
重组过程是在常规更新之后进行的。
对于分布式数据库,对每个节点检查 UPDATE MINIMUM。
要获取更多信息,请参阅CREATE INDEX。
但是,对于首次更新,例如,执行 CREATE INDEX 命令之后的第一次更新或者使用 RECREATE INDEX ON UPDATE 选项进行的任何更新,只存在一个逻辑事务,它忽略了 COMMITCOUNT。可以使用 ALTER INDEX 命令来更改它。
此命令以同步方式运行。它在分布式 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 命令来确保索引不是部分可用。如果不发出此命令,则可能由更新命令或更新频率选项触发的下一次更新可能会执行完全重新建立索引来确保一致状态。