此命令对文本列创建全文本索引以供在 DB2 Net Search Extender 全文本查询中使用。
在分布式 DB2 环境中,全文本索引是对在其上定义用户表的表空间的每个分区创建的。不允许对表空间的分布进行后续更改,这将导致在执行管理命令和搜索过程中产生意外行为。
根据 DB2 目录视图,此命令中的用户标识必须对在其中创建全文本索引的表具有 CONTROL 特权。
>>-CREATE-INDEX--+------------------+--index-name FOR TEXT------> '-index-schema-"."-' >--ON--+------------------+--table-name-------------------------> '-table-schema-"."-' >--+-(text-column-name)--------------------------------------------+--> '-+-----------------------+--function-name-(-text-column-name-)-' '-|function-schema "."|-' >--+------------------+--+----------------------------+---------> '-|attribute-list|-' '-|text-default-information|-' >--+--------------------------+--+-------------------+----------> '-|update-characteristics|-' '-|storage-options|-' >--+-------------------------------+----------------------------> '-|cache-search-result-options|-' >--+-------------------------------+----------------------------> '-|index-configuration-options|-' >--+----------------------+------------------------------------>< '-|connection-options|-' attribute list: .-','------------------------------------------. V | |--ATTRIBUTES--(----SQL-column-expression--+-------------------+-+--)--| '-AS-attribute-name-' text-default-information: |--+--------------+--+--------------------+---------------------> '-CCSID--ccsid-' '-LANGUAGE--language-' >--+-----------------------------------------+------------------| '-FORMAT--format--+---------------------+-' '-|model-information|-' model-information: |--DOCUMENTMODEL--documentmodel-name--IN--modelfilepath---------> >--+--------------------+---------------------------------------| '-USING-CCSID--ccsid-' update-characteristics: |--+------------------------------------------+-----------------> '-UPDATE-FREQUENCY--+-NONE---------------+-' '-|update-frequency|-' >--+-|incremental-update-characteristics|-+---------------------| '-RECREATE INDEX ON UPDATE-------------' incremental-update-characteristics: |--+----------------------------+-------------------------------> '-UPDATE-MINIMUM--minchanges-' >--+---------------------------+--------------------------------> '-REORGANIZE--+-AUTOMATIC-+-' '-MANUAL----' >--+---------------------------------+--------------------------| +-COMMITCOUNT-FOR-UPDATE--count---+ '-|capture-table-characteristics|-' capture-table-characteristics: |--REPLICATION-CAPTURE-TABLE------------------------------------> >--+--------------------------+--capture-table-name-------------> '-capture-table-schema-"."-' >--CONTROL TABLE SCHEMA--capture-control-schema-----------------| update-frequency: |--D--(--+-*-------+--)--H--(--+-*--------+--)--M---------------> | .-,---. | | .-,----. | | V | | | V | | '---0...6-+-' '---0...23-+-' .-,----. V | >--(----0...59-+--)-----------------------------------------------| storage-options: |--+----------------------------+-------------------------------> '-INDEX-DIRECTORY--directory-' >--+-------------------------------+----------------------------> '-WORK-DIRECTORY--workdirectory-' >--+-------------------------------------------+----------------| '-ADMINISTRATION-TABLES-IN--tablespace-name-' cache-search-results-options: |--CACHE TABLE--------------------------------------------------> .-','-------------------------------------------. V | >--(----SQL-column-expression--+--------------------+-+--)------> '-AS--attribute-name-' >--+-------------------------------+--+---------------------+---> +-PERSISTENT--+---------------+-+ '-PCTFREE--percentage-' | '-IN--directory-' | '-TEMPORARY---------------------' >--MAXIMUM CACHE SIZE--memsize----------------------------------> >--+------------------------------------------------------+-----> '-INITIAL SEARCH RESULT ORDER--(--SQL-order-by-list--)-' >--+------------------------------------------------------+-----| '-KEY COLUMNS FOR INDEX ON VIEW--(SQL-columnname-list)-' index-configuration-options: .-,------------. V | |--INDEX CONFIGURATION--(----option-value-+--)------------------| connection-options: |--CONNECT-TO--database-name--+-------------------------------+--| '-USER--userid--USING--password-'
有关详细信息,请参阅附录C. Net Search Extender 信息目录。注意,索引名必须是有效的 DB2 索引名。
注意,当表名不是指 DB2 基本表时,具有下列限制:
注意,如果使用 Data Link 列,则一定会访存引用的内容用来建立索引。这是通过作为 Data Link 值的一部分的协议(例如,Http)来实现的。当使用除了“file”或“unc”之外的协议时,确保服务器支持作为 Data Link 值的一部分的这些协议。由于获取文件内容可能需要代理服务器,因此,数据库管理员可以在创建索引之前在 DB2EXT.PROXYINFORMATION 表中指定它们。
注意,允许具有相同列的几个索引,但是,只有满足下列条件时才允许:
通过使用下列规则来确定表达式的属性名:
例如:ATTRIBUTES (CAST(JULIAN_DAY(date) AS DOUBLE) as day, (price1+price2)/2 as avg_price)
注意:不带引号的属性将映射为大写,并且必须在搜索期间以此方式指定。
对于结构化文档格式,可以在文档模型文件中指定信息。如果没有指定任何文档模型,则使用缺省文档模型来对文档的文本建立索引。请参阅文档模型。
如果没有指定格式关键字,则缺省值来自 DB2EXT.DBDEFAULTS 视图,其中 DEFAULTNAME='FORMAT'。
由于在搜索条件中不需要引用文档模型,因此,使用模型文件中的所有节名。有关文档模型的详细信息,请参阅使用结构化文档。注意,由于只有在执行 CREATE INDEX 命令期间才读取文档模型,因此,不能识别此索引的任何后续更改。
注意,在分布式 DB2 环境中,使用共享文件系统来确保在每个节点上都能够存取 modelfilepath。
注意,在 DB2TEXT UPDATE 命令中会忽略此值。此选项不能与 RECREATE INDEX ON UPDATE 选项配合使用,原因是没有日志表和增量更新的触发器,更改数不可用。
对于分布式数据库,对每个节点检查 UPDATE MINIMUM。
只能使用手工 UPDATE 命令并通过使用 REORGANIZE 选项来执行 REORGANIZE MANUAL。
如果省略 REORGANIZE 子句,则缺省值取自 DB2EXT.DBDEFAULTS 视图,其中 DEFAULTNAME='AUTOMATICREORG'。
有关 REORGANIZE 选项的进一步信息,请参阅UPDATE INDEX。
capture-control-schema 是复制控制表的模式名,例如,本地 DB2 上的 IBMSNAP_PRUNE_SET。在设置了复制之后,复制控制表必须可用作本地 DB2 系统上的昵称。
至少,必须具有可用于下列捕获控制表的昵称:
由于“DB2 复制中心”不会自动保证为远程捕获表和捕获控制表创建本地昵称, 因此,可能需要手工创建。该任务类似于为要对其创建文本索引的表创建昵称。
用户表昵称与捕获表昵称中的主键列的列名必须匹配。另外,一定不能更改捕获表昵称中的 IBMSNAP_OPERATION、IBMSNAP_COMMITSEQ 和 IBMSNAP_INTENTSEQ 列的名称。
创建索引之后,列名 DB2EXT.TEXTINDEXES(LOGVIEWNAME) 和 DB2EXT.TEXTINDEXES(LOGVIEWSCHEMA) 都表示复制捕获表的局部名。
由于 Net Search Extender 并不需要“DB2 复制中心”的所有功能,所以“更改数据”(CD)表或“一致更改数据”(CCD)表必须遵守下列规则:
其它先决条件包括:
确保将正确的源表名插入到注册表中。视远程 DBMS 的类型不同,必须使用远程表名或本地昵称:
必须存在用户映射本地用户才能通过昵称来存取远程数据源,而远程用户必须对表具有 CONTROL 特权。
如果 DB2 实例所有者用户标识不同于本地用户标识,则需要实例所有者用户标识的附加用户映射。
指定的基本表名一定不能是昵称的视图。这是因为视图可建立在若干个昵称基础之上,并且还可能涉及到若干个 CD 表和 CCD 表。由于在复制捕获子句中只能指定一个 CD 表或 CCD 表,所以不能支持昵称的视图。另外,不能支持远程视图的昵称,这是因为缺少主键。
CD 或 CCD 表必须是昵称而不能是视图或别名。
有关《DB2 复制指南和参考版本 8》的信息,请参阅相关信息。
可以在 DB2EXT.TEXTINDEXES.COMMITCOUNT 中找到索引的 COMMITCOUNT FOR UPDATE 值。可以使用 ALTER INDEX 命令对每个索引更改此值。它还适用于根据 UPDATE FREQUENCY 规范的已调度更新处理。如果值为 0,则意味着更新是在一个事务中完成的,如果值大于 0,则指定要在一个事务中处理的文档数。
使用 commitcount 会对性能有影响。有关信息,请参阅性能注意事项。
没有对用户表创建任何触发器,也没有创建日志表。
缺省值取自 DB2EXT.DBDEFAULTS 视图,其中 DEFAULTNAME=INDEXDIRECTORY'。在该目录下创建了一个子目录 NODE<nr> 以区分服务器的逻辑节点上的索引。
注意,在分布式 DB2 环境中,每个物理节点上都必须存在此目录。
缺省值取自 DB2EXT.DBDEFAULTS 视图,其中 DEFAULTNAME='WORKDIRECTORY'。在该目录下创建了一个子目录 NODE<nr> 以区分服务器的逻辑节点上的索引。
注意,在分布式 DB2 环境中,每个物理节点上都必须存在此目录。
对于昵称或视图,DB2 将选择缺省表空间。
当为分布式 DB2 环境中的存储过程搜索而对视图、昵称或文本索引创建文本索引时,表空间必须属于单个节点。
使用对其创建索引的表的非限定列名来定义 SQL 列表达式。允许的 SQL 列表达式类型是所有内置的和用户定义的单值类型。结果集中的列名是使用下列规则确定的:
不支持将 CLOB 数据类型作为高速缓存数据类型。需要将这些数据类型强制类型转型为 VARCHARS。
注意,如果结果集的列名不是互不相同的,则 CREATE INDEX 命令会返回错误。还要注意,在创建之后,高速缓存表不是隐式激活的,例如,在执行 DB2TEXT ACTIVATE CACHE 之前,不可能执行由存储过程执行的搜索。
仅当用户表存储在具有单个节点的表空间中时,才能在分布式 DB2 环境中使用此选项。
注意,如果没有指定目录,则缺省值取自 db2ext.dbdefaults 视图,其中 DEFAULTNAME='CACHEDIRECTORY'。
不同平台上对最大高速缓存大小的限制是:
有关更多信息,请参阅附录B. 使用大量内存。
有关详细信息,请参阅ACTIVATE CACHE。
有关进一步的信息,请参阅存储过程搜索函数。
仅当您正在使用“存储过程”搜索界面时,才能使用预先排序的索引。
对于增量更新之后的新文档或已更改的文档,不能确保该索引顺序。例如:INITIAL RESULT ORDER(length(column1) asc, column2+column3 desc)
由于 DB2 不能对主键检查这种唯一性,因此,用户应负责确保等价的唯一性。指定的列为索引构建日志表的一部分。
选项 | 值 | 描述 |
TreatNumbersAsWords | 0 或 1 | 将一系列数字解释为独立的单词,即使它们与字符相邻也是这样,例如,缺省值 0 意味着将 tea42at5 看作是一个单词。 |
IndexStopWords | 0 或 1 | 在建立索引期间考虑或者忽略无用词。目前,无用词列表是 <instance>/sqllib/db2ext/resources 目录中的一个 UCS-2 文件 <language>.tsw。创建索引之后,更改此文件没有任何影响。还要注意,<language> 是 CREATE INDEX 命令中的 LANGUAGE 值。 |
UpdateDelay | 秒 | 指定不使用捕获表的增量更新的持续时间(以秒计)。将仅从日志表中抽取早于此持续时间的条目。这是为了避免丢失更新。例如,在用户事务对更新命令有影响的事务情况中,未反映在索引中的文档更改。因此,UpdateDelay 参数应设置为对其创建索引的表的用户写事务的最长持续时间。 |
创建全文本索引需要用户表的主键。在 DB2 Net Search Extender V8.1 中,可以使用包含多列的 DB2 主键,没有任何类型限制。但是,要使用表值搜索,不允许任何复合主键。
主键列的数目最多为 14 列,所有主键列的总长度最长为 1024 - 14 = 1010 个字节。
在创建索引之后,一定不能使用 ALTER TABLE 命令来更改主键列或视图键列的长度。
用户表、全文本索引和高速缓存的结果表之间的同步是在执行更新索引命令期间完成的。有关进一步的信息,请参阅UPDATE INDEX。