Este mandato crea un índice de texto completo en una columna de texto para su utilización en consultas de texto completo de DB2 Net Search Extender.
En un entorno DB2 distribuido, se crea un índice de texto completo en cada partición del espacio de tabla en el que está definida la tabla del usuario. No se permite realizar cambios posteriormente en la distribución del espacio de tabla y ello dará lugar a un comportamiento inesperado de los mandatos de administración y durante el proceso de búsqueda.
Autorización
Según las vistas de catálogo de DB2, el ID de usuario de este mandato debe tener el privilegio CONTROL sobre la tabla donde se haya creado el índice de texto completo.
Sintaxis del mandato
>>-CREATE-INDEX-------------------------------------------------> >--+--------------------+--nombre-índice FOR TEXT--ON-----------> '-esquema-índice-"."-' >--+-------------------+--nombre-tabla--------------------------> '-esquema-tabla-"."-' >--+-(nombre-columna-texto)-------------------------------------------+--> '-+-----------------------+--nombre-función-(nombre-columna-texto)-' '-|esquema-función-"."|-' >--+-------------------+--+-----------------------------+-------> '-|lista-atributos|-' '-|información-omisión-texto|-' >--+---------------------------------+--------------------------> '-|características-actualización|-' >--+---------------------------+--------------------------------> '-|opciones-almacenamiento|-' >--+--------------------------------------------+---------------> '-|opciones-resultados-búsqueda-antememoria|-' >--+---------------------------------+--------------------------> '-|opciones-configuración-índice|-' >--+---------------------+------------------------------------->< '-|opciones-conexión|-' lista de atributos: .-','-------------------------------------------. V | |--ATTRIBUTES--(----expresión-columna-SQL--+--------------------+-+--)--| '-nombre-atributo-AS-' información-omisión-texto: |--+--------------+--+------------------+-----------------------> '-CCSID--ccsid-' '-LANGUAGE--idioma-' >--+--------------------------------------------+---------------| '-FORMAT--formato--+-----------------------+-' '-|información-modelos|-' información-modelos: |--DOCUMENTMODEL--nombre-modelo-documentos--IN--víaacceso-archivo-modelos--> >--+--------------------+---------------------------------------| '-USING-CCSID--ccsid-' características-actualización: |--+--------------------------------------------------+---------> '-UPDATE-FREQUENCY--+-NONE-----------------------+-' '-|frecuencia-actualización|-' >--+-|características-actualización-incremental|-+--------------| '-RECREATE INDEX ON UPDATE--------------------' características-actualización-incremental: |--+---------------------------------+--------------------------> '-UPDATE-MINIMUM--cambios-mínimos-' >--+---------------------------+--------------------------------> '-REORGANIZE--+-AUTOMATIC-+-' '-MANUAL----' >--+--------------------------------------+---------------------| +-COMMITCOUNT-FOR-UPDATE--número total-+ '-|características-tabla-capturas|-----' características-tabla-capturas: |--REPLICATION-CAPTURE-TABLE------------------------------------> >--+----------------------------+--nombre-tabla-capturas--------> '-esquema-tabla-capturas-"."-' >--CONTROL TABLE SCHEMA--esquema-control-captura----------------| frecuencia-actualización: |--D--(--+-*---------+--)--H--(--+-*----------+--)--M-----------> | .-,-----. | | .-,------. | | V | | | V | | '---0...6-+-' '---0...23-+-' .-,------. V | >--(----0...59-+--)---------------------------------------------| opciones-almacenamiento: |--+-----------------------------+------------------------------> '-INDEX-DIRECTORY--directorio-' >--+------------------------------------+-----------------------> '-WORK-DIRECTORY--directorio-trabajo-' >--+-----------------------------------------------+------------| '-ADMINISTRATION-TABLES-IN--nombre-espaciotabla-' opciones-resultados-búsqueda-antememoria: |--CACHE TABLE--------------------------------------------------> .-','--------------------------------------------. V | >--(----expresión-columna-SQL--+---------------------+-+--)-----> '-AS--nombre-atributo-' >--+--------------------------------+---------------------------> +-PERSISTENT--+----------------+-+ | '-IN--directorio-' | '-TEMPORARY----------------------' >--+---------------------+--------------------------------------> '-PCTFREE--porcentaje-' >--MAXIMUM CACHE SIZE--tamaño-memoria---------------------------> >--+----------------------------------------------------------+--> '-INITIAL SEARCH RESULT ORDER--(--ordenar-por-lista-SQL--)-' >--+----------------------------------------------------------+--| '-KEY COLUMNS FOR INDEX ON VIEW--(lista-nombrecolumna-SQL)-' opciones-configuración-índice: .-,------------. V | |--INDEX CONFIGURATION--(----valor-opción-+--)------------------| opciones-conexión: |--CONNECT-TO--nombre-basedatos--+------------------------------------+--| '-USER--idusuario--USING--contraseña-'
Parámetros del mandato
Consulte el Apéndice C, Catálogos de información de Net Search Extender para obtener más detalles. Tenga en cuenta que el nombre de índice debe ser un nombre de índice de DB2 válido.
Tenga en cuenta que cuando el nombre de tabla no hace referencia a una tabla base de DB2, se aplican las limitaciones siguientes:
Si el tipo de la columna no es ninguno de los anteriores, especifique la función de transformación utilizando esquema-función.nombre-función para convertir el tipo de columna.
Tenga en cuenta que, si utiliza una columna de Data Link, el contenido al que se haga referencia se captará para la indexación. Esto se realiza mediante el protocolo que forma parte del valor de Data Link; por ejemplo, Http. Cuando utilice protocolos distintos a "file" o "unc", asegúrese de que reciban soporte con los servidores que formen parte de los valores de Data Link. Puesto que se podrían necesitar servidores proxy para obtener el contenido del archivo, el administrador de la base de datos puede especificarlos en la tabla DB2EXT.PROXYINFORMATION antes de crear el índice.
Tenga en cuenta que se permiten varios índices en las mismas columnas, pero sólo bajo las condiciones siguientes:
Por lo tanto, no importa el índice que los argumentos CONTAINS, SCORE o NUMBER OF DOCUMENTS elijan.
Determine los nombres de atributos para las expresiones utilizando las normas siguientes:
Por ejemplo: ATTRIBUTES (CAST(JULIAN_DAY(date) AS DOUBLE) as day, (price1+price2)/2 as avg_price)
Tenga en cuenta que los atributos sin comillas se correlacionan a mayúsculas y se deben especificar de esta manera durante la búsqueda.
Para los formatos de documentos estructurados, es posible especificar la información en un archivo de modelos de documento. Si no se especifica ningún modelo de documento, el texto del documento se indexa utilizando un modelo de documento por omisión. Consulte la sección Modelos de documento.
Si no se especifica la palabra clave format, el valor por omisión se tomará de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME='FORMAT'.
Puesto que no es necesario hacer referencia a los modelos de documento en las condiciones de búsqueda, en lugar de esto utilice todos los nombres de sección del archivo de modelos. Para obtener información detallada sobre los modelos de documento, consulte el Capítulo 9, Cómo trabajar con documentos estructurados. Tenga en cuenta que, como el modelo de documento sólo se lee durante la ejecución del mandato CREATE INDEX, los cambios posteriores no se reconocen para este índice.
Tenga en cuenta que, en un entorno DB2 distribuido, la víaacceso-archivo-modelos debe estar accesible desde cada nodo utilizando un sistema de archivos compartido.
El valor por omisión se toma de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME='UPDATEFREQUENCY'.
Tenga en cuenta que este valor se ignora en un mandato de DB2TEXT UPDATE. Esta opción no puede utilizarse con la opción RECREATE INDEX ON UPDATE porque el número de cambios no está disponible sin una tabla de anotaciones cronológicas y activadores para la actualización incremental.
Para las bases de datos distribuidas, UPDATE MINIMUM se comprueba en cada nodo.
REORGANIZE MANUAL sólo puede realizarse con un mandato UPDATE manual, utilizando la opción REORGANIZE.
Si se omite la cláusula REORGANIZE, el valor por omisión se toma de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME='AUTOMATICREORG'.
Para obtener más información sobre la opción REORGANIZE, vea UPDATE INDEX.
El esquema-control-capturas es el nombre de esquema de las tablas de control de duplicación; por ejemplo IBMSNAP_PRUNE_SET en el sistema DB2 local. Las tablas de control de duplicación deben estar disponibles como apodos en el sistema DB2 local después de configurar la duplicación.
Como mínimo, debe haber apodos disponibles para las siguientes tablas de control de capturas:
Como el Centro de duplicación de DB2 no garantiza automáticamente la creación de apodos locales para una tabla de capturas remota y las tablas de control de capturas, esta tarea es similar a la de crear un apodo para que tabla en la que se debe crear el índice de texto.
Los nombres de las columnas de clave primaria del apodo de la tabla de usuario y del apodo de la tabla de capturas deben coincidir. Además, los nombres de las columnas IBMSNAP_OPERATION, IBMSNAP_COMMITSEQ e IBMSNAP_INTENTSEQ no se deben cambiar en el apodo de la tabla de capturas.
Tras la creación del índice, los nombres de las columnas DB2EXT.TEXTINDEXES(LOGVIEWNAME) y DB2EXT.TEXTINDEXES(LOGVIEWSCHEMA) harán referencia al nombre local de la tabla de capturas de duplicación.
Puesto que Net Search Extender no necesita todas las funciones del Centro de duplicación de DB2, la tabla de datos de cambio (CD) o la tabla de datos de cambio coherentes (CCD) deben obedecer las siguientes normas:
Entre otros requisitos están los siguientes:
Notas y restricciones |
---|
Asegúrese de que se inserta en la tabla de registro el nombre correcto de la tabla fuente. Dependiendo del tipo de DBMS remoto, se debe utilizar el nombre de la tabla remota o el apodo local:
Debe existir una correlación de usuario para que el usuario local pueda acceder a los datos remotos mediante apodos y el usuario remoto debe tener privilegio de control sobre las tablas. Si el ID de usuario del propietario de la instancia de DB2 es diferente del ID de usuario local, se necesitará una correlación de usuario adicional para el ID de usuario del propietario de la instancias de DB2. El nombre de tabla base especificado no debe ser una vista en un apodo. Esto se debe a que puede haber una vista sobre varios apodos y también pueden estar implicadas varias tablas CD y CCD. Puesto que sólo se puede especificar una tabla CD o CCD en la cláusula de capturas de duplicación, no se puede dar soporte a una vista sobre apodos. Además, no se puede dar soporte a los apodos en vistas remotas porque falta la clave primaria. La tabla C(C)D debe ser un apodo y no puede ser una vista o un alias. Para obtener información sobre la publicación DB2 Replication Guide and Reference Version 8, consulte la sección Información relacionada. |
El valor COMMITCOUNT FOR UPDATE para el índice se encuentra en DB2EXT.TEXTINDEXES.COMMITCOUNT. Es posible cambiarlo para cada índice utilizando el mandato ALTER INDEX. También se aplica al proceso de actualización programado según la especificación UPDATE FREQUENCY. Un valor de 0 significa que la actualización se ha completado en una transacción y los valores >0 especifican el número de documentos que se procesan en una transacción.
La utilización de commitcount tiene implicaciones en el rendimiento. Para obtener información, consulte la sección Consideraciones sobre el rendimiento.
Nota |
---|
No se crea ningún activador en la tabla del usuario y no se crea ninguna tabla de anotaciones cronológicas. |
El valor por omisión se toma de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME=INDEXDIRECTORY'. Se crea un subdirectorio, NODE<nr>, en el directorio para distinguir los índices de nodos lógicos de un servidor.
Tenga en cuenta que, en un entorno DB2 distribuido, este directorio tiene que existir en cada nodo físico.
El valor por omisión se toma de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME='WORKDIRECTORY'. Se crea un subdirectorio, NODE<nr>, en el directorio para distinguir los índices de nodos lógicos de un servidor.
Tenga en cuenta que, en un entorno DB2 distribuido, este directorio tiene que existir en cada nodo físico.
En caso de un apodo o una vista, DB2 elige el espacio de tabla por omisión.
Al crear índices de texto sobre vistas, apodos o índices de texto para la búsqueda de procedimiento almacenado en una entorno DB2 distribuido, el espacio de tabla debe ser de un solo nodo.
Defina las expresiones de columna-SQL utilizando nombres de columna no calificados de la tabla en la que se ha creado el índice. Los tipos de expresiones de columna-SQL permitidos son los tipos diferenciados definidos por el usuario e incorporados. Los nombres de columna del conjunto resultantes se determinan utilizando las reglas siguientes:
Los tipos de datos CLOB no reciben soporte como tipos de datos de antememoria. Se deben convertir en VARCHARS.
Nota |
---|
Tenga en cuenta que si los nombres de columna del conjunto resultante no están separados, el mandato CREATE INDEX devuelve un error. Tenga en cuenta también que la tabla de la antememoria no se activa implícitamente después de su creación. Por ejemplo, no es posible realizar búsquedas por procedimiento almacenado hasta que se realiza DB2TEXT ACTIVATE CACHE. |
Esta opción sólo puede utilizarse en un entorno DB2 distribuido si la tabla del usuario está almacenada en un espacio de tabla de un solo nodo.
Tenga en cuenta que si no se especifica el directorio, el valor por omisión se toma de la vista DB2EXT.DBDEFAULTS, donde DEFAULTNAME='CACHEDIRECTORY'.
El límite de tamaño de antememoria máximo en las distintas plataformas es el siguiente:
Para obtener más información, consulte la sección Apéndice B, Utilización de grandes cantidades de memoria.
Vea ACTIVATE CACHE para obtener más detalles.
Para obtener más información, vea el Capítulo 16, Función de búsqueda del procedimiento almacenado.
Nota |
---|
El orden del índice no puede garantizarse para los documentos nuevos o modificados después de un actualización incremental. Por ejemplo: INITIAL RESULT ORDER(length(column1) asc, column2+column3 desc) |
Como DB2 no puede comprobar esta exclusividad, como en el caso de las claves primarias, el usuario es responsable de garantizar la exclusividad equivalente. Las columnas especificadas forman parte de la tabla de anotaciones cronológicas del índice.
Opción | Valores | Descripción |
TreatNumbersAsWords | 0 ó 1 | Interpreta secuencias de dígitos como palabras independientes, aunque sean adyacentes a caracteres. Por ejemplo, el valor por omisión 0 significa que tea42at5 se considera una palabra. |
IndexStopWords | 0 ó 1 | Considera o ignora las palabras de relleno durante la indexación. Actualmente, la lista de palabras de relleno es un archivo UCS-2 <idioma>.tsw del directorio <instancia>/sqllib/db2ext/resources. Los cambios realizados en este archivo no tienen efecto después de la creación del índice. Tenga en cuenta también que <idioma> es el valor LANGUAGE del mandato CREATE INDEX. |
UpdateDelay | segundos | Especifica la duración en segundos de la actualización incremental sin tablas de capturas. Sólo se tomarán de la tabla de registro las entradas más antiguas que esta duración. De esta manera se evitará perder actualizaciones como, por ejemplo, cambios de documentos que no están reflejados en el índice de situaciones de transacciones donde las transacciones interfieren con los mandatos de actualización. Por lo tanto, el parámetro UpdateDelay debe establecerse en la duración máxima de la transacción de grabación del usuario en la tabla en la que se creó el índice. |
Las entradas de estas tablas se identifican de modo exclusivo mediante las columnas siguientes:
Vea *** para obtener más información sobre las columnas.
Uso
La creación de un índice de texto completo requiere una clave primaria en la tabla del usuario. En DB2 Net Search Extender Versión 8.1, puede utilizarse una clave primaria de DB2 de varias columnas sin límite de tipo. Sin embargo, para utilizar la búsqueda de valores de tablas no están permitidas las claves primarias compuestas.
El número de columnas de clave primaria está limitado a 14, la longitud total de todas las columnas de clave primaria está limitada a 1024 - 14 = 1010 bytes.
Nota |
---|
Después de crear el índice, no debe cambiarse la longitud de las columnas de clave primaria ni las columnas de clave de vista con los mandatos ALTER TABLE. La sincronización entre la tabla del usuario, el índice de texto completo y la tabla de resultados de la antememoria se completa durante el mandato de actualización de índice. Para obtener más información, vea UPDATE INDEX. |