OmniFind Text Search Server for DB2 for i

Anuncio
IBM i
e-business y servicio Web
OmniFind Text Search Server for DB2 for i
7.1
IBM i
e-business y servicio Web
OmniFind Text Search Server for DB2 for i
7.1
Nota
Antes de utilizar esta información y el producto al que hace referencia, lea la información del
apartado “Avisos”, en la página 111.
Esta edición se aplica a la versión 1, release 2, modificación 0 de OmniFind Text Search Server for DB2 for i
(número de producto 5733-OMF) y a todos los releases y modificaciones subsiguientes hasta que se indique lo
contrario en nuevas ediciones. Esta versión no funciona en todos los modelos RISC (sistema de conjunto reducido
de instrucciones) ni tampoco en modelos CISC.
© Copyright IBM Corporation 2002, 2010.
Contenido
| OmniFind Text Search Server for DB2
| for i . . . . . . . . . . . . . . . . 1
| Novedades de IBM i 7.1 . . . . . . . . . . 1
| Archivo PDF para OmniFind Text Search Server for
| DB2 for i . . . . . . . . . . . . . . . 1
| Introducción a OmniFind Text Search Server for DB2
| for i . . . . . . . . . . . . . . . . . 2
Visión general de OmniFind Text Search Server for
|
DB2 for i . . . . . . . . . . . . . . 2
|
Requisitos del sistema para la instalación de
|
OmniFind Text Search Server for DB2 for i . . . 4
|
| Conceptos clave . . . . . . . . . . . . . 4
Crear y actualizar un índice de búsqueda de texto 4
|
Indexación asíncrona y desencadenantes . . . . 5
|
Formatos de documento soportados . . . . . 6
|
Tipos de datos soportados . . . . . . . . . 7
|
Puntuación de texto y soporte de sinónimos . . . 7
|
Proceso lingüístico . . . . . . . . . . . 8
|
Nombre de alias de servidor. . . . . . . . 11
|
| Instalar y configurar funciones de búsqueda de
| texto. . . . . . . . . . . . . . . . . 12
Instalar OmniFind Text Search Server for DB2 for
|
i . . . . . . . . . . . . . . . . . 12
|
Iniciar funciones de búsqueda de texto . . . . 13
|
Crear un índice de búsqueda de texto . . . . 14
|
Actualizar un índice de búsqueda de texto . . . 14
|
Buscar en un índice de búsqueda de texto . . . 14
|
Recorte de documentos . . . . . . . . . 15
|
| Procedimientos almacenados de administración para
| búsqueda de texto . . . . . . . . . . . . 15
SYSPROC.SYSTS_START . . . . . . . . . 15
|
SYSPROC.SYSTS_STOP . . . . . . . . . 17
|
SYSPROC.SYSTS_CREATE . . . . . . . . 19
|
SYSPROC.SYSTS_ALTER . . . . . . . . . 28
|
SYSPROC.SYSTS_DROP . . . . . . . . . 33
|
SYSPROC.SYSTS_UPDATE . . . . . . . . 34
|
| Buscar con un índice de búsqueda de texto . . . . 37
CONTAINS . . . . . . . . . . . . . 37
|
SCORE . . . . . . . . . . . . . . . 39
|
Sintaxis de argumentos de búsqueda . . . . . 42
|
© Copyright IBM Corp. 2002, 2010
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Búsqueda XML . . . . . . . . . . . . 47
Administrar un OmniFind(r) Text Search Server for
DB2(r) for i . . . . . . . . . . . . . . 63
Iniciar OmniFind Text Search Server for DB2 for i 63
Detener OmniFind Text Search Server for DB2 for
i . . . . . . . . . . . . . . . . . 63
Salvar y restaurar índices de búsqueda de texto
64
Determinación de problemas . . . . . . . 67
Visualizar y guardar registros del servidor . . . 68
Herramientas de administración . . . . . . 69
Herramienta ServerInstance . . . . . . . . 79
Consideraciones relativas a las ASP
independientes para OmniFind Text Search
Server for DB2 for i. . . . . . . . . . . 80
Alta disponibilidad . . . . . . . . . . . 82
Análisis del rendimiento . . . . . . . . . 83
Consideraciones relativas a las transacciones . . 86
Utilizar IBM Systems Director Navigator for i . . 87
Utilizar System i Navigator . . . . . . . . 93
Tablas de administración de búsqueda de texto . . 100
Tabla de administración
QSYS2.SYSTEXTDEFAULTS . . . . . . . 100
Tabla de administración
QSYS2.SYSTEXTINDEXES . . . . . . . . 101
Tabla de administración
QSYS2.SYSTEXTCOLUMNS . . . . . . . 103
Tabla de administración
QSYS2.SYSTEXTSERVERS . . . . . . . . 104
Tabla de administración
QSYS2.SYSTEXTCONFIGURATION . . . . . 105
Tabla de administración
QSYS2.SYSTEXTSERVERHISTORY . . . . . 106
Mensajes y códigos . . . . . . . . . . . 106
Mensajes de OmniFind . . . . . . . . . 106
Apéndice. Avisos . . . . . . . . . . 111
Información sobre interfaces de programación
Marcas registradas. . . . . . . . . .
Términos y condiciones . . . . . . . .
.
.
.
. 113
. 113
. 113
iii
iv
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
OmniFind Text Search Server for DB2 for i
|
|
OmniFind Text Search Server for DB2 for i permite emitir sentencias SQL que satisfagan las consultas de
búsqueda de texto habituales en documentos almacenados en una base de datos DB2.
|
|
Nota: Al utilizar los ejemplos de código, acepta los términos del apartado “Información sobre licencia de
código y exención de responsabilidad” en la página 109.
|
|
Novedades de IBM i 7.1
|
|
Información relativa a las novedades o cambios significativos realizados en el temario de OmniFind Text
Search Server for DB2 for i.
|
|
|
|
|
Las principales características nuevas son las siguientes:
v Función “Búsqueda XML” en la página 47 mejorada
|
|
|
v Índice de búsqueda de texto para columnas XML de DB2: “Ejemplo de búsqueda XML” en la página
58
v “Salvar y restaurar un índice de búsqueda de texto sin datos” en la página 64
|
|
|
|
|
|
|
v “Nombre de alias de servidor” en la página 11
v Dos interfaces GUI:
– “Utilizar IBM Systems Director Navigator for i” en la página 87
– “Utilizar System i Navigator” en la página 93
v “Alta disponibilidad” en la página 82
v “Análisis del rendimiento” en la página 83
v “Consideraciones relativas a las transacciones” en la página 86
|
Cómo visualizar las novedades o cambios
– “Utilizar espacios de nombres en una búsqueda” en la página 54
– “Comparaciones numéricas” en la página 50
– “Comparaciones de Date y DateTime” en la página 50
Para facilitar la visualización de los cambios técnicos, el Information Center utiliza:
para marcar el inicio de información nueva o modificada.
v La imagen de
para marcar el final de la información nueva o modificada.
| v La imagen de
|
|
| En los archivos PDF, puede que observe barras de revisión (|) en el margen izquierdo de la información
| nueva o modificada.
| Para buscar otra información relativa a las novedades o cambios de este release, consulte el
| Memorándum para los usuarios.
|
|
Archivo PDF para OmniFind Text Search Server for DB2 for i
|
Utilice esta página para visualizar e imprimir un PDF de esta información.
|
|
Para visualizar o descargar el archivo PDF de este documento, seleccione OmniFind Text Search Server
for DB2 for i (aproximadamente 1192 KB).
© Copyright IBM Corp. 2002, 2010
1
| Otra información
| También puede visualizar o imprimir cualquiera de estos archivos PDF:
| v Preparing for and Tuning the SQL Query Engine on DB2 for i5/OS
| v SQL Performance Diagnosis on IBM® DB2 Universal Database for iSeries
| .
| Guardar archivos PDF
| Para guardar un PDF en la estación de trabajo a fin de visualizarlo o imprimirlo:
| 1. Pulse con el botón derecho del ratón el PDF en el navegador (pulse con el botón derecho del ratón el
enlace precedente).
|
| 2. Pulse la opción que guarda el PDF localmente.
| 3. Vaya al directorio en el que desee guardar el PDF.
| 4. Pulse Guardar.
®
| Descargar Adobe Reader
| Es necesario tener instalado Adobe Reader en el sistema para visualizar o imprimir estos archivos PDF.
| Puede descargar una copia gratuita desde Adobe (http://get.adobe.com/reader/)
|
|
.
Introducción a OmniFind Text Search Server for DB2 for i
| DB2 for i utiliza OmniFind(r) Text Search Server como motor de indexación y búsqueda de los
| documentos almacenados en una base de datos DB2.
|
|
|
|
|
|
OMNIFIND es un producto de búsqueda de texto que permite a los usuarios de IBM i realizar búsquedas
en texto no estructurado almacenado en una columna de una tabla de DB2 for i. El texto almacenado en
la columna puede ser texto simple de tipo carácter, un documento XML o alguno de los diversos tipos de
documentos de texto enriquecido, como por ejemplo un archivo PDF o DOC. El producto permite a los
usuarios indexar datos no estructurados sin necesidad de analizarlos en un formato estructurado, como
por ejemplo una tabla SQL.
|
|
|
|
|
OmniFind Text Search Server es un motor de búsqueda según contexto. Da soporte a la prestación de
búsquedas aproximadas. Por ejemplo, la búsqueda de 'mice' (ratón, en inglés) descubrirá los documentos
que contienen 'mice' (ratones, en inglés) o 'mouse'. El motor de búsqueda también da soporte al contexto
idiomático. Por ejemplo, comprende los equivalentes de búsqueda aproximada de 'mice' y 'mouse' tanto
en inglés como en español.
|
|
|
|
Muchas aplicaciones pueden aprovechar esta prestación. Un buen ejemplo de ello es una base de datos
de Recursos humanos. Los currículos de los candidatos pueden almacenarse en la base de datos en
cualquier formato que permita someterlos. Pueden utilizarse búsquedas subsiguientes mediante
OmniFind para buscar candidatos potenciales con determinadas habilidades clave.
|
Visión general de OmniFind Text Search Server for DB2 for i
|
|
|
|
|
OmniFind Text Search Server for DB2 for i suministra un conjunto de procedimientos almacenados
administrativos y dos funciones incorporadas: CONTAINS y SCORE. Estas funciones se utilizan para
realizar búsquedas en los índices de texto creados a partir de los documentos almacenados en una tabla
de DB2. Los procedimientos almacenados administrativos se utilizan para habilitar e inhabilitar la
búsqueda de texto y para crear, actualizar y eliminar índices de texto.
2
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
Un índice de texto puede crearse a partir de cualquier columna de los tipos de datos siguientes:
v CHAR
v VARCHAR
v CLOB
v BLOB
|
|
|
|
|
|
v
v
v
v
v
v
|
|
|
Los datos pueden contener texto sin formato, HTML, XML o diversos tipos de documentos enriquecidos,
como por ejemplo archivos PDF. Los datos se leen de la columna de texto y se convierten a Unicode
(CCSID 1208) antes de indexarlos.
|
|
|
|
Los índices de texto no son índices DB2 típicos. No se mantienen automáticamente, no pueden registrarse
por diario ni puede realizarse una copia de seguridad de los mismos mediante los métodos típicos de
copia de seguridad y restauración. Los índices de texto se crean y almacenan en un servidor de búsqueda
de texto.
|
|
|
Por omisión, el servidor de búsqueda de texto se crea en el mismo sistema que los datos almacenados en
la base de datos DB2. Sin embargo, un servidor de búsqueda de texto puede crearse en otro servidor que
ejecute IBM i, Linux®, UNIX®, AIX o Windows®.
DBCLOB
GRAPHIC
VARGRAPHIC
BINARY
VARBINARY
XML
| El servidor de búsqueda de texto contiene una colección de términos significativos extraídos de cada fila
| de la columna. Para la comunicación con el servidor de búsqueda de texto, se utiliza una conexión
| TCP/IP.
| CONTAINS y SCORE son funciones incorporadas integradas en DB2 for i.
| DB2 for i utiliza OmniFind(r) Text Search Server como motor de indexación y búsqueda de los
| documentos almacenados en una base de datos DB2.
| OMNIFIND admite varias colecciones. Una colección contiene un índice de búsqueda de texto y las
| opciones específicas del índice para analizar, indexar y buscar.
| OMNIFIND tiene una interfaz gráfica de usuario para la administración de servidores e índices de texto.
El servidor de búsqueda de texto también suministra procedimientos almacenados SQL y herramientas de
línea de mandatos que pueden utilizarse para tareas habituales. Estas tareas habituales incluyen la
configuración y administración del servidor de búsqueda de texto, la creación de un diccionario de
sinónimos para una colección y el diagnóstico de problemas.
Conceptos relacionados
|
“Procedimientos almacenados de administración para búsqueda de texto” en la página 15
|
Puede iniciar y detener funciones de búsqueda de texto y crear, eliminar y actualizar índices de
|
búsqueda de texto mediante un conjunto de procedimientos almacenados SQL de administración.
|
Estos procedimientos pueden invocarse desde cualquier interfaz de SQL. No puede llamar a estos
|
procedimientos desde una línea de mandatos de IBM i mediante mandatos CL.
|
|
|
|
|
|
Referencia relacionada
OmniFind Text Search Server
3
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
|
|
|
|
|
|
|
|
|
Requisitos del sistema para la instalación de OmniFind Text Search
Server for DB2 for i
| Antes de instalar OmniFind Text Search Server for DB2 for i, asegúrese de que el sistema cumple todos
| los requisitos de hardware, software y sistema operativo.
| Al instalar OmniFind Text Search Server for DB2 for i, el programa de instalación crea un servidor de
| búsqueda de texto para IBM i. Puede instalar servidores de búsqueda de texto en servidores remotos que
| ejecuten Linux o Windows. Estos servidores forman parte de DB2 Accessories Suite for z/OS (5655-R14)
| (http://www-01.ibm.com/software/data/db2imstools/db2tools/accessories-suite/)
| contiene información relativa a la descarga de la suite.
. El enlace
| Requisitos de software
| Asegúrese de que el sistema cumple los siguientes requisitos mínimos de software:
| v IBM Java™ Runtime 1.5 SR4
| v DB2 Universal Java Driver instalado y configurado en el servidor de búsqueda de texto
| v Para IBM i, deben estar instalados los programas siguientes:
– 5770SS1 Opción 30 Qshell
– 5770SS1 Opción 33 IBM i Portable Application Solutions Environment (IBM i PASE)
– 5770SS1 Opción 39 International Components for Unicode
|
|
|
|
|
|
– Haber aplicado al sistema el PTF de grupo más reciente para IBM DB2 for i.
Conceptos clave
| La comprensión de los conceptos clave acerca de las funciones de búsqueda de texto le ayudará a
| aprovechar las ventajas de OmniFind Text Search for DB2 for i. Los conceptos clave son los tipos de
| documentos y los idiomas soportados.
|
Crear y actualizar un índice de búsqueda de texto
| Puede crear un índice de búsqueda de texto definiendo y declarando las propiedades del mismo. Puede
| actualizar un índice de búsqueda de texto añadiendo al mismo datos nuevos de una tabla de DB2.
| También puede actualizar un índice de búsqueda de texto cambiando los datos existentes en el mismo.
| Para cada índice de búsqueda de texto que cree, se creará una colección en OmniFind Text Search Server
| for DB2 for i. Tras la creación inicial, el índice de búsqueda de texto no contiene datos.
|
|
|
|
Los datos se añaden al índice de búsqueda de texto llamando al procedimiento almacenado
SYSPROC.SYSTS_UPDATE. El primer proceso de actualización añade todos los documentos de texto de
la columna de texto al índice de búsqueda de texto. Este proceso se conoce como actualización inicial. Las
actualizaciones subsiguientes son incrementales.
| Cuando se crea un índice de búsqueda de texto, se crean o actualizan los objetos siguientes:
| v La tabla intermedia se crea en la biblioteca QSYS2.
4
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
v Los desencadenantes INSERT, DELETE y UPDATE se añaden a la tabla base.
v Se crea una vista SQL con el nombre del índice de búsqueda de texto en el esquema del índice de
búsqueda de texto. Esta vista contiene información acerca del índice de texto. Por ejemplo, la vista
puede utilizarse para obtener el nombre de la tabla base y el nombre de la tabla intermedia. La vista
también muestra el número de cambios pendientes realizados en la tabla base que aún no se han
reflejado en el índice de búsqueda de texto.
v Los catálogos de índice de búsqueda de texto (SYSTEXTINDEXES y SYSTEXTCOLUMNS) de la
biblioteca QSYS2 se actualizan añadiendo una entrada para el nuevo índice de búsqueda de texto.
|
|
|
|
|
Consideraciones relativas a la tabla intermedia:
v No realice ninguna operación de base de datos en la tabla intermedia, excepto salvar y restaurar el
archivo o cambiar autorizaciones.
v Si está cambiando las autorizaciones sobre la tabla base, cambie también las autorizaciones sobre la
tabla intermedia.
|
|
|
|
|
|
|
|
Consideraciones relativas a la tabla base:
v No elimine los desencadenantes DELETE, UPDATE e INSERT que se han añadido al crear un índice de
búsqueda de texto.
v Al eliminar el índice de búsqueda de texto, se eliminan los desencadenantes.
v No modifique ni elimine el valor de ROWID, clave primaria o columna exclusiva utilizado como clave
en el índice de búsqueda de texto.
v La modificación de los datos de columna de la tabla base que provocan truncamiento de datos pueden
dar como resultado falsas coincidencias positivas en el índice de búsqueda de texto.
|
|
|
|
|
|
|
|
|
|
|
|
Referencia relacionada
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
“Tabla de administración QSYS2.SYSTEXTCOLUMNS” en la página 103
Puede visualizar información acerca de las columnas de texto de un índice de búsqueda de texto en la
tabla de administración QSYS2.SYSTEXTCOLUMNS. Cada índice de búsqueda de texto tiene un ID de
índice, nombres de columna de texto y el nombre de esquema de la tabla base.
|
Indexación asíncrona y desencadenantes
|
|
Puede actualizar el índice de búsqueda de texto en OmniFind Text Search Server for DB2 for i
manualmente o planificarlo para que se ejecute automáticamente.
|
|
|
El índice de búsqueda de texto que se conserva en OmniFind Text Search Server for DB2 for i no se
actualiza síncronamente cuando se actualiza la tabla de DB2. La actualización de un índice de búsqueda
de texto es una operación extensa.
|
|
|
|
|
|
En lugar de ello, existen desencadenantes que capturan los cambios realizados en la columna de la tabla
de DB2 en una tabla de registro local. Esta tabla de registro también se denomina tabla intermedia. Estos
desencadenantes almacenan automáticamente la información relativa a los documentos nuevos,
cambiados y suprimidos en una tabla de registro. Cada tabla de registro está asociada a un índice de
búsqueda de texto. La aplicación del contenido de la tabla de registro a su índice de búsqueda de texto
correspondiente se denomina actualización incremental.
OmniFind Text Search Server
5
| Debe actualizar periódicamente el índice de búsqueda de texto para que los cambios se reflejen en las
| consultas.
| Puede actualizar el índice de búsqueda de texto manualmente llamando al procedimiento almacenado
| SYSPROC.SYSTS_UPDATE.
| Las actualizaciones también pueden planificarse para que se produzcan automáticamente especificando la
| cláusula UPDATE FREQUENCY en el procedimiento SYSPROC.SYSTS_CREATE al crear el índice de
| texto.
|
Referencia relacionada
|
“SYSPROC.SYSTS_CREATE” en la página 19
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
|
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
|
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
|
SQL que contengan las funciones CONTAINS o SCORE.
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
|
|
|
Formatos de documento soportados
| Los datos de una columna de texto pueden ser texto sin formato, un documento HTML, un XML o
| cualquier documento que el motor de búsqueda reconozca.
| OmniFind Text Search Server for DB2 for i analiza los documentos para extraer las partes relevantes y
| hacer disponibles para las búsquedas. Por ejemplo, los códigos y metadatos de un documento HTML no
| se indexan.
| Está soportado el análisis de los formatos de documento siguientes:
| v TEXT: texto sin formato
| v HTML: lenguaje de marcado de hipertexto
| v XML: lenguaje de códigos ampliable
| v INSO: OmniFind Text Search Server for DB2 for i utiliza filtros para detectar el formato de los
documentos de texto. Están soportados los siguientes formatos de documento INSO:
|
– XML
|
– HTML
|
– JustSystems Ichitaro
|
– Lotus 123
|
– Lotus Freelance
|
|
|
|
|
|
|
–
–
–
–
|
|
|
|
|
–
–
–
–
–
Lotus WordPro
Microsoft® Excel
Microsoft PowerPoint
Microsoft Rich Text Format
– Microsoft Visio
– Microsoft Word
6
Microsoft Write
Portable Document Format (PDF)
Quattro Pro
Rich Text RTF
StarOffice Calc y OpenOffice Calc
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Todos los documentos de una columna de texto indexado deben tener el mismo formato (TEXT, HTML,
XML o INSO).
|
Datos XML
|
|
|
|
|
|
|
|
|
|
La estructura XML de los datos XML se indexa en OmniFind Text Search Server for DB2 for i después de
analizar los datos por medio de un analizador XML. A continuación, puede utilizar la sintaxis de consulta
de búsquedas XML soportada para recuperar los resultados.
|
Tipos de datos soportados
|
|
Los datos de las columnas de texto que desea indexar y en las que realizar búsquedas pueden ser datos
binarios o datos de tipo carácter.
|
|
|
Los tipos de datos siguientes son datos binarios:
|
|
|
|
|
|
|
|
|
Conceptos relacionados
“Búsqueda XML” en la página 47
Puede indexar y realizar búsquedas en documentos XML. La gramática de búsqueda XML utiliza un
subconjunto del lenguaje W3 XPath con ampliaciones para búsqueda de texto. Las ampliaciones dan
soporte a búsquedas de rango de valores numéricos, de fecha (Date) y fecha y hora (DateTime)
asociados con un atributo o elemento XML. Los elementos estructurales pueden utilizarse por
separado o combinarse con texto sin formato en las consultas.
v BINARY
v VARBINARY
v BLOB
Además, OMNIFIND maneja los tipos de datos siguientes de forma similar a los datos binarios:
v CHAR FOR BIT DATA
v VARCHAR FOR BIT DATA
Los tipos de datos siguientes son datos de tipo carácter:
v CHAR FOR SBCS DATA o FOR MIXED DATA
v VARCHAR FOR SBCS DATA o FOR MIXED DATA
v CLOB
v DBCLOB
|
v GRAPHIC
v VARGRAPHIC
v XML
|
|
|
Si los datos son binarios, puede especificar el CCSID (identificador de juego de caracteres codificados)
utilizado para crear el índice de búsqueda de texto. Para datos de tipo carácter, la base de datos DB2
conoce la codificación; por tanto, si especifica explícitamente un CCSID, dicha especificación se ignora.
|
Puntuación de texto y soporte de sinónimos
|
|
Puede utilizar sinónimos para mejorar los resultados de una consulta. Puede utilizar una puntuación de
texto para averiguar el grado de exactitud con el que un resultado coincide con la consulta.
|
Puntuación de texto
|
|
Una puntuación de texto se calcula como parte de la búsqueda y puede incluirse en los resultados de la
consulta. Una puntuación de texto es un valor de 0 a 1, de hasta tres dígitos decimales; por ejemplo,
|
|
OmniFind Text Search Server
7
| 0,000 a 1,000. Una puntuación de texto indica el grado de exactitud con el que un resultado coincide con
| la consulta en relación a todos los demás documentos del índice de búsqueda de texto.
|
|
|
|
OMNIFIND compone la puntuación de texto a partir de diversos factores, tales como la importancia
genérica de los términos de búsqueda y la proximidad de apariciones de los términos de búsqueda. La
importancia general se basa en la frecuencia de los términos de cada documento y en el desplazamiento
de la frecuencia de los términos en todos los documentos.
| Soporte de sinónimos
|
|
|
|
|
OmniFind Text Search Server for DB2 for i admite la utilización de sinónimos para modificar los
resultados de una consulta. La utilización de sinónimos puede aumentar el número de resultados de
consulta haciendo que más documentos coincidan con una consulta. Sin embargo, el uso de sinónimos
también puede disminuir la precisión de una consulta y dificultar la búsqueda de un número menor de
documentos que coincidan con los criterios de búsqueda exactos.
| Por omisión, no se utilizan sinónimos para una consulta. Para utilizar sinónimos en una consulta, cree un
| diccionario de sinónimos y añádalo a una colección mediante la herramienta de sinónimos.
| Para obtener más información acerca de los sinónimos, consulte el apartado “Diccionarios de sinónimos”
| en la página 75.
Referencia relacionada
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
|
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
|
Proceso lingüístico
| OmniFind Text Search Server for DB2 for i suministra paquetes de diccionarios para dar soporte al
| proceso lingüístico de documentos y consultas que no están en inglés.
|
|
|
|
|
Como alternativa a la segmentación de palabras basada en diccionarios, OmniFind Text Search Server for
DB2 for i utiliza soporte de segmentación n-gram para idiomas tales como el chino, el japonés y el coreano.
La segmentación n-gram es un método de análisis que considera las secuencias solapadas de un número de
caracteres determinado como una sola palabra. Como alternativa, la segmentación de espacio en blanco
basada en Unicode utiliza un espacio en blanco para delimitar las palabras.
| Si un documento de texto se encuentra en uno de los idiomas soportados, el proceso lingüístico se lleva a
| cabo cuando el texto se analiza para generar señales. Para los idiomas no soportados, se devuelve un
| código de error.
| Al realizar una búsqueda en un índice de búsqueda de texto, se indica una coincidencia que contiene
| variantes lingüísticas de los términos de consulta. Las variantes de una palabra dependen del idioma de
| la consulta.
| Idiomas soportados
| Puede especificar que los documentos de texto se procesen mediante un idioma específico.
|
|
|
|
|
Puede especificar el idioma de los datos de texto indexados en el procedimiento almacenado de
administración SYSPROC.SYSTS_CREATE. Si establece el valor en AUTO, OmniFind Text Search Server
for DB2 for i intentará determinar el idioma. Para documentos breves, la detección automática puede no
ser exacta y no es recomendable. El idioma predeterminado para el proceso lingüístico es el inglés
(en_US).
8
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
La tabla siguiente muestra los códigos de idioma de cinco caracteres correspondientes a los idiomas
soportados.
|
Tabla 1. Códigos de idioma de cinco caracteres correspondientes a los idiomas soportados
|
Código de idioma
Idioma
|
ar_AA
Árabe
|
cs_CZ
Checo
|
da_DK
Danés
|
de_CH
Alemán (Suiza)
|
de_DE
Alemán (Alemania)
|
el_GR
Griego
|
en_AU
Inglés (Australia)
|
en_GB
Inglés (Reino Unido)
|
en_US
Inglés (Estados Unidos)
|
es_ES
Español (España)
|
fi_FI
Finés
|
fr_CA
Francés (Canadá)
|
fr_FR
Francés (Francia)
|
it_IT
Italiano
|
ja_JP
Japonés
|
ko_KR
Coreano
|
nb_NO
Noruego Bokmal
|
nl_NL
Holandés
|
nn_NO
Noruego Nynorsk
|
pl_PL
Polaco
|
pt_BR
Portugués de Brasil
|
pt_PT
Portugués (Portugal)
|
ru_RU
Ruso
|
sv_SE
Sueco
|
zh_CN
Chino Simplificado
|
|
|
|
|
|
|
|
zh_TW
Chino Tradicional
|
|
|
Proceso lingüístico de documentos en chino, japonés y coreano
|
|
|
|
Para un motor de búsqueda, la obtención de buenos resultados de búsqueda depende en gran medida de
las técnicas utilizadas para procesar el texto. Después de extraer el texto del documento, el primer pasos
del proceso de texto consiste en identificar las palabras individuales del texto. La identificación de las
palabras individuales del texto se denomina segmentación. Para la mayoría de idiomas, puede utilizare el
Referencia relacionada
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
Los documentos escritos en chino, japonés y coreano pueden procesarse mediante segmentación basada
en diccionario o mediante segmentación n-gram.
OmniFind Text Search Server
9
| espacio en blanco (blancos, el final de una línea y determinados caracteres de puntuación) para reconocer
| los límites de palabra. Sin embargo, el chino, el japonés y el coreano no utilizan el espacio en blanco entre
| caracteres para separar las palabras, por lo que deben utilizarse otras técnicas.
| OmniFind Text Search Server for DB2 for i suministra los dos métodos siguientes para dar soporte al
| proceso lingüístico del chino, el japonés y el coreano:
| v Segmentación de palabras basada en diccionario (también denominada análisis morfológico)
| v Segmentación N-gram
| Segmentación de palabras basada en diccionario
|
|
|
|
|
La segmentación de palabras basada en diccionario utiliza un diccionario específico de idioma para identificar
las palabras en la secuencia de caracteres del documento. Esta técnica proporciona resultados de
búsqueda precisos, ya que los diccionarios se utilizan para identificar los límites de palabra. Sin embargo,
la segmentación de palabras basada en diccionario puede no detectar resultados de coincidencia
específicos.
| Segmentación N-gram
| La segmentación N-gram evita el problema de identificar los límites de palabra, y en su lugar indexa pares
| de caracteres solapados. Dado que OmniFind Text Search Server for DB2 for i utiliza dos caracteres, esta
| técnica también se denomina segmentación bi-gram.
| La segmentación n-gram siempre devuelve todos los documentos coincidentes que contienen los términos
| de búsqueda; sin embargo, esta técnica puede devolver a veces documentos que no coinciden con la
| consulta.
| Por omisión, OmniFind Text Search Server for DB2 for i se suministra con un índice preconfigurado que
| utiliza segmentación n-gram para los idiomas chino, japonés y coreano.
|
|
|
|
|
|
Para observar cómo funcionan ambos tipos de proceso lingüístico, examine el texto siguiente de un
documento: elección del gobernador de la prefectura de Kanagawa. En japonés, este texto contiene
ocho caracteres. En este ejemplo, los ocho caracteres se representan como A B C D E F G H. Una consulta
de ejemplo que los usuarios podrían especificar podría ser elección del gobernador, que tiene cuatro
caracteres representados como E F G H. (El texto del documento y la consulta de ejemplo comparten
caracteres similares).
| Si se utiliza el proceso por segmentación n-gram:
|
|
|
Una vez indexado el documento, el motor de búsqueda segmenta el texto elección del
gobernador de la prefectura de Kanagawa en los siguientes conjuntos de caracteres: AB BC CD
DE EF FG GH
|
|
|
|
La consulta de ejemplo elección del gobernador se segmenta en los siguientes conjuntos de
caracteres: DE EF FG GH. Si realiza una búsqueda con la consulta de ejemplo elección del
gobernador, se encontrará el documento. La razón es que las señales tanto para el texto del
documento como para la consulta aparecen en el mismo orden.
|
|
|
|
Si habilita la segmentación n-gram, es posible que visualice más resultados, pero posiblemente
éstos sean menos precisos. Por ejemplo, en japonés, si realiza una búsqueda con la consulta Kyoto
y un documento del índice contiene el texto Ciudad de Tokyo, se encontrará el documento. La
razón es que Ciudad de Tokyo y Kyoto comparten dos de los mismos caracteres del japonés.
| Si no se utiliza el proceso por segmentación n-gram:
Una vez indexado el documento, el motor de búsqueda segmenta el texto elección del
gobernador de la prefectura de Kanagawa en los siguientes conjuntos de caracteres: ABC DEF
GH.
|
|
|
10
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
La consulta de ejemplo elección del gobernador se segmenta en los siguientes conjuntos de
caracteres: EF GH. Los caracteres EF no aparecen en las señales del texto del documento.
(Aunque el documento no contiene EF, sí contiene DEF).
|
|
El texto del documento contiene DEF, pero la consulta sólo contiene EF. Por tanto, es menos
probable que el documento se encuentre mediante la consulta de ejemplo.
|
|
Si no habilita la segmentación n-gram, probablemente recibirá resultados más precisos, aunque
posiblemente su número sea menor.
|
Nombre de alias de servidor
|
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
|
|
|
Cada servidor de búsqueda de texto se identifica de forma exclusiva en la columna SERVERID del
catálogo QSYS2.SYSTEXTSERVERS. La columna SERVERID es un entero generado incrementalmente por
la base de datos.
|
|
|
La columna ALIASNAME de QSYS2.SYSTEXTSERVERS se suministra para permitir la asignación de un
nombre de alias significativo a cada servidor. Los nombres de alias de servidor pueden utilizarse para
hacer referencia a los servidores en los procedimientos SYSTS_START, SYSTS_STOP y SYSTS_CREATE.
|
|
Nota: El nombre de alias de servidor puede cambiarse directamente en la tabla de catálogo
QSYS2.SYSTEXTSERVERS actualizando el valor ALIASNAME.
|
|
|
|
Asignar el número de servidor 1 como nombre de alias de "PRIMARY_LOCAL_SERVER".
|
Para eliminar un nombre de alias de un servidor, establezca la columna en NULL.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Eliminar un nombre de alias del número de servidor 1.
UPDATE QSYS2.SYSTEXTSERVERS
SET ALIASNAME = 'PRIMARY_LOCAL_SERVER'
WHERE SERVERID = 1
UPDATE QSYS2.SYSTEXTSERVERS
SET ALIASNAME = NULL
WHERE SERVERID = 1
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“SYSPROC.SYSTS_STOP” en la página 17
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_STOP para detener las funciones de
búsqueda de texto de DB2. Este procedimiento almacenado establece el valor SERVERSTATUS del
catálogo QSYS2.SYSTEXTSERVERS en 1 (detenido).
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
OmniFind Text Search Server
11
|
|
Instalar y configurar funciones de búsqueda de texto
| Puede instalar y configurar OmniFind Text Search Server for DB2 for i. También puede crear y actualizar
| un índice de búsqueda de texto para poder empezar a utilizar funciones de búsqueda de texto en una
| columna de una tabla.
|
Instalar OmniFind Text Search Server for DB2 for i
|
|
|
|
Instale OmniFind Text Search Server for DB2 for i mediante los procedimientos de instalación estándar de
un programa bajo licencia de IBM i. Se creará un servidor de texto predeterminado y la tabla
QSYS2.SYSTEXTSERVERS se llenará con la información del servidor predeterminado. Opcionalmente,
puede añadir servidores de búsqueda de texto adicionales después de la instalación.
| Llenar la tabla QSYS2.SYSTEXTSERVERS
|
|
|
|
|
OmniFind Text Search Server for DB2 for i es el programa bajo licencia 5733-OMF de IBM. Consulte el
apartado Instalar programas bajo licencia adicionales para obtener detalles acerca de la instalación de un
programa bajo licencia. Para buscar este producto, especifique GO LICPGM en la línea de mandatos y
seleccione la opción 10 (Visualizar programas bajo licencia instalados). Se visualizará en la lista de
programas bajo licencia.
|
|
|
|
La tabla QSYS2.SYSTEXTSERVERS contiene información acerca de los IBM OmniFind Text Search Servers
instalados y disponibles para DB2 for i. Cundo se instala por primera vez el producto OmniFind Text
Search Server for DB2 for i, se crea un servidor de búsqueda de texto predeterminado en el sistema IBM
i. La tabla QSYS.SYSTEXTSERVERS también se llena con información del servidor predeterminado.
| Crear servidores de búsqueda de texto adicionales
| Si está utilizando servidores de búsqueda de texto en un sistema IBM remoto o si está utilizando
| servidores no IBM, como por ejemplo un servidor Windows o Linux, llene explícitamente esta tabla
| emitiendo una sentencia SQL INSERT.
| Si desea llenar la tabla QSYS2.SYSTEXTSERVERS con servidores adicionales, siga estos pasos en la
| sentencia SQL INSERT:
| 1. Especifique el número de puerto y el nombre del servidor para cada servidor de búsqueda de texto en
las columnas SERVERPORT y SERVERNAME de la tabla QSYS2.SYSTEXTSERVERS emitiendo una
|
sentencia SQL INSERT.
|
| 2. Especifique la señal de autenticación de cada servidor de búsqueda de texto en la columna
SERVERAUTHTOKEN de la tabla QSYS2.SYSTEXTSERVERS en la sentencia SQL INSERT.
|
Cuando la base de datos DB2 se comunica con un servidor de búsqueda de texto, es necesaria una
|
señal de autenticación. Esta señal se genera en el servidor de búsqueda de texto durante la
|
instalación.
|
| 3. Especifique la clave de servidor de cada servidor de búsqueda de texto en la columna
SERVERMASTERKEY de la tabla QSYS2.SYSTEXTSERVERS en la sentencia SQL INSERT.
|
| 4. OPCIONAL: especifique un nombre de alias (ALIASNAME) para el servidor en la columna
ALIASNAME. Este ALIASNAME puede utilizarse para hacer referencia al servidor en las operaciones
|
posteriores.
|
| Ejemplo
| El ejemplo siguiente de sentencia SQL INSERT copia la información necesaria para un servidor de
| búsqueda de texto en las columnas de la tabla QSYS2.SYSTEXTSERVERS:
| INSERT INTO QSYS2.SYSTEXTSERVERS(SERVERNAME,
SERVERADRINFO,
|
SERVERPORT,
|
12
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SERVERTYPE,
SERVERAUTHTOKEN,
SERVERMASTERKEY,
SERVERPATH,
ALIASNAME)
VALUES('127.0.0.1',
VARBINARY(X'0000'),
49200,
0,
'AH2X4w==',
'b1YhcR9O858ArwxLJeIY/Q==',
'/QOpenSys/QIBM/ProdData/TextSearch/server1/bin/',
'LOCALSERVER2');
Conceptos relacionados
“Nombre de alias de servidor” en la página 11
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
|
Iniciar funciones de búsqueda de texto
|
|
|
Antes de empezar a utilizar las funciones de búsqueda de texto, llame al procedimiento almacenado
SYSPROC.SYSTS_START. Al llamar a este procedimiento, podrá iniciar todos los servidores de
producción que ha definido como locales con respecto al sistema.
|
|
|
|
|
|
El soporte de búsqueda de texto incluye sentencias SQL que utilizan la función CONTAINS, la función
SCORE y los siguientes procedimientos almacenados de administración:
v SYSPROC.SYSTS_CREATE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v SYSPROC.SYSTS_UPDATE
v SYSPROC.SYSTS_DROP
Referencia relacionada
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“SYSPROC.SYSTS_DROP” en la página 33
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_DROP para eliminar un índice de
búsqueda de texto definido mediante el procedimiento almacenado SYSPROC.SYSTS_CREATE.
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
OmniFind Text Search Server
13
|
Crear un índice de búsqueda de texto
| Puede crear un índice de búsqueda de texto llamando al procedimiento almacenado
| SYSPROC.SYSTS_CREATE.
| La tabla base de DB2 debe contener una columna ROWID, una clave exclusiva o una clave primaria.
| Para crear un índice de búsqueda de texto en una tabla de DB2 existente con una columna que contiene
| texto:
| Llame al procedimiento almacenado SYSPROC.SYSTS_CREATE.
| El índice de búsqueda de texto estará vacío hasta que el índice se actualice por primera vez.
Referencia relacionada
|
“SYSPROC.SYSTS_CREATE” en la página 19
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
|
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
|
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
|
SQL que contengan las funciones CONTAINS o SCORE.
|
|
Actualizar un índice de búsqueda de texto
| Puede actualizar un índice de búsqueda de texto llamando al procedimiento almacenado
| SYSPROC.SYSTS_UPDATE.
| La llamada a SYSTS_UPDATE se utiliza para llenar inicialmente el índice de búsqueda de texto. También
| se utiliza cuando cambia el contenido de las tablas de DB2 y el usuario desea sincronizar el índice de
| búsqueda de texto con dichos cambios.
|
|
|
|
|
|
|
|
|
Una vez realizada una actualización del índice de búsqueda de texto, puede realizar consultas de
búsqueda en el índice de búsqueda de texto. La columna de búsqueda de texto de la tabla base puede
cambiarse después de la actualización. En ese caso, los resultados de la consulta de búsqueda no
reflejarán dichos cambios hasta la próxima vez que se ejecute una actualización del índice de búsqueda
de texto.
Referencia relacionada
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
Buscar en un índice de búsqueda de texto
| Puede buscar en un índice de búsqueda de texto mediante una sentencia SQL con una función
| CONTAINS o SCORE. En la función se especifican los criterios del argumento de búsqueda.
| El usuario que realiza las consultas de texto en una tabla de DB2 debe tener establecido el privilegio
| estándar necesario para cualquier formato de consulta, según lo especificado en DB2 SQL Reference.
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
|
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
14
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Recorte de documentos
|
|
|
OmniFind Text Search Server for DB2 for i limita el número de caracteres que pueden indexarse para
cada documento de texto. A veces, esta limitación de caracteres provoca el recorte de documentos de
texto grandes en el índice de búsqueda de texto.
|
|
|
El servidor de búsqueda de texto puede recortar los documentos que contienen más de 10 millones de
caracteres Unicode. En el caso de un documento de texto enriquecido, este límite se aplica después de
transformar el documento a texto sin formato.
|
|
|
|
So un documentos de texto se recorta durante la fase de análisis, el usuario recibe un aviso que indica
que algunos documentos no se han proceso totalmente. El aviso aparece en el registro de trabajo. El
documento se indexa parcialmente. El texto que se encuentra en el documento una vez alcanzado el
límite no se indexa y no se tiene en cuenta durante las búsquedas.
|
|
|
|
Puede que sea conveniente eliminar del índice de búsqueda de texto el documento recortado para evitar
un comportamiento inesperado durante el proceso de búsqueda. Puede eliminar el documento
eliminando el registro correspondiente de la tabla de DB2 o cambiado el valor del documento a vacío o
nulo.
|
|
|
Procedimientos almacenados de administración para búsqueda de
texto
|
|
|
|
Puede iniciar y detener funciones de búsqueda de texto y crear, eliminar y actualizar índices de búsqueda
de texto mediante un conjunto de procedimientos almacenados SQL de administración. Estos
procedimientos pueden invocarse desde cualquier interfaz de SQL. No puede llamar a estos
procedimientos desde una línea de mandatos de IBM i mediante mandatos CL.
|
|
Al examinar los catálogos de sistema mediante STRSQL, puede visualizar el contenido de las columnas
estableciendo el trabajo con un CCSID distinto de 65535.
|
SYSPROC.SYSTS_START
|
|
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
|
|
|
Las funciones de búsqueda de texto incluyen soporte para consultas SQL que utilizan la función
CONTAINS, la función SCORE y los procedimientos almacenados de administración utilizados para el
mantenimiento de los índices de búsqueda de texto.
|
|
Ejecute el procedimiento almacenado SYSPROC.SYSTS_START cada vez que se añada o cambie un
servidor de la tabla QSYS2.SYSTEXTSERVERS.
|
|
|
|
Si las funciones de búsqueda de texto no se inician, la base de datos devuelve el SQLCODE -20424 con el
código de razón 4 para las funciones CONTAINS y SCORE. Los procedimientos administrativos
SYSPROC.SYSTS_CREATE y SYSPROC.SYSTS_UPDATE también fallarán con el SQLCODE -20424 si el
servidor no se ha iniciado.
|
|
|
|
Para los servidores de búsqueda de texto que se encuentran en la tabla QSYS2.SYSTEXTSERVERS, se
resuelven nombres TCP/IP. Varias llamadas al procedimiento almacenado SYSPROC.SYSTS_START no se
consideran un error. Este proceso permite comprobar la resolución de direcciones de la tabla
QSYS2.SYSTEXTSERVERS.
|
|
|
Si el servidor es local, esta llamada al procedimiento almacenado inicia el servidor, si aún no lo ha hecho.
Si el servidor es remoto, la llamada al procedimiento comprueba que el servidor está activo, pero no lo
inicia realmente.
OmniFind Text Search Server
15
| Requisitos previos
| Antes de llamar al procedimiento almacenado SYSPROC.SYSTS_START, compruebe que la tabla
| QSYS2.SYSTEXTSERVERS contiene como mínimo una entrada.
| Autorización
|
|
|
|
|
|
El ID de usuario bajo el que se invoca este procedimiento almacenado debe tener los siguientes
privilegios:
v Autorización *EXECUTE sobre el procedimiento.
v Privilegios SELECT y UPDATE sobre la tabla SYSTXTSRVRS.
v Autorización *EXECUTE sobre la biblioteca QSYS2 del archivo SYSTXTSRVRS.
v Autorización *JOBCTL o utilización de la función especial de seguridad QIBM_DB_SQLADM.
| Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
| consulte el apartado GRANT (Privilegios de tabla o vista).
| Sintaxis
| SYSPROC.SYSTS_START (
)
idservidor
nombrealias
|
| El calificador de esquema es SYSPROC.
| Parámetro
| idservidor o nombrealias
Especifica el identificador del servidor que debe iniciarse. Un idservidor o un nombrealias de servidor
|
es una serie de caracteres. Si no se especifica ningún identificador, el valor predeterminado es iniciar
|
todos los servidores. La serie del identificador debe ser un idservidor válido existente en la columna
|
SERVERID o un nombrealias de servidor válido existente en la columna ALIASNAME de la tabla
|
QSYS2.SYSTEXTSERVERS. Si el identificador puede convertirse a un valor entero, se interpreta como
|
idservidor. Si el identificador no puede convertirse a un valor entero, se interpreta como nombrealias de
|
servidor.
|
|
El tipo de datos de este parámetro es VARCHAR(128).
|
|
|
|
Nota: Si no se especifica ningún valor para idservidor o nombrealias, sólo se inician los servidores
identificados como servidores de producción. Los servidores de producción se identifican
mediante el parámetro SERVERCLASS = 0 en la tabla QSYS2.SYSTEXTSERVERS. Los
servidores de prueba deben iniciarse especificando el idservidor o nombrealias asociado con ellos.
| Para iniciar todos los servidores de producción:
| CALL SYSPROC.SYSTS_START().
| Para
| iniciar un servidor con el ID 1:
| CALL SYSPROC.SYSTS_START(1)
| Para
| iniciar un servidor con el nombre de alias "LOCAL_SERVER":
| CALL SYSPROC.SYSTS_START('LOCAL_SERVER')
16
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Para iniciar un servidor con el nombre de alias "local_server":
CALL SYSPROC.SYSTS_START('"local_server"')
Conceptos relacionados
“Nombre de alias de servidor” en la página 11
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
Tareas relacionadas
“Iniciar OmniFind Text Search Server for DB2 for i” en la página 63
Puede iniciar OmniFind Text Search Server for DB2 for i llamando al procedimiento
SYSPROC.SYSTS_START.
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
SYSPROC.SYSTS_STOP
|
|
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_STOP para detener las funciones de
búsqueda de texto de DB2. Este procedimiento almacenado establece el valor SERVERSTATUS del
catálogo QSYS2.SYSTEXTSERVERS en 1 (detenido).
|
|
|
|
Una vez completado este procedimiento almacenado, las consultas SQL que utilicen las funciones
CONTAINS o SCORE o los procedimientos almacenados de administración utilizados para el
mantenimiento de los índices devolverán una anomalía sin intentar contactar con un servidor de
búsqueda de texto.
|
|
Nota: Los procedimientos administrativos y las consultas SQL que utilizan las UDFS CONTAINS o
SCORE que se estuvieran ejecutando al invocar SYSTS_STOP podrán finalizar.
|
|
|
Los cambios en la tabla base del índice se siguen registrando aunque el servidor esté detenido. Sin
embargo, las actualizaciones planificadas del índice no se producirán hasta que se haya invocado a
SYSPROC.SYSTS_START.
|
Autorización
|
|
El ID de usuario bajo el que se invoca este procedimiento almacenado debe tener los siguientes
privilegios:
v Autorización *EXECUTE sobre el procedimiento.
v Privilegios SELECT y UPDATE sobre la tabla SYSTEXTSERVERS.
|
|
|
|
|
|
v Autorización *EXECUTE sobre la biblioteca QSYS2 del archivo SYSTEXTSERVERS.
v Autorización *JOBCTL o utilización de la función especial de seguridad QIBM_DB_SQLADM.
Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
consulte el apartado GRANT (Privilegios de tabla o vista).
OmniFind Text Search Server
17
| Sintaxis
| SYSTS_STOP (
)
idservidor
nombrealias
|
| El calificador de esquema es SYSPROC.
| Parámetro
| idservidor o nombrealias
Especifica el identificador del servidor que debe detenerse. Un idservidor o un nombrealias de servidor
|
es una serie de caracteres. Si no se especifica ningún identificador, el valor predeterminado es detener
|
todos los servidores. La serie del identificador debe ser un idservidor válido existente en la columna
|
SERVERID o un nombrealias de servidor válido existente en la columna ALIASNAME de la tabla
|
QSYS2.SYSTEXTSERVERS. Si el identificador puede convertirse a un valor entero, se interpreta como
|
idservidor. Si el identificador no puede convertirse a un valor entero, se interpreta como nombrealias de
|
servidor.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| Para detener todos los servidores de producción:
| CALL SYSPROC.SYSTS_STOP().
| Para
| detener un servidor con el ID 1:
| CALL SYSPROC.SYSTS_STOP(1)
| Para
| detener un servidor con el nombre de alias "LOCAL_SERVER":
| CALL SYSPROC.SYSTS_STOP('LOCAL_SERVER')
| Para detener un servidor con el nombre de alias "local_server":
| CALL SYSPROC.SYSTS_STOP('"local_server"')
Conceptos relacionados
|
“Nombre de alias de servidor” en la página 11
|
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
|
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
18
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
SYSPROC.SYSTS_CREATE
|
|
|
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de búsqueda
de texto. Este procedimiento almacenado habilita una columna de texto para la indexación de búsqueda
de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas SQL que contengan
las funciones CONTAINS o SCORE.
|
|
|
|
El índice de búsqueda de texto se crea en uno de los servidores de búsqueda de texto listados en la tabla
QSYS2.SYSTEXTSERVERS. El índice de búsqueda de texto no se actualiza síncronamente cuando se
actualiza la tabla de DB2. En lugar de ello, existen desencadenantes que capturan un registro de los
cambios realizados en la columna de la tabla de DB2, que se coloca en una tabla intermedia.
|
|
|
|
|
|
Nota: este procedimiento almacenado sólo define el índice de búsqueda de texto. El índice de búsqueda
de texto no contiene datos hasta que se ha realizado la primera invocación del procedimiento
almacenado SYSPROC.SYSTS_UPDATE para el nuevo índice de búsqueda de texto. El índice de
búsqueda de texto se crea después de llenar inicialmente la tabla. Mediante la creación del índice
de búsqueda de texto una vez llenada inicialmente la tabla, se evita la activación de
desencadenantes de cambios antes de una actualización de índice inicial.
|
Requisitos previos
|
|
Antes de la llamada al procedimiento almacenado SYSPROC.SYSTS_CREATE, compruebe los siguientes
requisitos previos:
|
|
|
|
|
v Que se han iniciado las funciones de búsqueda de texto de DB2, invocando el procedimiento
almacenado SYSPROC.SYSTS_START, y que existe como mínimo un servidor de búsqueda de texto en
ejecución.
v Que la tabla incluye una columna definida como clave primaria, índice exclusivo o ROWID.
v Que la tabla QSYS2.SYSTEXTSERVERS contiene como mínimo una entrada.
|
Autorización
|
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
v Las siguientes autorizaciones del sistema:
|
|
|
|
|
|
|
|
|
v El privilegio de creación en el esquema. Para obtener más información, consulte el apartado
Autorización, privilegios y propiedad de objetos.
v Autoridad administrativa
– *USE sobre el mandato Crear archivo lógico (CRTLF)
– *CHANGE sobre el diccionario de datos si la biblioteca en la que se crea el índice de texto es un
esquema SQL con un diccionario de datos
v Autoridad administrativa
Los privilegios detentados por el ID de autorización de la sentencia también deben incluir como mínimo
uno de los siguientes:
v Para la tabla referenciada:
– El privilegio INDEX sobre la tabla
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla
v Autoridad administrativa
OmniFind Text Search Server
19
| v Si se especifican nombres SQL y existe un perfil de usuario que tiene el mismo nombre que la
|
biblioteca en la que se crea el índice de texto, y dicho nombre es diferente del ID de autorización de la
|
sentencia, los privilegios detentados por el ID de autorización de la sentencia deben incluir como
|
mínimo uno de los privilegios siguientes:
|
– Autorización del sistema *ADD sobre el perfil de usuario con ese nombre
|
– Autoridad administrativa
| Si se hace referencia a un tipo distinct, los privilegios detentados por el ID de autorización de la sentencia
| deben incluir como mínimo uno de los siguientes:
| v Para cada tipo distinct identificado en la sentencia:
|
– El privilegio USAGE sobre el tipo distinct, y
|
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene el tipo distinct
| v Autoridad administrativa
| Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
| consulte el apartado GRANT (Privilegios de tabla o vista).
| Sintaxis
| SYSTS_CREATE (
esquemaÍndice
nulo
,
nombreÍndice
, origenTexto
, opciones )
|
| El calificador de esquema es SYSPROC.
| Parámetros
| esquemaÍndice
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
|
del registro especial CURRENT SCHEMA correspondiente al invocante. Este valor debe ser un
|
nombre SQL válido.
|
|
|
Nota: especifique los nombres entre comillas dobles si los nombres entran en conflicto con palabras
clave SQL o palabras clave de OmniFind que puedan utilizarse.
|
El tipo de datos de este parámetro es VARCHAR(128).
| nombreÍndice
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
|
junto con el esquema del índice, identifican de forma exclusiva el índice de texto en el subsistema
|
DB2. Debe especificar un valor no nulo en este parámetro. Este valor debe ser un nombre SQL válido.
|
|
|
Nota: especifique los nombres entre comillas dobles si los nombres entran en conflicto con palabras
clave SQL o palabras clave de OmniFind que puedan utilizarse.
|
El tipo de datos de este parámetro es VARCHAR(128).
| origenTexto
Identifica la especificación de tabla y columna para el origen de texto del documento. Este parámetro
|
puede incluir funciones definidas por el usuario. Debe especificar un valor no nulo en este
|
parámetro.
|
El tipo de datos de este parámetro es VARCHAR(1024).
|
20
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
origenTexto:
esquemaTabla.nombreTabla (
nombre-columna-texto
)
nombre-función
esquema-función
(
nombre-columna-texto
)
.
|
|
|
|
|
|
|
|
|
esquemaTabla
Identifica el esquema de la tabla en que se crea el índice de búsqueda de texto.
Nota: especifique los nombres entre comillas dobles si los nombres entran en conflicto con
palabras clave SQL o palabras clave de OmniFind que puedan utilizarse.
nombreTabla
Identifica el nombre de la tabla de texto que contiene la columna sobre la que se crea el
índice de búsqueda de texto externo.
Notas:
v Las vistas y archivos lógicos no están soportados.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
v Un alias debe señalar hacia una tabla o hacia un único miembro de un archivo
físico.
v Especifique los nombres entre comillas dobles si los nombres entran en conflicto
con palabras clave SQL o palabras clave de OmniFind.
nombre-columna-texto
Identifica el nombre de la columna que contiene el texto utilizado para crear el índice de
búsqueda de texto. Esta columna debe ser de tipo CHAR, CHAR FOR BIT DATA, BINARY,
VARCHAR, VARCHAR FOR BIT DATA, VARBINARY, CLOB, DBCLOB, BLOB, XML,
GRAPHIC o VARGRAPHIC. Si el tipo de datos no pertenece a uno de los anteriores, puede
especificar una función externa que devuelva un tipo de datos soportado.
Notas:
Sólo se permite un índice de búsqueda de texto para una columna. Si existe un
índice de búsqueda de texto para la columna, se devuelve el SQLCODE-20427.
v Especifique los nombres entre comillas dobles si los nombres entran en conflicto
con palabras clave SQL o palabras clave de OmniFind.
v
esquema-función.nombre-función
Identifica el esquema y el nombre de una función incorporada o definida por usuario. La
función puede utilizarse para modificar un documento de texto almacenado en la columna.
La función también puede utilizarse para acceder a documentos de texto que se encuentran
en una columna que no es de un tipo de datos soportado. O bien puede utilizarse para
acceder a un documento almacenado en otro lugar. La función tiene un parámetro de entrada
para el tipo de datos de columna de texto. Por ejemplo, un entero que actúa como clave
foránea del contenido del documento de otro tabla. La función devuelve un valor de uno de
los tipos de datos soportados por OmniFind Text Search for DB2 for i. La función transforma
el contenido de la columna de texto en el contenido del documento indexado.
Notas:
v Las funciones de conversión de tipo de datos y las funciones con más de un
argumento no están permitidas.
v Especifique los nombres entre comillas dobles si los nombres entran en conflicto
con palabras clave SQL o palabras clave de OmniFind que puedan utilizarse.
opciones
Serie de caracteres que especifica las diversas opciones que están disponibles para este procedimiento
almacenado.
OmniFind Text Search Server
21
El tipo de datos de este parámetro es VARCHAR(32000).
|
| opciones:
|
información-predeterminada-texto
características-actualización
opciones-configuración-índice
|
| información-predeterminada-texto:
|
CCSID ccsid
LANGUAGE
idioma
FORMAT
formato
|
|
|
|
|
información-predeterminada-texto
Especifica el identificador de juego de caracteres codificados utilizado al indexar documentos de
texto binarios. También especifica el idioma utilizado al procesar documentos y el formato de los
documentos de texto de la columna.
|
|
|
|
|
|
CCSID ccsid
Especifica el identificador de juego de caracteres codificados utilizado para un índice de
búsqueda de texto en una columna con un tipo de datos binarios. El valor predeterminado es
1208 (UTF-8), que se toma de la tabla QSYS2.SYSTEXTDEFAULTS. En este parámetro se
permiten todos los CCSID soportados para la conversión a UTF-8 por los servicios de
conversión de IBM i.
Este parámetro se ignora para un índice de búsqueda de texto en una columna con un tipo
de datos no binarios. Las columnas de texto heredan el CCSID de la especificación de tabla.
El valor de ccsid se ignora cuando el valor de formato se establece en INSO.
|
|
|
LANGUAGE idioma
Especifica el idioma que OmniFind Text Search Server for DB2 for i utiliza para el proceso
lingüístico de los documentos de texto. El valor predeterminado es en_US (inglés). Si
especifica AUTO como valor de este parámetro, OmniFind Text Search Server for DB2 for i
intentará determinar el idioma.
|
|
|
|
|
|
|
|
Importante: Si el idioma de los documentos no es el inglés, no utilice el valor
predeterminado en_US. Cambie el valor al idioma de los documentos; de lo
contrario, el proceso lingüístico no funcionará según lo esperado.
|
|
|
|
|
|
|
FORMAT formato
identifica el formato de los documentos de texto de la columna, como por ejemplo HTML.
OmniFind Text Search Server for DB2 for i necesita conocer el formato, o tipo de contenido,
de los documentos de texto que tiene previsto indexar y en los que va a realizar búsquedas.
Si no especifica el parámetro formato, el valor predeterminado se toma de la columna
FORMAT de la tabla QSYS2.SYSTEXTDEFAULTS. Los valores de formato soportados son
TEXT, HTML, XML e INSO.
|
|
|
|
|
El valor de formato INSO permite a OmniFind Text Search Server for DB2 for i determinar el
formato. En este caso, el valor de ccsid se ignora. Si OmniFind Text Search Server for DB2 for
i no puede determinar el formato del documento, el procedimiento almacenado
SYSPROC.SYSTS_UPDATE anota un error de documento en el registro de trabajo durante el
proceso.
|
|
|
|
Nota: Si no especifica el parámetro formato al crear el índice sobre una columna de tipo de
datos XML, el valor predeterminado es XML. Si especifica el parámetro formato como
TEXT o INSO, la prestación de búsqueda XML no estará disponible para este índice.
Además, aparecerá un mensaje de aviso en el registro de trabajo.
22
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
características-actualización:
|
NONE
< frecuencia-actualización>
UPDATE FREQUENCY
UPDATE MINIMUM
mín_cambios
|
|
|
|
|
|
características-actualización
Especifica la frecuencia de las actualizaciones automáticas en el índice de búsqueda de texto.
También especifica el número mínimo de cambios que deben realizarse en los documentos de
texto antes de que el índice de búsqueda de texto se actualice incrementalmente a la hora
especificada.
UPDATE FREQUENCY frecuencia-actualización
Especifica cuándo realizar actualizaciones automáticas en el índice de búsqueda de texto. El
valor predeterminado es NONE. Esta opción puede ser de utilidad para una columna de
texto en la que no haya más cambios. El formato de la opción frecuencia-actualización admite
dos formatos.
|
|
|
|
|
| frecuencia-actualización (Formato 1):
|
NONE
D (
*
)
H
(
*
,
)
M
(
*
,
0..6 0..23 0..6
)
,
0..59 0..23
0..59
|
|
|
|
|
NONE
|
|
D
Especifica el día o días de la semana en los que se actualiza el índice. Un asterisco (*)
indica todos los días. 0 indica el Domingo.
|
|
H
Especifica la hora u horas en las que se actualiza el índice. Un asterisco (*) indica
todas las horas.
|
|
M
Especifica el minuto o minutos en los que se actualiza el índice. No puede
especificarse un asterisco (*). La frecuencia de actualización mínima es de 5 minutos.
|
|
|
Ejemplo: este ejemplo especifica que la actualización de índice debe ejecutarse cada 30
minutos.
|
|
|
Si se especifica NONE, no se realizan más actualizaciones de índice. La actualización
debe iniciarse manualmente. Esta opción puede ser de utilidad para una columna de
texto en la que no haya más cambios planificados.
UPDATE FREQUENCY D(*) H(*) M(0,30)
frecuencia-actualización (Formato 2, cronológico):
< minuto> < hora> <díaDelMes> <mesDelAño> <díaDeLaSemana>
|
|
|
El formato de la opción frecuencia-actualización (cronológica) es una lista de cinco valores
separados por espacios en blanco. Los cinco valores representan los minutos, horas, días del
mes, meses del año y días de la semana empezando por el Domingo.
|
|
Si especifica un intervalo de valores o un asterisco (*), puede especificar un valor de recorrido
utilizando una barra inclinada (/) al final del intervalo definido.
|
|
|
|
Ejemplo: este ejemplo especifica que la actualización de índice debe ejecutarse cada cuarto de
hora (0,15,30,45) en las horas pares entre las 8 a.m. y las 6:45 p.m. (8-18/2 es equivalente a
8,10,12,14,16,18), de Lunes a Viernes todos los meses del año (* * 1-5).
0,15,30,45 8-18/2 * * 1-5
OmniFind Text Search Server
23
minuto Especifica los minutos de la hora en los que debe actualizarse el índice de búsqueda
de texto. Puede especificar un asterisco (*) para un intervalo de cada 5 minutos o un
entero de 0 a 59. No pueden repetirse valores. La frecuencia de actualización mínima
es de 5 minutos. Un valor de 1, 4 u 8 no es válido.
|
|
|
|
| frecuencia-actualización (minuto):
|
*
/ 0...59
,
0...59 - 0...59
/ 0...59
0...59
|
hora
|
|
|
Especifica las horas del día en las que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada hora o un entero de 0 a 23. No
pueden repetirse valores.
| frecuencia-actualización (hora):
|
*
/ 0...23
,
0...23 - 0...23
/ 0...23
0...23
|
díaDelMes
Especifica los días del mes en los que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada día o un entero de 1 a 31. No
pueden repetirse valores.
|
|
|
|
| frecuencia-actualización (díaDelMes):
|
*
/ 1...31
,
1...31 - 1...31
/ 1...31
1...31
|
mesDelAño
Especifica los meses del año en los que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada mes o un entero de 1 a 12. No
pueden repetirse valores.
|
|
|
|
| frecuencia-actualización (mesDelAño):
|
*
/ 1...12
,
1...12 - 1...12
/ 1...12
1...12
|
24
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
díaDeLaSemana
Especifica los días de la semana en los que debe actualizarse el índice de búsqueda
de texto. Puede especificar un asterisco (*) para cada día o un entero de 0 a 7. Tanto 0
como 7 son valores válidos para el Domingo. No pueden repetirse valores.
|
|
|
|
|
|
frecuencia-actualización (díaDeLaSemana):
*
/ 0...7
,
0...7 - 0...7
/ 0...7
0...7
|
|
|
|
|
|
|
UPDATE MINIMUM mín_cambios
Especifica el número mínimo de cambios de registro realizados en la tabla subyacente antes
de que el índice de búsqueda de texto se actualice incrementalmente a la hora especificada en
la opción frecuencia-actualización. El valor debe ser un entero de 1 a 2147483647. El valor
predeterminado se toma de la columna UPDATEMINIMUM de la tabla
QSYS2.SYSTEXTDEFAULTS.
|
|
|
Esta opción se ignora al actualizar el índice de búsqueda de texto, a menos que especifique la
opción USING UPDATE MINIMUM en el procedimiento almacenado
SYSPROC.SYSTS_UPDATE.
| opciones-configuración-índice:
|
,
INDEX CONFIGURATION ( opción
valor
)
|
|
|
|
|
opciones-configuración-índice
Especifica valores adicionales específicos de índice en forma de pares de opción y valor. Debe
especificar los valores tipo serie entre comillas simples. Un comilla simple dentro de un valor tipo
serie debe representarse mediante dos comillas simples consecutivas.
|
|
|
|
|
|
CJKSEGMENTATION
Especifica el método de segmentación que debe utilizarse al indexar documentos para
idiomas CJK (chino, japonés, coreano). Los valores soportados son MORPHOLOGICAL y
NGRAM. Si no se especifica el valor CJKSEGMENTATION, se utiliza el valor
predeterminado. El valor predeterminado se especifica en la columna DEFAULTNAME de la
tabla QSYS2.SYSTEXTDEFAULTS.
|
|
|
|
COMMENT
Especifica un comentario que se almacena en la columna REMARKS de la tabla de
administración QSYS2.SYSTEXTINDEXES y como descripción de la colección de OmniFind
Text Search Server for DB2 for i.
|
El valor de esta opción es un valor tipo serie inferior o igual a 512 bytes.
|
|
|
IGNOREEMPTYDOCS
Especifica si deben representarse los documentos vacíos en el índice de búsqueda de texto.
Los documentos vacíos son aquellos con una serie vacía o un valor nulo.
|
Los valores soportados para esta opción son 0 (cero) y 1. El valor predeterminado es 1.
|
|
|
Si esta opción se establece en 1, los documentos vacíos no estarán representados en el índice
de búsqueda de texto. Si utiliza esta opción y cambia el contenido del documento a vacío, la
próxima actualización incremental suprimirá los documentos del índice de búsqueda de texto.
OmniFind Text Search Server
25
|
|
|
|
|
|
KEYCOLUMN
Especifica el nombre de una columna exclusiva que debe utilizarse como columna de clave en
el índice de texto. La columna de clave se utiliza para asociar datos del índice de texto a un
documento o fila de la tabla base. La columna especificada debe tener una restricción de
clave primaria o índice exclusivo. Si no se especifica KEYCOLUMN, se utiliza la columna
ROWID de la tabla, si existe. De lo contrario, se utiliza la clave primaria definida en la tabla.
|
|
|
|
|
|
|
|
|
SERVER
Especifica el ID o nombre de alias del servidor que debe utilizarse para almacenar el índice
de búsqueda de texto. Si se utiliza un ID, el valor es un entero que debe existir en la columna
SERVERID del catálogo QSYS2.SYSTEXTSERVERS. Si se utiliza un nombre de alias, el valor
es una serie que debe existir en la columna ALIASNAME del catálogo
QSYS2.SYSTEXTSERVERS. Si no se especifica SERVER, el valor predeterminado es seleccionar
el servidor con menos índices de búsqueda de texto entre los servidores de la tabla
QSYS2.SYSTEXTSERVERS en los que el parámetro SERVERSTATUS está establecido en 0
(cero), lo que indica que el servidor está disponible.
|
|
|
|
UPDATEAUTOCOMMIT
Especifica la frecuencia con la que se realiza una operación de confirmación al extraer
documentos durante una actualización de índice. El valor 0 (cero) indica que una operación
de confirmación sólo se realiza al final del proceso.
|
El valor debe ser un entero entre 0 (cero) y 2147483647. El valor predeterminado es 100.
|
|
|
|
|
|
|
|
|
Sugerencia de rendimiento: el valor de UPDATEAUTOCOMMIT puede tener un impacto
significativo sobre el rendimiento de las actualizaciones de índice. La operación de
confirmación que tiene lugar con el intervalo especificado garantiza un punto de
comprobación coherente desde el que reiniciar la actualización de índice, si se interrumpe. Sin
embargo, la confirmación también suspende temporalmente el proceso de actualización.
Aumentar el valor de UPDATEAUTOCOMMIT (o establecerlo en 0) puede mejorar
significativamente el rendimiento de la actualización, especialmente de la inicial. El valor que
especifique debe buscar el equilibrio entre las necesidades de rendimiento y las de
recuperabilidad, en función de la frecuencia de las actualizaciones del índice.
| Valores predeterminados del parámetro opciones
| Al instalar OmniFind Text Search for DB2 for i, se crea la tabla QSYS2.SYSTEXTDEFAULTS y se llena con
| valores predeterminados para el parámetro opciones del procedimiento almacenado
| SYSPROC.SYSTS_CREATE.
| En la tabla siguiente se indican las opciones, los valores predeterminados y las descripciones de las
| opciones.
|
Tabla 2. Valores predeterminados del parámetro opciones
|
|
Opción
Valor
predeterminado Descripción
|
|
|
CCSID
1208
Especifica el identificador de juego de caracteres
codificados utilizado al indexar documentos de texto
binarios.
|
|
|
CJKSEGMENTATION
NGRAM
Especifica el método de segmentación que debe
utilizarse al indexar documentos para idiomas CJK
(chino, japonés, coreano).
|
|
LANGUAGE
en_US
Especifica el idioma utilizado para procesar
documentos de texto.
|
|
|
FORMAT
TEXT
Identifica el formato de los documentos de texto de la
columna. El formato predeterminado es texto sin
formato, a menos que el tipo de datos sea XML.
26
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 2. Valores predeterminados del parámetro opciones (continuación)
|
|
Opción
Valor
predeterminado Descripción
|
|
UPDATEFREQUENCY
NONE
Indica que no hay actualizaciones automáticas
planificadas.
|
|
|
|
UPDATEMINIMUM
1
Si un documento como mínimo ha cambiado desde la
última actualización del índice, el procedimiento
almacenado SYSPROC.SYSTS_UPDATE inicia el
proceso.
|
|
|
|
|
IGNOREEMPTYDOCS
1
Especifica que los documentos vacíos (aquellos con una
serie vacía o un valor nulo) no están representados en
el índice de búsqueda de texto. Los campos de
metadatos para estos documentos no están disponibles
para la búsqueda.
|
|
|
UPDATEAUTOCOMMIT
100
Especifica la frecuencia con la que se realiza una
operación de confirmación al extraer documentos
durante una actualización de índice.
|
|
|
MINIMUMUPDATEINTERVAL
5
Especifica los intervalos de la opción
UPDATEFREQUENCY. Los intervalos no pueden ser
inferiores a 5 minutos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USEREXITTHREADS
0
Reservada
|
|
|
|
|
|
|
|
|
|
|
Conceptos relacionados
“Formatos de documento soportados” en la página 6
Los datos de una columna de texto pueden ser texto sin formato, un documento HTML, un XML o
cualquier documento que el motor de búsqueda reconozca.
“Tipos de datos soportados” en la página 7
Los datos de las columnas de texto que desea indexar y en las que realizar búsquedas pueden ser
datos binarios o datos de tipo carácter.
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
“Tabla de administración QSYS2.SYSTEXTDEFAULTS” en la página 100
Puede visualizar los parámetros y valores predeterminados en la tabla de administración
QSYS2.SYSTEXTDEFAULTS. Esta tabla se crea al instalar OmniFind Text Search for DB2 for i.
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“Idiomas soportados” en la página 8
Puede especificar que los documentos de texto se procesen mediante un idioma específico.
OmniFind Text Search Server
27
|
SYSPROC.SYSTS_ALTER
| Puede llamar al procedimiento almacenado SYSPROC.SYSTS_ALTER para modificar los atributos de un
| índice creado por SYSPROC.SYSTS_CREATE. Sólo se cambiarán los atributos especificados explícitamente
| en este procedimiento. Todos los demás atributos del índice permanecerán sin cambios.
| Este procedimiento resulta de utilidad si necesita cambiar los atributos del índice, como por ejemplo la
| frecuencia de actualización, una vez que éste se ha creado.
| Requisitos previos
| Antes de llamar al procedimiento almacenado SYSPROC.SYSTS_ALTER, compruebe el siguiente requisito
| previo:
| v El índice de búsqueda de texto debe haberse creado (por invocación del procedimiento almacenado
SYSPROC.SYSTS_CREATE).
|
| Autorización
|
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
v El privilegio de creación en el esquema. Para obtener más información, consulte el apartado
Autorización, privilegios y propiedad de objetos.
v Autoridad administrativa
| Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
| los siguientes:
| v Las siguientes autorizaciones del sistema:
– *USE sobre el mandato Crear archivo lógico (CRTLF)
|
– *CHANGE sobre el diccionario de datos si la biblioteca en la que se crea el índice de texto es un
|
esquema SQL con un diccionario de datos
|
| v Autoridad administrativa
| Los privilegios detentados por el ID de autorización de la sentencia también deben incluir como mínimo
| uno de los siguientes:
| v Para la tabla referenciada:
– El privilegio INDEX sobre la tabla
|
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla
|
| v Autoridad administrativa
| v Si se especifican nombres SQL y existe un perfil de usuario que tiene el mismo nombre que la
biblioteca en la que se crea el índice de texto, y dicho nombre es diferente del ID de autorización de la
|
sentencia, los privilegios detentados por el ID de autorización de la sentencia deben incluir como
|
mínimo una de las autorizaciones siguientes:
|
– Autorización del sistema *ADD sobre el perfil de usuario con ese nombre
|
– Autoridad administrativa
|
| Si se hace referencia a un tipo distinct, los privilegios detentados por el ID de autorización de la sentencia
| deben incluir como mínimo uno de los siguientes:
| v Para cada tipo distinct identificado en la sentencia:
– El privilegio USAGE sobre el tipo distinct, y
|
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene el tipo distinct
|
| v Autoridad administrativa
28
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
consulte el apartado GRANT (Privilegios de tabla o vista).
|
Sintaxis
|
|
SYSTS_ALTER (
|
El calificador de esquema es SYSPROC.
|
Parámetros
|
|
|
esquemaÍndice
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
del registro especial CURRENT SCHEMA correspondiente al invocante.
|
|
|
|
|
|
|
|
|
esquemaÍndice
, nombreÍndice
, opciones
)
El tipo de datos de este parámetro es VARCHAR(128).
nombreÍndice
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
junto con el esquema del índice, identifica de forma exclusiva el índice de texto en el subsistema DB2.
Debe especificar un valor no nulo en este parámetro.
El tipo de datos de este parámetro es VARCHAR(128).
opciones
Serie de caracteres que especifica las diversas opciones que están disponibles para este procedimiento
almacenado.
|
El tipo de datos de este parámetro es VARCHAR(32000).
|
El valor del parámetro no puede ser NULL.
|
Opciones:
|
información-redenominar-función
características-actualización
opciones-configuración-índice
|
|
|
información-redenominar-función:
RENAME FUNCTION
nombre-función
esquema-función
.
|
|
Especifica la función definida por el usuario que debe redenominarse.
|
|
esquema-función.nombre-función
Especifica el esquema y el nombre de una función definida por el usuario.
|
|
Esta opción se utiliza para cambiar una función que se ha especificado al crear un índice. Si se
modifica la función, SYSTS_UPDATE utilizará la función nueva para indexar la columna de texto.
|
|
Si la función se ha cambiado, SYSTS_UPDATE no cambiará los datos existentes del índice. Sólo se
procesarán los datos nuevos cambiados después de la última actualización.
| características-actualización:
|
UPDATE FREQUENCY
NONE
frecuencia-actualización
UPDATE MINIMUM
mín_cambios
|
OmniFind Text Search Server
29
características-actualización
Especifica la frecuencia de las actualizaciones automáticas en el índice de búsqueda de texto.
También especifica el número mínimo de cambios que deben realizarse en los documentos de
texto antes de que el índice de búsqueda de texto se actualice incrementalmente a la hora
especificada.
|
|
|
|
|
UPDATE FREQUENCY frecuencia-actualización
Especifica la frecuencia de las actualizaciones automáticas en el índice de búsqueda de texto.
El valor predeterminado es NONE. Esta opción puede ser de utilidad para una columna de
texto en la que no haya más cambios. El formato de la opción frecuencia-actualización admite
dos formatos.
|
|
|
|
|
| frecuencia-actualización (Formato 1):
|
NONE
D (
*
)
H
(
*
,
)
M
(
*
,
0..6 0..23 0..6
)
,
0..59 0..23
0..59
|
|
|
|
|
NONE
|
|
D
Especifica el día o días de la semana en los que se actualiza el índice. Un asterisco (*)
indica todos los días. 0 indica el Domingo.
|
|
H
Especifica la hora u horas en las que se actualiza el índice. Un asterisco (*) indica
todas las horas.
|
|
M
Especifica el minuto o minutos en los que se actualiza el índice. No puede
especificarse un asterisco (*). La frecuencia de actualización mínima es de 5 minutos.
|
|
|
Ejemplo: este ejemplo especifica que la actualización de índice debe ejecutarse cada 30
minutos.
Si se especifica NONE, no se realizan más actualizaciones de índice. La actualización
debe iniciarse manualmente. Esta opción puede ser de utilidad para una columna de
texto en la que no haya más cambios planificados.
UPDATE FREQUENCY D(*) H(*) M(0,30)
| frecuencia-actualización (Formato 2, cronológico):
|
|
< minuto> < hora> <díaDelMes> <mesDelAño> <díaDeLaSemana>
|
|
|
El formato de la opción frecuencia-actualización (cronológica) es una lista de cinco valores
separados por espacios en blanco. Los cinco valores representan los minutos, horas, días del
mes, meses del año y días de la semana empezando por el Domingo.
|
|
Si especifica un intervalo de valores o un asterisco (*), puede especificar un valor de recorrido
utilizando una barra inclinada (/) al final del intervalo definido.
|
|
|
|
Ejemplo: este ejemplo especifica que la actualización de índice debe ejecutarse cada cuarto de
hora (0,15,30,45) en las horas pares entre las 8 a.m. y las 6:45 p.m. (8-18/2 es equivalente a
8,10,12,14,16,18), de Lunes a Viernes todos los meses del año (* * 1-5).
|
|
|
|
minuto Especifica los minutos de la hora en los que debe actualizarse el índice de búsqueda
de texto. Puede especificar un asterisco (*) para un intervalo de cada 5 minutos o un
entero de 0 a 59. No pueden repetirse valores. La frecuencia de actualización mínima
es de 5 minutos. Un valor de 1, 4 u 8 no está permitido.
0,15,30,45 8-18/2 * * 1-5
30
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
frecuencia-actualización (minuto):
*
/ 0...59
,
0...59 - 0...59
/ 0...59
0...59
|
hora
|
|
|
Especifica las horas del día en las que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada hora o un entero de 0 a 23. No
pueden repetirse valores.
| frecuencia-actualización (hora):
|
*
/ 0...23
,
0...23 - 0...23
/ 0...23
0...23
|
díaDelMes
Especifica los días del mes en los que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada día o un entero de 1 a 31. No
pueden repetirse valores.
|
|
|
|
| frecuencia-actualización (díaDelMes):
|
*
/ 1...31
,
1...31 - 1...31
/ 1...31
1...31
|
mesDelAño
Especifica los meses del año en los que debe actualizarse el índice de búsqueda de
texto. Puede especificar un asterisco (*) para cada mes o un entero de 1 a 12. No
pueden repetirse valores.
|
|
|
|
| frecuencia-actualización (mesDelAño):
|
*
/ 1...12
,
1...12 - 1...12
/ 1...12
1...12
|
|
|
|
|
díaDeLaSemana
Especifica los días de la semana en los que debe actualizarse el índice de búsqueda
de texto. Puede especificar un asterisco (*) para cada día o un entero de 0 a 7. Tanto 0
como 7 son valores válidos para el Domingo. No pueden repetirse valores.
OmniFind Text Search Server
31
| frecuencia-actualización (díaDeLaSemana):
|
*
/ 0...7
,
0...7 - 0...7
/ 0...7
0...7
|
UPDATE MINIMUM mín_cambios
Especifica el número mínimo de cambios de registro realizados en la tabla subyacente antes
de que el índice de búsqueda de texto se actualice incrementalmente a la hora especificada en
la opción frecuencia-actualización. El valor debe ser un entero de 1 a 2147483647.
|
|
|
|
| opciones-configuración-índice:
|
,
INDEX CONFIGURATION ( opción
valor
)
|
COMMENT
Especifica un comentario que se almacena en la columna REMARKS de la tabla de
administración QSYS2.SYSTEXTINDEXES y como descripción de la colección de OmniFind Text
Search Server for DB2 for i.
|
|
|
|
El valor de esta opción es un valor tipo serie inferior o igual a 512 bytes.
|
UPDATEAUTOCOMMIT
Especifica la frecuencia con la que se realiza una operación de confirmación al extraer
documentos durante una actualización de índice. El valor 0 (cero) indica que una operación de
confirmación sólo se realiza al final del proceso.
|
|
|
|
El valor debe ser un entero entre 0 (cero) y 2147483647.
|
Sugerencia de rendimiento: el valor de UPDATEAUTOCOMMIT puede tener un impacto
significativo sobre el rendimiento de las actualizaciones de índice. La operación de confirmación
que tiene lugar con el intervalo especificado garantiza un punto de comprobación coherente
desde el que reiniciar la actualización de índice, si se interrumpe. Sin embargo, la confirmación
también suspende temporalmente el proceso de actualización. Aumentar el valor de
UPDATEAUTOCOMMIT (o establecerlo en 0) puede mejorar significativamente el rendimiento de
la actualización, especialmente de la inicial. El valor que especifique debe buscar el equilibrio
entre las necesidades de rendimiento y las de recuperabilidad, en función de la frecuencia de las
actualizaciones del índice.
Referencia relacionada
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
32
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
SYSPROC.SYSTS_DROP
|
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_DROP para eliminar un índice de búsqueda
de texto definido mediante el procedimiento almacenado SYSPROC.SYSTS_CREATE.
|
|
Es aconsejable eliminar un índice de búsqueda de texto mediante el procedimiento almacenado
SYSPROC.SYSTS_DROP antes de eliminar la tabla.
|
|
|
|
Al eliminar la vista que representa el índice de búsqueda de texto, incluso como resultado de una
sentencia DROP TABLE CASCADE, se intenta eliminar el índice de búsqueda de texto. Sin embargo,
dado que el índice de búsqueda de texto no puede eliminarse bajo control de compromiso, la vista SQL
no puede eliminarse bajo control de compromiso.
|
|
|
|
Si no puede accederse al servidor de búsqueda de texto, la colección del servidor puede quedar huérfana.
Si eso ocurre, la colección deberá suprimirse manualmente. Cuando el servidor esté nuevo disponible,
utilice la herramienta de administración de OmniFind Text Search Server for DB2 for i para suprimir la
colección del servidor.
|
|
|
En el apartado “Herramientas de administración” en la página 69 encontrará información acerca de las
herramientas que puede utilizar para identificar índices huérfanos y el procedimiento almacenado
STSPROC.SYSTS_REMOVE para suprimirlos.
|
Requisitos previos
|
|
Antes de llamar al procedimiento almacenado SYSPROC.SYSTS_DROP, compruebe los siguientes
requisitos previos:
|
|
|
|
|
|
|
v Que se han iniciado las funciones de búsqueda de texto de DB2 llamando al procedimiento
almacenado SYSPROC.SYSTS_START.
v El índice de búsqueda de texto debe haberse creado (por invocación del procedimiento almacenado
SYSPROC.SYSTS_CREATE).
v Asegúrese de que los siguientes procedimientos almacenados no estén en ejecución para el índice de
búsqueda de texto que desea eliminar: SYSPROC.SYSTS_CREATE, SYSPROC.SYSTS_UPDATE y
SYSPROC.SYSTS_DROP.
|
Autorización
|
|
|
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
v Las siguientes autorizaciones del sistema:
– Las autorizaciones del sistema *OBJOPR y *OBJEXIST sobre el índice de texto que debe eliminarse
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene el índice de texto que debe
eliminarse
v Autoridad administrativa
|
|
Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
consulte el apartado GRANT (Privilegios de tabla o vista).
|
Sintaxis
|
SYSTS_DROP (
esquemaÍndice
nulo
, nombreÍndice
)
|
|
El calificador de esquema es SYSPROC.
OmniFind Text Search Server
33
| Parámetros
| esquemaÍndice
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
|
del registro especial CURRENT SCHEMA correspondiente al invocante.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| nombreÍndice
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
|
junto con el esquema del índice, identifica de forma exclusiva el índice de texto en el subsistema DB2.
|
Debe especificar un valor no nulo en este parámetro.
|
El tipo de datos de este parámetro es VARCHAR(128).
Referencia relacionada
|
|
|
|
|
|
|
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“SYSPROC.SYSTS_UPDATE”
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“SYSPROC.SYSTS_REMOVE” en la página 71
Puede eliminar índices huérfanos con el procedimiento almacenado SQL SYSPROC.SYSTS_REMOVE.
|
|
|
|
|
|
|
|
|
SYSPROC.SYSTS_UPDATE
| Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
| búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
|
|
|
|
|
|
Dado que la actualización de un índice de búsqueda de texto es una operación amplia, el índice de
búsqueda de texto no se actualiza síncronamente cuando se actualiza la tabla de DB2. En lugar de ello,
una tabla intermedia de desencadenantes captura los cambios realizados en la columna de la tabla de
DB2. El índice de búsqueda de texto se actualizará la próxima vez que se invoque el procedimiento
almacenado SYSPROC.SYSTS_UPDATE o cuando la opción UPDATE FREQUENCY indique que se
actualiza. Por tanto, es posible que algunas solicitudes de búsqueda no reflejen las actualizaciones
recientes de la tabla.
|
|
|
|
|
Este procedimiento almacenado sólo efectúa el retorno una vez finalizado todo el proceso de
actualización del índice de búsqueda de texto en OmniFind Text Search Server for DB2 for i. La duración
depende del número de entradas de la tabla intermedia en el momento de llamar a SYSTS_UPDATE.
Durante el proceso de actualización, sigue siendo posible realizar búsquedas en el índice de búsqueda de
texto.
|
|
|
|
|
|
|
|
Si se ha producido un problema al indexar un documento de la tabla base, la columna de la tabla
intermedia con TOBEDELETED tendrá un valor establecido en E (error) o W (aviso). Puede recuperar estos
registros con un procedimiento almacenado que incluya la consulta siguiente:
SELECT s.TOBEDELETED,
columnas_base
FROM tabla_base t INNER JOIN QSYS2.tablasintermedias
ON (QQQ_TEXTSEARCH_KEY(t.k1, t.k2, t.k3, ...) = s.KEYID)
WHERE s.TOBEDELETED IN('E','W')
34
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
En este caso, columnas_base es la lista de columnas que es necesario visualizar de la tabla_base.
tabla_base es la tabla que se indexa. tabla intermedia es la tabla intermedia indicada en los catálogos
del índice de búsqueda de texto. k1, k2, k3, ... es la lista de columnas de clave de la clave primaria,
ID de fila o clave exclusiva utilizada para construir el índice de búsqueda de texto. Una vez corregidos
los errores de esos documentos, ejecute de nuevo la actualización.
|
|
|
Si se solicita una actualización de índice al mismo tiempo que ya se está realizando una actualización
para dicho índice, se devuelve un error. Sólo se permite una actualización a la vez para un índice
determinado.
|
Requisitos previos
|
|
|
|
|
|
|
|
|
|
Antes de llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE, compruebe los siguientes
requisitos previos:
v El índice de búsqueda de texto debe haberse creado (por invocación del procedimiento almacenado
SYSPROC.SYSTS_CREATE).
v Los siguientes procedimientos almacenados no deben estar en ejecución para el índice de búsqueda de
texto que desea actualizar: SYSPROC.SYSTS_CREATE, SYSPROC.SYSTS_UPDATE y
SYSPROC.SYSTS_DROP.
v El servidor de búsqueda de texto en el que reside el índice debe haberse iniciado mediante el
procedimiento almacenado SYSTS_START. La columna SERVERSTATUS de QSYS2.SYSTEXTSERVERS
debe tener el valor '0' (iniciado).
|
Autorización
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
|
|
v El privilegio de creación en el esquema. Para obtener más información, consulte el apartado
Autorización, privilegios y propiedad de objetos.
v Autoridad administrativa
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
v Las siguientes autorizaciones del sistema:
– *USE sobre el mandato Crear archivo lógico (CRTLF)
– *CHANGE sobre el diccionario de datos si la biblioteca en la que se crea el índice de texto es un
esquema SQL con un diccionario de datos
v Autoridad administrativa
Los privilegios detentados por el ID de autorización de la sentencia también deben incluir como mínimo
uno de los siguientes:
v Para la tabla referenciada:
– El privilegio INDEX sobre la tabla
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene la tabla
v Autoridad administrativa
v Si se especifican nombres SQL y existe un perfil de usuario que tiene el mismo nombre que la
biblioteca en la que se crea el índice de texto, y dicho nombre es diferente del ID de autorización de la
sentencia, los privilegios detentados por el ID de autorización de la sentencia deben incluir como
mínimo uno de los privilegios siguientes:
– Autorización del sistema *ADD sobre el perfil de usuario con ese nombre
– Autoridad administrativa
OmniFind Text Search Server
35
|
|
|
|
|
|
Si se hace referencia a un tipo distinct, los privilegios detentados por el ID de autorización de la sentencia
deben incluir como mínimo uno de los siguientes:
v Para cada tipo distinct identificado en la sentencia:
– El privilegio USAGE sobre el tipo distinct, y
– La autorización del sistema *EXECUTE sobre la biblioteca que contiene el tipo distinct
v Autoridad administrativa
| Para obtener información acerca de las autorizaciones del sistema correspondientes a los privilegios SQL,
| consulte el apartado GRANT (Privilegios de tabla o vista).
| Sintaxis
| SYSTS_UPDATE (
esquemaÍndice
nulo
,
nombreÍndice
, opciones
)
|
| El calificador de esquema es SYSPROC.
| Parámetros
| esquemaÍndice
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
|
del registro especial CURRENT SCHEMA correspondiente al invocante.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| nombreÍndice
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
|
junto con el esquema del índice, identifica de forma exclusiva el índice de texto completo en el
|
subsistema DB2. Debe especificar un valor no nulo en este parámetro.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| Opciones
Serie de caracteres que especifica la opción que está disponible para este procedimiento almacenado.
|
|
|
|
|
La opción disponible es USING UPDATE MINIMUM. Esta opción utiliza los valores USING UPDATE
MINIMUM que ha especificado para el procedimiento almacenado SYSPROC.SYSTS_CREATE. Inicia
una actualización incremental sólo si se ha alcanzado el número de cambios especificado. El valor
predeterminado es iniciar incondicionalmente el proceso de actualización.
|
USING UPDATE MINIMUM:
|
USING UPDATE MINIMUM
|
Conceptos relacionados
“Recorte de documentos” en la página 15
OmniFind Text Search Server for DB2 for i limita el número de caracteres que pueden indexarse para
cada documento de texto. A veces, esta limitación de caracteres provoca el recorte de documentos de
texto grandes en el índice de búsqueda de texto.
Referencia relacionada
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
|
|
|
|
|
|
|
|
|
|
|
36
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
|
|
|
“SYSPROC.SYSTS_DROP” en la página 33
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_DROP para eliminar un índice de
búsqueda de texto definido mediante el procedimiento almacenado SYSPROC.SYSTS_CREATE.
|
|
Buscar con un índice de búsqueda de texto
|
|
|
|
Puede utilizar las funciones CONTAINS y SCORE en una consulta SQL con OMNIFIND. CONTAINS y
SCORE se utilizan para realizar búsquedas en un índice de búsqueda de texto utilizando los criterios
especificados en un argumento de búsqueda. También puede indexar y realizar búsquedas en
documentos XML.
|
CONTAINS
|
|
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado que
indica si se ha encontrado una coincidencia.
|
(1)
CONTAINS (
)
nombre-columna , argumento-búsqueda
,
constante-serie
|
|
Notas:
|
1
|
opciones-argumento-búsqueda:
La constante-serie debe ajustarse a las normas de las opciones de argumento-búsqueda.
|
(1)
QUERYLANGUAGE = valor
RESULTLIMIT = valor
OFF
SYNONYM =
ON
|
|
Notas:
|
1
|
El esquema es QSYS2.
|
|
|
|
|
|
|
nombre-columna
Especifica un nombre calificado o no calificado de una columna que contiene un índice de búsqueda
de texto en el que debe buscarse. La columna debe existir en la tabla o vista identificada en la
cláusula FROM de la sentencia. La columna de la tabla o la columna de la tabla base subyacente de
la vista debe tener un índice de búsqueda de texto asociado (SQLSTATE 38H12). La expresión
subyacente de la columna de una vista debe ser una referencia de columna simple a la columna de
una tabla subyacente, directamente o a través de otra vista anidada.
|
|
|
|
|
|
|
argumento-búsqueda
Especifica una expresión que devuelve un valor tipo serie que contiene los términos utilizados en la
búsqueda. La expresión no puede estar formada sólo por espacios en blanco ni ser la serie vacía
(SQLSTATE 38H14). La longitud real de la serie no puede sobrepasar los 32704 bytes. Esta longitud
puede quedar aún más limitada por el valor soportado por el servidor de búsqueda de texto
(SQLSTATE 38H10). El valor se convierte a Unicode antes de utilizarlo para realizar búsquedas en el
índice de búsqueda de texto.
No puede especificarse la misma cláusula más de una vez.
OmniFind Text Search Server
37
| constante-serie
|
Identifica una constante de tipo serie que especifica las opciones de argumento de búsqueda en vigor
|
para la función.
|
|
Las opciones que pueden especificarse como parte de las opciones-argumento-búsqueda son las
siguientes:
|
|
|
|
|
|
QUERYLANGUAGE=valor
Especifica el idioma de la consulta. El valor puede ser cualquiera de los códigos de idioma
soportados. Si no se especifica la opción QUERYLANGUAGE, el valor predeterminado es el
valor de idioma del índice de búsqueda de texto utilizado cuando se invoca la función. Si el
valor de idioma del índice de búsqueda de texto es AUTO, el valor predeterminado para
QUERYLANGUAGE es en_US.
|
|
|
|
RESULTLIMIT=valor
Especifica el número máximo de resultados que el motor de búsqueda subyacente puede
devolver. El valor puede ser un entero de 1 a 2 147 483 647. Si no se especifica la opción
RESULTLIMIT, no habrá ningún límite de resultados en vigor para la consulta.
|
|
|
|
|
|
|
|
|
Es posible que no pueda llamarse a esta función escalar para cada fila de la tabla de
resultados, dependiendo del plan elegido por el optimizador. Esta función puede llamarse
una vez para toda la consulta al motor de búsqueda subyacente. Se devuelve un conjunto de
resultados de todas las claves primarias coincidentes. A continuación, este conjunto de
resultados se une a la tabla que contiene la columna para identificar las filas de resultados.
En este caso, el valor RESULTLIMIT actúa como FETCH FIRST ?? ROWS desde el motor de
búsqueda de texto subyacente, y puede utilizarse como optimización. Si se llama al motor de
búsqueda para cada fila del resultado debido a que este es el mejor plan, la opción
RESULTLIMIT se ignora.
|
|
|
|
SYNONYM = OFF o SYNONYM = ON
Especifica si debe utilizarse un diccionario de sinónimos asociado con el índice de búsqueda
de texto. Puede añadir un diccionario de sinónimos a una colección mediante la herramienta
de sinónimos.
|
OFF
OFF es el valor predeterminado.
|
|
ON
Se utiliza el diccionario de sinónimos que está asociado con el índice de búsqueda de
texto.
| El resultado de la función es un entero grande. Si el segundo argumento puede ser nulo, el resultado
| puede ser nulo. Si el segundo argumento es nulo, el resultado es el valor nulo.
| El resultado es 1 si el documento contiene una coincidencia con los criterios de búsqueda especificados en
| el argumento de búsqueda. De lo contrario, el resultado es 0. Si la columna es nula, el resultado también
| es 0. Si el argumento de búsqueda es nulo, el resultado es el valor nulo.
| CONTAINS es una función no determinística.
| Ejemplo 1
|
|
|
|
|
La sentencia siguiente busca todos los empleados cuyo currículum contiene COBOL.
SELECT EMPNO
FROM EMP_RESUME
WHERE RESUME_FORMAT = 'ascii'
AND CONTAINS(RESUME, 'COBOL') = 1
38
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Ejemplo 2
|
|
|
El argumento de búsqueda no tiene que ser necesariamente una constante de tipo serie. El argumento de
búsqueda puede ser cualquier expresión de serie SQL, incluida una serie contenida en una variable host.
La sentencia siguiente busca el término exacto "ate" en la columna COMMENT.
|
|
|
|
|
|
|
|
|
|
|
|
Nota: El término "ate" debe delimitarse mediante comillas dobles para que se busque sólo el término
exacto sin tener en cuenta las variantes lingüísticas.
|
Ejemplo 3
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La sentencia siguiente busca aleatoriamente 10 estudiantes que hayan escrito artículos en línea que
contengan la frase "fossil fuel" en español, es decir, "combustible fósil". Estos estudiantes están destinados
a una entrevista radiofónica. Utilice el diccionario de sinónimos que se ha creado para el índice de
búsqueda de texto asociado. Dado que sólo son necesarios 10 estudiantes, optimice la consulta mediante
la opción RESULTLIMIT para limitar el número de resultados del servidor de búsqueda de texto
subyacente.
|
SCORE
|
|
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto utilizando
criterios especificados en un argumento de búsqueda. La función devuelve una puntuación de relevancia
que mide hasta que punto un documento coincide con la consulta.
char search_arg[100]; /* variable host de entrada */
...
EXEC SQL DECLARE C3 CURSOR FOR
SELECT CUSTKEY
FROM K55ADMIN.CUSTOMERS
WHERE CONTAINS(COMMENT, :search_arg)= 1
ORDER BY CUSTKEY;
strcpy(search_arg, "\"ate\""');
EXEC SQL OPEN C3;
...
SELECT FIRSTNME, LASTNAME
FROM STUDENT_ESSAYS
WHERE CONTAINS(TERM_PAPER, 'combustible fósil',
'QUERYLANGUAGE= es_ES RESULTLIMIT = 10 SYNONYM=ON') = 1
Tareas relacionadas
“Buscar en un índice de búsqueda de texto” en la página 14
Puede buscar en un índice de búsqueda de texto mediante una sentencia SQL con una función
CONTAINS o SCORE. En la función se especifican los criterios del argumento de búsqueda.
Referencia relacionada
“SCORE”
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
“Sintaxis de argumentos de búsqueda” en la página 42
Puede especificar un argumento de búsqueda como condición de una búsqueda de términos en
documentos de texto. Consta de parámetros de búsqueda y uno o más términos de búsqueda. Las
funciones escalares de búsqueda de texto SQL que utilizan argumentos de búsqueda son CONTAINS
y SCORE.
|
(1)
SCORE (
nombre-columna , argumento-búsqueda
)
,
constante-serie
|
OmniFind Text Search Server
39
| Notas:
| 1
La constante-serie debe ajustarse a las normas de las opciones de argumento-búsqueda.
| opciones-argumento-búsqueda:
|
(1)
QUERYLANGUAGE = valor
RESULTLIMIT = valor
OFF
SYNONYM =
ON
|
| Notas:
| 1
No puede especificarse la misma cláusula más de una vez.
| El esquema es QSYS2.
| nombre-columna
Especifica un nombre calificado o no calificado de una columna que contiene un índice de búsqueda
|
de texto en el que debe buscarse. La columna debe existir en la tabla o vista identificada en la
|
cláusula FROM de la sentencia. La columna de la tabla o la columna de la tabla base subyacente de
|
la vista debe tener un índice de búsqueda de texto asociado (SQLSTATE 38H12). La expresión
|
subyacente de la columna de una vista debe ser una referencia de columna simple a la columna de
|
una tabla subyacente, directamente o a través de otra vista anidada.
|
| argumento-búsqueda
Especifica una expresión que devuelve un valor tipo serie que contiene los términos utilizados en la
|
búsqueda. La expresión no puede estar formada sólo por espacios en blanco ni ser la serie vacía
|
(SQLSTATE 38H14). La longitud real de la serie no puede sobrepasar los 32704 bytes. Esta longitud
|
puede quedar aún más limitada por el valor soportado por el servidor de búsqueda de texto
|
(SQLSTATE 38H10). El valor se convierte a Unicode antes de utilizarlo para realizar búsquedas en el
|
índice de búsqueda de texto. Si el argumento de búsqueda es nulo, el resultado es el valor nulo.
|
| constante-serie
Identifica una constante de tipo serie que especifica las opciones de argumento de búsqueda en vigor
|
para la función.
|
|
|
Las opciones que pueden especificarse como parte de las opciones-argumento-búsqueda son las
siguientes:
|
|
|
|
|
|
QUERYLANGUAGE=valor
Especifica el idioma de la consulta. El valor puede ser cualquiera de los códigos de idioma
soportados. Si no se especifica la opción QUERYLANGUAGE, el valor predeterminado es el
valor de idioma del índice de búsqueda de texto utilizado cuando se invoca la función. Si el
valor de idioma del índice de búsqueda de texto es AUTO, el valor predeterminado para
QUERYLANGUAGE es en_US.
|
|
|
|
RESULTLIMIT=valor
Especifica el número máximo de resultados que el motor de búsqueda subyacente puede
devolver. El valor puede ser un entero de 1 a 2 147 483 647. Si no se especifica la opción
RESULTLIMIT, no habrá ningún límite de resultados en vigor para la consulta.
Es posible que no pueda llamarse a esta función escalar para cada fila de la tabla de
resultados, dependiendo del plan elegido por el optimizador. Esta función puede llamarse
una vez para toda la consulta al motor de búsqueda subyacente. Se devuelve un conjunto de
resultados de todas las claves primarias coincidentes. A continuación, este conjunto de
resultados se une a la tabla que contiene la columna para identificar las filas de resultados.
En este caso, el valor RESULTLIMIT actúa como FETCH FIRST ?? ROWS desde el motor de
|
|
|
|
|
|
40
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
búsqueda de texto subyacente, y puede utilizarse como optimización. Si se llama al motor de
búsqueda para cada fila del resultado debido a que este es el mejor plan, la opción
RESULTLIMIT se ignora.
|
|
|
|
SYNONYM = OFF o SYNONYM = ON
Especifica si debe utilizarse un diccionario de sinónimos asociado con el índice de búsqueda
de texto. Puede añadir un diccionario de sinónimos a una colección mediante la herramienta
de sinónimos.
|
OFF
OFF es el valor predeterminado.
|
|
ON
Se utiliza el diccionario de sinónimos que está asociado con el índice de búsqueda de
texto.
| El resultado de la función es un número de coma flotante de precisión doble. Si el segundo argumento
| puede ser nulo, el resultado puede ser nulo. Si el segundo argumento es nulo, el resultado es el valor
| nulo.
|
|
|
|
El resultado es mayor que 0 pero menor que 1 si la columna contiene una coincidencia con los criterios
de búsqueda especificados por el argumento de búsqueda. Cuanto mayor sea la frecuencia con la que se
encuentre una coincidencia, mayor será el valor del resultado. Si la columna no contiene ninguna
coincidencia, el resultado será 0. La puntuación también será 0 si la columna es nula.
| SCORE es una función no determinística.
|
Ejemplo
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La sentencia siguiente genera una lista de empleados ordenada por el grado de coincidencia de sus
currículums con programador AND (java OR cobol). Además, se devuelve un valor de relevancia
normalizado entre 0 (cero) y 100.
SELECT EMPNO, INTEGER(SCORE(RESUME, 'programador AND
(java OR cobol)') * 100) AS RELEVANCE
FROM EMP_RESUME
WHERE RESUME_FORMAT = 'ascii'
ORDER BY RELEVANCE DESC
Tareas relacionadas
“Buscar en un índice de búsqueda de texto” en la página 14
Puede buscar en un índice de búsqueda de texto mediante una sentencia SQL con una función
CONTAINS o SCORE. En la función se especifican los criterios del argumento de búsqueda.
Referencia relacionada
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
“Sintaxis de argumentos de búsqueda” en la página 42
Puede especificar un argumento de búsqueda como condición de una búsqueda de términos en
documentos de texto. Consta de parámetros de búsqueda y uno o más términos de búsqueda. Las
funciones escalares de búsqueda de texto SQL que utilizan argumentos de búsqueda son CONTAINS
y SCORE.
OmniFind Text Search Server
41
|
Sintaxis de argumentos de búsqueda
|
|
|
|
Puede especificar un argumento de búsqueda como condición de una búsqueda de términos en
documentos de texto. Consta de parámetros de búsqueda y uno o más términos de búsqueda. Las
funciones escalares de búsqueda de texto SQL que utilizan argumentos de búsqueda son CONTAINS y
SCORE.
| En cualquier proceso específico de idioma durante una búsqueda, puede especificar un valor para el
| parámetro QUERYLANGUAGE como opción de argumento de búsqueda. El valor puede ser cualquiera
| de los códigos de idioma soportados.
| Si no se especifica el parámetro QUERYLANGUAGE, el valor predeterminado es el valor de idioma del
| índice de búsqueda de texto utilizado cuando se llama a esta función.
| Si el valor de idioma del índice de búsqueda de texto es AUTO, el valor predeterminado para
| QUERYLANGUAGE es en_US.
| Limitaciones
| No pueden utilizarse las funciones CONTAINS y SCORE en una restricción SQL o definición de índice.
| Puede utilizarlas en definiciones de vista y sentencias de consulta SQL con las restricciones siguientes:
| v Si una vista, expresión de tabla anidada o expresión de tabla común suministra una columna de
búsqueda de texto para una función escalar CONTAINS o SCORE, y si la vista, expresión de tabla
|
anidada o expresión de tabla común en cuestión contiene una cláusula DISTINCT en la sentencia
|
SELECT más externa, la lista de SELECT debe contener todos los campos de clave correspondientes del
|
índice de búsqueda de texto. De lo contrario, se devuelve el mensaje SQL 38H12.
|
| v Si una vista, expresión de tabla anidada o expresión de tabla común suministra una columna de
búsqueda de texto para una función escalar CONTAINS o SCORE, la vista, expresión de tabla anidada
|
o expresión de tabla común en cuestión no pueden contener una sentencia UNION, EXCEPT o
|
INTERSECT en el nivel más externo de SELECT. De lo contrario, se devuelve el mensaje SQL 38H12.
|
| v Si una expresión de tabla común suministra una columna de búsqueda de texto para una función
escalar CONTAINS o SCORE, la expresión de tabla común puede referenciarse de nuevo en toda la
|
consulta sólo si la referencia no suministra una columna de búsqueda de texto para una función escalar
|
CONTAINS o SCORE. De lo contrario, se devuelve el mensaje SQL 38H12.
|
| v No puede crearse una función cuyo origen sean las funciones escalares CONTAINS o SCORE. De lo
contrario, se devuelve el mensaje SQL SQL0457.
|
| v La consulta puede ejecutarse mediante el motor de consultas SQL (SQE).
| Búsqueda simple
| Para realizar una búsqueda simple de palabras clave, especifique una o varias palabras clave en la
| consulta. El motor de búsqueda devuelve los documentos que contienen todas las palabras clave
| especificadas o variantes de las mismas.
| Por ejemplo, si especifica rey, el motor de búsqueda devolverá todos los documentos que contienen la
| palabra rey o reyes. Si especifica la consulta rey lear, el motor de búsqueda devolverá los documentos
| que contienen los términos rey y lear.
| Para visualizar resultados más precisos, utilice palabras clave más específicas. Por ejemplo, especifique
| café irlandés en lugar de café, o senderismo en Kauai en lugar de vacaciones en Hawai.
| Si una búsqueda simple de palabras clave devuelve demasiados documentos que no corresponden a lo
| que está buscando, puede utilizar operadores para refinar la búsqueda.
42
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Exclusión de términos de una búsqueda
|
|
Para excluir términos se utiliza el signo menos (-). Por ejemplo, si desea buscar los documentos que
contienen el término lear, pero no eduardo, especifique la consulta lear -eduardo.
| El signo menos (-) también se aplica a un término y a sus variantes. Por ejemplo, la consulta -eduardo
| excluye los documentos que contienen la palabra eduardiano.
|
Búsqueda de frases
| Si desea asegurarse de que los términos se visualicen exactamente en el orden en que los ha especificado,
| puede utilizar comillas dobles. Por ejemplo, si desea visualizar los documentos que contienen
| exactamente el término rey lear, pero no frases relacionadas, tales como real lear o rey y reina lear,
| especifique "rey lear". La búsqueda no distingue entre mayúsculas y minúsculas, pero las variantes
| terminológicas no se consideran coincidencias.
|
Carácter comodín en una búsqueda
| El carácter comodín (*) ayuda a encontrar documentos cuando no se conoce la palabra completa o si se
| desea buscar variantes del término. Por ejemplo, la consulta chec* devuelve los documentos que
| contienen los términos checo, checoslovaquia, checoslovaco, república checa y otros resultados posibles.
| También puede utilizar el carácter comodín en una búsqueda de frase. Por ejemplo, la consulta "John *
| Kennedy" devuelve los documentos que contienen los términos John Fitzgerald Kennedy y John F
| Kennedy, pero no John Kennedy. La consulta Mi*l Gorbachev devuelve Mikhail Gorbachev.
| La adición de un carácter comodín al principio de una consulta (por ejemplo, *hec) puede provocar que
| el motor de búsqueda tarde más tiempo en devolver resultados.
|
Búsquedas de uno de los términos como mínimo
| El operador lógico OR especifica que debe visualizarse como mínimo uno de los términos de una
| consulta en el documento devuelto. Por ejemplo, la consulta (othello OR otelo) devuelve los
| documentos que contienen el término othello u otelo.
|
|
|
También puede utilizar los operadores lógicos AND, OR y NOT en combinaciones utilizando paréntesis.
Por ejemplo, la consulta cougar OR (jaguar AND NOT coche) devuelve los documentos que contienen los
términos cougar o jaguar, pero no coche.
| Debe especificar los operadores lógicos AND, OR y NOT en mayúsculas. Utilice los paréntesis para
| especificar agrupaciones.
Conceptos relacionados
|
“Búsqueda XML” en la página 47
|
Puede indexar y realizar búsquedas en documentos XML. La gramática de búsqueda XML utiliza un
|
subconjunto del lenguaje W3 XPath con ampliaciones para búsqueda de texto. Las ampliaciones dan
|
soporte a búsquedas de rango de valores numéricos, de fecha (Date) y fecha y hora (DateTime)
|
asociados con un atributo o elemento XML. Los elementos estructurales pueden utilizarse por
|
separado o combinarse con texto sin formato en las consultas.
|
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
OmniFind Text Search Server
43
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
|
| Ejemplos de consulta simple
| Las consultas simples de las funciones CONTAINS y SCORE buscan una o varias palabras en un índice
| de búsqueda de texto.
| El motor de búsqueda ignora los espacios en blanco entre caracteres. La serie de búsqueda no debe estar
| vacía ni contener sólo espacios en blanco (SQLSTATE 38H14).
| La tabla siguiente muestra algunos ejemplos de consultas de búsqueda simples.
| Tabla 3. Ejemplos de consulta simple
| Tipos de palabras de
| búsqueda
Ejemplos
Resultados de consulta
| Palabra única
|
|
|
|
rey
Devuelve todos los documentos que
contienen la palabra rey o reyes. Esta
consulta compara diferentes formularios
de superficie y no es sensible a las
mayúsculas y minúsculas.
| Varias palabras
|
|
|
|
rey lear
Devuelve todos los documentos que
contienen la palabra rey y lear. El
operador predeterminado es el operador
lógico AND.
| Los operadores AND y + están implícitos en todas las consultas. Por ejemplo, la consulta Rey Lear
| devuelve los mismos resultados que Rey AND Lear o Rey + Lear.
| Debe especificar los operadores lógicos NOT, AND y OR en mayúsculas.
Referencia relacionada
|
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
|
|
|
|
|
|
|
|
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
| Operadores de búsqueda avanzada
| Puede utilizar operadores de búsqueda avanzada para refinar los resultados de búsqueda de las
| funciones CONTAINS y SCORE.
|
|
|
|
En la tabla siguiente, la primera columna describe el operador que puede utilizarse en una consulta de
búsqueda. Debe especificar los operadores lógicos NOT, AND u OR en mayúsculas. La segunda columna
muestra una consulta de ejemplo que puede especificarse. La tercera columna describe los tipos de
resultados que puede observar en la consulta de ejemplo.
44
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 4. Operadores de búsqueda avanzada y ejemplos de consultas complejas
|
Operadores
Ejemplos
Resultados de consulta
|
||
|
|
|
|
|
|
AND
"Rey Lear" AND "Otelo"
Cualquier consulta devolverá los
documentos que contengan ambos
términos, Rey Lear y Otelo. AND es el
operador de conjunción predeterminado.
Si no hay ningún operador lógico entre
los dos términos, se utiliza el operador
AND. Por ejemplo, la consulta Rey Lear
es igual a la consulta Rey AND Lear.
|
|
|
|
|
OR
"Rey Lear" OR Lear
Devuelve los documentos que contienen
Rey Lear o sólo Lear. El operador OR
enlaza los dos términos y busca un
documento coincidente si alguno de los
dos términos existe en un documento.
|
|
NOT
"Rey Lear"
NOT "Norman Lear"
Devuelve los documentos que contienen
Rey Lear, pero no Norman Lear.
|
||
|
||
|
||
""
Primera consulta:
La primera consulta devuelve la frase
exacta Rey Lear.
"Rey Lear" "Otelo"
"Rey Lear"
(Coincidencia exacta)
Segunda consulta:
"rey"
La segunda consulta devuelve sólo la
palabra rey sin otras variantes, tales
como reyes o reyezuelo.
| *
|
| (Carácter comodín)
|
test*
te*t
Devuelve los documentos que pueden
coincidir con las posibles combinaciones,
como por ejemplo test, tests y tester,
o test y text.
|
||
|
|
|||
|
||
|
|
Primera consulta:
La primera consulta fuerza a los
documentos que contienen la frase Rey
Lear a visualizarse más arriba en la lista
de resultados de búsqueda.
^
"Rey Lear"^4 "Ricardo III"
(Factor de coincidencia de puntuación)
Segunda consulta:
número^de
alguna palabra o frase
title:
(descarga de software)^5
pdf viewer -shipping
|
|
|
|
|
La segunda consulta fuerza a un
documento titulado descarga de
software a visualizarse más arriba en la
lista de resultados.
Aunque un factor de coincidencia (boost
factor) debe ser positivo, puede ser
inferior a 1. Por ejemplo, puede ser de
0,2. El número del factor de coincidencia
no tiene límite.
| +
|
| (Includes)
+Lear Rey
Devuelve todos los documentos que
contienen Lear y Rey, que es lo mismo
que la consulta Lear AND Rey.
| |
| (Excludes)
"Rey Lear" -"Lear Jet"
Devuelve los documentos que contienen
Rey Lear, pero no Lear Jet.
| ()
|
|
|
(Rey OR Lear) AND obras
Devuelve los documentos que contienen
Rey o Lear y obras. Los paréntesis
garantizan que se encuentre obras y el
término Rey o Lear esté presente.
OmniFind Text Search Server
45
| Tabla 4. Operadores de búsqueda avanzada y ejemplos de consultas complejas (continuación)
| Operadores
Ejemplos
Resultados de consulta
| \
\(1\+1\)\:2
Devuelve los documentos que contienen
|
(1+1):2. Utilice el carácter \ para borrar
| (Carácter de escape)
caracteres especiales que forman parte
|
de la sintaxis de consulta. Los caracteres
|
especiales son: +, -, &&, ||, !, (, ), {, }, [,
|
], ^, ", ~, *, ?, : y \. Si se borra un
|
carácter especial, éste se analiza como
|
parte de la consulta.
|
|
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
|
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
|
|
|
Ejemplo de utilización de las funciones CONTAINS y SCORE
Puede utilizar las funciones CONTAINS y SCORE en la misma consulta. La consulta busca en un índice
de búsqueda de texto y devuelve si y con qué frecuencia el documento de texto coincide con los criterios
del argumento de búsqueda.
| El ejemplo de la tabla siguiente utiliza datos de la tabla base BOOKS con las columnas ISBN
| (VARCHAR(20)), ABSTRACT (VARCHAR(10000)) y PRICE (INTEGER).
| Tabla 5. La tabla base BOOKS
| ISBN
ABSTRACT
PRICE
| i1
"a b c"
7
| i2
"a b d"
10
| i3
|
"a e a"
8
|
|
|
|
Ejecute la consulta siguiente:
SELECT ISBN, SCORE(ABSTRACT,'"b"')
FROM BOOKS
WHERE CONTAINS (ABSTRACT,'"b"') = 1
| Esta consulta devuelve las dos filas siguientes:
| i1, 0.3
| i3, 0.4
| Los valores de puntuación pueden diferir en función del contenido de la columna de texto.
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
|
46
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
Búsqueda XML
|
|
|
|
|
Puede indexar y realizar búsquedas en documentos XML. La gramática de búsqueda XML utiliza un
subconjunto del lenguaje W3 XPath con ampliaciones para búsqueda de texto. Las ampliaciones dan
soporte a búsquedas de rango de valores numéricos, de fecha (Date) y fecha y hora (DateTime) asociados
con un atributo o elemento XML. Los elementos estructurales pueden utilizarse por separado o
combinarse con texto sin formato en las consultas.
|
|
|
Los documentos deben indexarse para que incluyan el código XML para poder realizar búsquedas en el
índice mediante la sintaxis de consulta xmlxp. La indexación de documentos se realiza mediante la
opción “FORMAT XML” durante la creación del índice.
|
|
|
|
|
Los índices creados en un release anterior pueden utilizarse para realizar búsquedas. Sin embargo, los
documentos indexados en un release anterior no contienen la información necesaria para utilizar todas las
prestaciones de búsqueda XML disponibles en un release más reciente. Los documentos añadidos o
actualizados en el índice de búsqueda de texto después de la actualización al nuevo release incluyen la
información adicional.
|
|
|
Es posible que, como resultado de una actualización, los documentos indexados en el release anterior no
se incluyan en algunos resultados de búsqueda. Puede utilizarse el procedimiento almacenado
SYSPROC.SYSTS_REPRIMEINDEX para reconstruir el índice y resolver este problema.
| Para utilizar las UDF CONTAINS y SCORE de OMNIFIND para buscar datos XML, la serie de búsqueda
| debe empezar por el prefijo de búsqueda @xmlxp:. El prefijo va seguido de una expresión de consulta de
| búsqueda XML válida. El prefijo de término 'opaco' @xmlxp indica que una búsqueda se realiza utilizando
| la expresión de vía de acceso de consulta.
| Por ejemplo: CONTAINS(columnname, '@xmlxp:''expresión_consulta'' ').
| Las comillas simples ' ' que entrecomillan la expresión_consulta deben ser dobles, ya que se encuentran
| dentro de una serie SQL, siendo en realidad una serie dentro de otra serie.
| El prefijo de término opaco @xpath: utilizado en releases anteriores de OmniFind Text Search Server for
| DB2 for i está soportado a efectos de compatibilidad con versiones anteriores. Sin embargo, ha quedado
| en desuso y no es aconsejable utilizarlo.
| A continuación figura una lista donde se resaltan las características clave de la búsqueda XML:
| Búsqueda estructural XML
|
|
|
|
Mediante la inclusión de términos XML opacos especiales en las consultas, puede buscar en documentos
XML elementos estructurales y texto cuyo ámbito sea el de dichos elementos. Los elementos estructurales
son nombres de códigos, nombres de atributos y valores de atributos. Los nombres de elementos y
códigos son sensibles a las mayúsculas y minúsculas.
| Señalización de consultas XML
|
|
|
|
La señalización es el proceso de analizar la entrada para generar señales. El texto sin formato de los
términos de consulta XML se señaliza del mismo modo que el texto de los términos de consulta no XML.
Una excepción son los términos opacos anidados, que no están soportados. La búsqueda de texto sin
formato no es sensible a las mayúsculas y minúsculas.
| Esquema XML y DTD
OmniFind Text Search Server
47
| Los esquemas XML asociados con el documento XML no se descargan, y los valores predeterminados no
| se indexan.
| Valores numéricos
| Los predicados que comparan valores de atributos o elementos con números están soportados.
| Valores de elementos
| Los predicados que comparan valores de elementos con números o fechas están soportados. El elemento
| que contiene la fecha o el número debe ser un elemento XML que contenga sólo el número o la fecha.
| Los espacios en blanco iniciales y finales se ignoran.
| Valores de tipo serie
| La utilización del operador = para un argumento de tipo serie en un predicado requiere la coincidencia
| completa de todas las palabras clave de la serie con las señales del ámbito de texto identificado. El orden
| de las señales no es significativo al realizar la comparación.
|
Valores DateTime
|
Los predicados que comparan atributos o elementos de tipo Date o DateTime están soportados.
| Expresiones de vía de acceso:
|
Tabla 6. Expresiones de vía de acceso:
|
Expresión @xmlxp
Descripción
|
|
TagName
Selecciona un código denominado TagName y todos los
hijos de dicho código.
|
@AttributeName
Selecciona un atributo denominado @AttributeName.
|
/
Realiza una selección del nodo raíz.
|
|
|
//
Selecciona los códigos y atributos coincidentes que
descienden de la posición actual y coinciden con la
expresión.
|
|
.
Self: el nodo de elemento o código actual.
|
Tabla 7. Ejemplos de expresiones de vía de acceso:
|
Expresión @xmlxp
Resultado
|
|
/Document
Devuelve todos los documentos con un código de nivel
superior Document.
|
|
//Document
Devuelve todos los documentos con un código Document
en cualquier nivel.
|
|
|
/Document/Child1
Devuelve todos los documentos con un código de nivel
superior Document que tienen un código hijo directo
Child1.
|
|
|
/Document//Child1
Devuelve todos los documentos con un código de nivel
superior Document que tienen un código descendiente
Child1 en cualquier nivel.
|
|
/Root/@attr1
Devuelve todos los documentos con un código de nivel
superior Root con un atributo attr1.
48
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 7. Ejemplos de expresiones de vía de acceso: (continuación)
|
Expresión @xmlxp
Resultado
|
|
|
/Root//@attr1
Devuelve todos los documentos con un código de nivel
superior Root con un atributo attr1 en dicho código raíz
o en cualquier código descendiente.
|
|
|
//@attr1
Devuelve todos los documentos que tienen un atributo
@attr1 en cualquier nivel.
|
|
Nota: La expresión de búsqueda XML debe tener un código o nombre de atributo real en la expresión de
vía de acceso relativa. / y // no son por sí mismos consultas de búsqueda válidas.
Las expresiones de vía de acceso sólo se permiten hacia adelante, y sólo en un único eje.
|
|
Soporte de comodín de expresiones de vía de acceso
|
|
En la expresión de vía de acceso, puede utilizarse el carácter comodín especial * para indicar exactamente
un código con cualquier nombre.
|
Los comodines finales de expresión de vía de acceso se ignoran.
|
|
Las siguientes utilizaciones de comodines de expresión de vía de acceso no están soportadas y
provocarán un error:
v Una expresión que haga referencia sólo a comodines y no a elementos o atributos específicos.
|
|
|
v Un atributo de comodín en cualquier nivel: /Tag/@*.
v Un comodín que preceda inmediatamente a una expresión de predicado: /Root/*[//anytag].
| v
| v
| v
| v
Un
Un
Un
Un
comodín utilizado en una comparación de predicados: /Root[* > 5].
comodín como prefijo de espacio de nombres XML: //*:tagname.
comodín con un espacio de nombres XML como prefijo: //ns:*.
carácter comodín utilizado como parte de un nombre de código: /start*.
|
Tabla 8. Ejemplos de comodines de expresión de vía de acceso:
|
Expresión @xmlxp
Resultado
|
|
|
/Root/*/T1
Todos los documentos que tengan un código de nivel
superior Root que tenga un código descendiente T1 con
un nivel intermedio.
|
|
|
|
/Root/*//T1
Todos los documentos que tengan un código de nivel
superior Root que tenga un código descendiente T1 con
uno o más niveles intermedios.
|
Predicados
|
|
Los predicados se utilizan para especificar un valor o condición que un nodo de elemento o atributo debe
cumplir. Los predicados se especifican siempre entre corchetes cuadrados: [].
|
Tabla 9. Ejemplos de predicados:
|
Expresión @xmlxp
Resultado
|
|
/Book[Sentences]
El código de nivel superior es Book y debe tener un hijo
directo Sentences.
|
|
|
/Book[.//Sentences and .//Author]
El código de nivel superior es Book y debe tener los
descendientes Sentences y Author. Cada descendiente
puede estar a cualquier nivel por debajo de Book.
OmniFind Text Search Server
49
|
|
|
|
|
Dado que las expresiones de vía de acceso siempre se especifican hacia adelante y están limitadas a un
único acceso, las expresiones de vía de acceso en predicados deben ser relativas al nodo actual.
/Book[/Root] y /Book[//Root] no son válidas, ya que en ambos casos la expresión de vía de acceso del
predicado empieza por el código de nivel superior ‘Root' en lugar del nodo actual.
| Comparaciones numéricas
| OMNIFIND admite los operadores =, <=, >=, >, < y != para comparaciones de elementos y atributos con
| valores enteros y de coma flotante.
|
|
|
Si se trata de elementos simples, sólo se indexan sus valores numéricos. No pueden contener caracteres
adicionales (aparte del espacio en blanco) ni tener elementos descendientes. Los elementos complejos se
indexan sólo como texto.
|
Tabla 10. Ejemplos de comparación numérica:
|
Expresión @xmlxp
Resultado
|
|
/Book[@id_num = 12345]
El código de nivel superior es Book y debe tener un
atributo id_num con el valor 12345.
|
|
|
|
/Book[Cost <= 100,50]
El código de nivel superior es Book. Book tiene el
elemento hijo directo Cost cuyo valor numérico es
inferior o igual a 100,50.
| Comparaciones de Date y DateTime
| OMNIFIND admite los operadores =, <=, >=, >, < y != para comparaciones de elementos y atributos con
| valores de tipo Date y DateTime.
|
|
|
En los elementos simples, sólo se indexan sus valores DateTime. Estos elementos no pueden contener
caracteres adicionales (aparte del espacio en blanco) ni tener elementos descendientes. Los elementos
complejos se indexan sólo como texto.
|
|
|
Durante la indexación, se examinan los valores de atributo y el texto contenidos dentro de códigos XML
simples. Si se determina que el texto coincide con un formato ISO de fecha (Date) o de fecha y hora
(DateTime), se indexa como un valor Date o DateTime que puede buscarse en un predicado.
|
|
Durante una búsqueda, el valor Date o DateTime debe incluirse en una llamada a una función xs:date()
o xs:dateTime() para que se reconozca como el tipo de datos correcto.
|
|
|
|
Un tipo de datos XML DateTime de un documento XML puede especificar un valor de huso horario. Sin
embargo, al indexar un valor DateTime, el servidor de búsqueda de texto trunca los valores de huso
horario. Por tanto, los husos horarios no se tienen en cuenta durante las búsquedas XML que implican a
tipos de datos Date o DateTime.
|
|
Además, un valor DateTime con la hora 24 sólo se permite si los minutos y los segundos son cero. Se
tratará como un valor entre el último instante del día y el primer instante del día siguiente.
|
|
Cuando se especifica un valor Date o DateTime en un predicado de búsqueda XML, se produce un error
de sintaxis si se especifica un huso horario en el valor.
|
El tipo de datos DateTime admite un máximo de 12 dígitos de segundos fraccionarios.
50
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 11. Ejemplos de comparación con Date y DateTime:
|
Expresión @xmlxp
Resultado
|
|
|
/Book[@publishDate > xs:date(“2000-01-01”)]
El código de nivel superior es Book. Book tiene un
atributo publishDate que es mayor que la fecha
2000-01-01.
|
|
|
|
/Book[purchaseTime > xs:dateTime(“2009-0520T13:00:00”)]
El código de nivel superior es Book. Book tiene un hijo
directo purchaseTime que es una expresión DateTime
mayor que 2009-05-20T13:00:00.000000.
|
Funciones contains y excludes en el código XML
| Las funciones contains y excludes se utilizan para realizar búsquedas de texto completas en el código XML.
| La función contains devuelve true si la consulta se encuentra dentro del nodo destino; excludes devuelve
| true si la consulta No se encuentra dentro del nodo destino.
Por ejemplo, podemos buscar todos los documentos con un código de nivel superior denominado email y
un descendiente directo denominado body que contenga variantes de la frase “Presupuesto de
departamento”.
|
|
|
|
@xnkxo:''/email[body contains (“presupuesto de departamento”)]''
|
|
|
|
El texto sin formato pasado a la función contains o excludes se maneja del mismo modo que cualquier otra
búsqueda de texto sin formato. La búsqueda no distingue entre mayúsculas y minúsculas y se tienen en
cuenta las variantes lingüísticas. La consulta anterior encontrará “presupuestos de departamentos” y
también “presupuesto para el departamento”.
|
|
|
|
La búsqueda puede restringirse a una coincidencia exacta mediante las comillas tradicionales, por
ejemplo, @xmlxp:''/email[body contains(“””presupuesto de departamento”””)] ''. Las comillas que
indican una coincidencia exacta deben ser dobles para que no se interpreten como el final de la serie de
texto sin formato de contains.
|
Tabla 12. Ejemplos de funciones contains y excludes:
|
Expresión @xmlxp
Resultado
|
|
|
/Book[abstract contains(“gato AND perro”)]
Código de nivel superior Book que tiene un código hijo
abstract que contiene variantes lingüísticas de los
términos gato y perro.
|
|
/Book[abstract contains(“gato AND perro”)]
/Book/@title[. contains(“gato OR perro”)]
Código de nivel superior Book que tiene un atributo
title que contiene variantes lingüísticas de gato o perro.
|
|
|
/Book/Title[. contains(“””Todos los buenos perros
van al cielo”””)]
Código de nivel superior Book con un hijo directo Title
que contiene todos los buenos perros van al cielo por
orden, y sin tener en cuenta las variantes lingüísticas.
|
|
|
|
/Book[abstract excludes(“gato AND perro”)]
Código de nivel superior Book que tiene un código hijo
abstract que no contiene variantes lingüísticas de los
términos gato y perro.
|
Operador de comparación de series completas
|
|
|
|
El operador = con un argumento de tipo serie en un predicado requiere la coincidencia completa de todas
las señales de la serie con todas las señales del ámbito de texto identificado. Los equivalentes lingüísticos
no se tienen en cuenta. El orden de los términos buscados no es significativo. No es obligatorio que el
elemento o atributo contengan sólo el texto buscado.
OmniFind Text Search Server
51
|
Tabla 13. Ejemplos de operador de comparación de series completas:
|
Expresión @xmlxp
|
|
|
|
/Book[@author =
|
|
|
|
|
|
/Book[author =
Resultado
“Nicholas Lawrence”]
“””Nicholas Lawrence”””]
Código de nivel superior Book que tiene un atributo
author. El atributo author debe contener los términos
Nicholas Lawrence. Las variantes lingüísticas de esos
términos no se consideran coincidencias.
Código de nivel superior Book que tiene un descendiente
directo author. El atributo author debe contener los
términos Nicholas Lawrence por orden. Las variantes
lingüísticas de esos términos no se consideran
coincidencias.
| Operadores lógicos
| Pueden utilizarse los operadores lógicos and y or en los predicados.
|
Tabla 14. Ejemplos de operadores lógicos:
|
Expresión @xmlxp
Resultado
|
|
|
|
/Book[@author = “””Nicholas Lawrence”””]/Price[. <
1000 and @unit = “dollars”]
Código de nivel superior Book que tiene un atributo
author. El atributo author debe contener los términos
Nicholas Lawrence por orden. Las variantes lingüísticas
de esos términos no se consideran coincidencias.
|
|
|
|
Book debe tener un hijo directo Price con el valor <1000.
El nodo Price debe tener un atributo @unit que tenga el
valor dollars.
| Precedencia de operadores
|
|
|
|
|
En los predicados de búsqueda XML, los operadores de contención y comparación tienen preferencia
sobre los operadores lógicos, y todos los operadores lógicos tienen la misma preferencia.
v Los operadores de contención son contains y excludes.
v Los operadores de comparación son =, !=, <, >, <= y >=.
v Los operadores lógicos son and y or.
| Puede utilizar paréntesis para garantizar la precedencia deseada.
|
Referencia relacionada
|
“Sintaxis de argumentos de búsqueda” en la página 42
|
Puede especificar un argumento de búsqueda como condición de una búsqueda de términos en
|
documentos de texto. Consta de parámetros de búsqueda y uno o más términos de búsqueda. Las
|
funciones escalares de búsqueda de texto SQL que utilizan argumentos de búsqueda son CONTAINS
|
y SCORE.
|
“SYSPROC.SYSTS_REPRIMEINDEX” en la página 73
|
Puede ajustar (reprime) el índice e iniciar una actualización inicial mediante el procedimiento
|
almacenado SYSPROC.SYSTS_REPRIMEINDEX. Utilice este procedimiento almacenado cuando desee
|
restaurar datos desde la tabla base.
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
52
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
|
|
|
Soporte de espacio de nombres en búsquedas XML
|
Visión general
|
|
En XML, el desarrollador elige los nombres de elementos y atributos. Estos nombres pueden crear
conflictos cuando se mezclan documentos XML procedentes de aplicaciones diferentes.
|
|
|
Por tanto, resulta de utilidad restringir la búsqueda de consultas a los elementos significativos del
documento, especialmente cuando pueden indexarse varios tipos de documentos diferentes. La restricción
de la búsqueda puede realizarse mediante espacios de nombres.
|
|
|
|
|
|
|
Los espacios de nombres proporcionan el ámbito de los elemento y atributoss del documento para
garantizar la interpretación correcta de los valores. Los espacios de nombres se describen con un nombre
largo (URI) y, opcionalmente, un nombre abreviado denominado Qname (nombre calificado).
|
|
|
http://example.com/ns/abc es el nombre largo del espacio de nombres y x es el prefijo de Qname. Un
prefijo de Qname resulta de utilidad como abreviatura del espacio de nombres de cada referencia de
elemento.
|
El elemento p está calificado por el espacio de nombres http://example.com/ns/abc.
|
El espacio de nombres predeterminado
|
|
|
|
|
|
|
Puede especificarse un espacio de nombres predeterminado para los elementos XML. El espacio de
nombres predeterminado se aplica al código actual y a los códigos descendientes. Cualquier código sin
calificar del espacio de trabajo hereda el espacio de nombres predeterminado.
Puede utilizar un espacio de nombres para establecer el ámbito de los elementos y atributos de un
documento. Los espacios de nombres resultan de utilidad para restringir la búsqueda de consultas a los
elementos significativos del documento.
<?xml version='1.0'?>
<doc xmlns:x="http://example.com/ns/abc">
<x:p/>
</doc>
<?xml version='1.0'?>
<doc xmlns="http://example.com/ns/abc">
<p/>
</doc>
| En este caso, tanto el elemento doc como el elemento p se encuentran en el espacio de nombres
| http://example.com/ns/abc.
| Espacios de nombres de atributos
| Un atributo puede tener un espacio de nombres diferente del de su elemento asociado.
| Elemento y atributo calificados:
| <dog xmlns:an="http://example.org/animals" xmlns:sz=”http://example.org/sizes”>
| <an:breed sz:size=”Medium”>Mutt</an:breed>
| </dog>
|
|
|
Los elementos y atributos heredan el espacio de nombres de forma diferente, cuando éste no se especifica
explícitamente. Los elementos sin calificar recogen el espacio de nombres predeterminado del ámbito en
el que se encuentran. Los atributos sin calificar no tienen espacio de nombres.
OmniFind Text Search Server
53
|
|
|
|
Elemento y atributo sin calificar:
<dog xmlns:an="http://example.org/animals">
<breed size=”Medium”>Mutt</an:breed>
</dog>
| En este ejemplo, el elemento breed tiene el espacio de nombres http://example.org/animals. Sin
| embargo, el atributo size no tiene ningún espacio de nombres asociado.
| Para obtener más información acerca de los espacios de nombres de XML, consulte la recomendación
| W3C para espacios de nombres en XML, que se encuentra en el sitio de World Wide Web
| Consortium(W3C) (http://www.w3.org)
.
| Prefijos de Qname reservados
| Los siguientes prefijos de Qname están reservados y no deben utilizarse para calificar elementos o
| atributos definidos por usuario: xml, xs, xsi, fn, local.
| Utilizar espacios de nombres en una búsqueda
| Los prefijos QName y los espacios de nombres de elemento predeterminados deben definirse en el
| prólogo de consulta @xmlxp del término de búsqueda.
| Ejemplo de prólogo que correlaciona el espacio de nombres ns1 con el URI "http://miempresa.com"
| declare namespace ns1 = "http://miempresa.com";
| Ejemplo de prólogo que especifica que todos los elementos sin calificar están calificados por el URI
| "http://miempresa.com":
| declare default element namespace "http://miempresa.com"
| Si una consulta no declara ningún prefijo QName de espacio de nombres o espacio de nombres de
| elementos predeterminado, los espacios de nombres no se tienen en cuenta en la consulta. Un elemento o
| atributo se considera coincidente si existe en algún espacio de nombres.
| Si se declara algún prefijo QName o espacio de nombres predeterminado, los nombres de elemento o
| atributo sólo se consideran coincidentes si existen en el espacio de nombres especificado.
| La sintaxis
| declare default element namespace "”;
| no podría utilizarse para indicar que los códigos sin calificar no se encuentran en ningún espacio de
| nombres.
| No es necesario que los prefijos QName utilizados en la serie de búsqueda XML coincidan con el prefijo
| QName utilizado en el documento XML. Las coincidencias se basan únicamente en el URI de nombre
| largo.
| Ejemplos:
|
|
|
|
|
Restringir la búsqueda al atributo attr del elemento test, estando el elemento test correlacionado con el
espacio de nombres (namespace) "http://posample.org", y attr no se encuentra en ningún espacio de
nombre (namespace). Utilizar el namespace predeterminado para simplificar la sintaxis.
CONTAINS(myxmlcol, '@xmlxp:''declare default element namespace “http://myexample.org”;
/test[@attr > xs:date(“2005-01-01”)]''')
| Restringir la búsqueda al atributo attr del elemento test, donde el elemento test tiene el namespace
| "http://myexample.org". Utilizar sintaxis de namespace explícito mediante el prefijo QName abc.
54
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
CONTAINS(myxmlcol, '@xmlxp:''declare namespace abc =
/abc:test[@attr < xs:date(“2009-01-01”)]''')
“http://myexample.org”;
| Restringir la búsqueda a los elementos hijos shipTo name y billTo name del elemento purchaseOrder, que
| está correlacionado explícitamente con namespace "http://myexample.org" mediante el prefijo QName ns1.
| También se define un espacio de nombres predeterminado ("http://mastsample.org"), que se aplica a
| shipTo, name y billTo.
| CONTAINS(myxmlcol, '@xmlxp:'' declare default namespace "http://mastsample.org";
| declare namespace ns1 = "http://posample.org"; /ns1:purchaseOrder[shipTo/name = "Jane"
| and billTo/name = "Jason"]''')
| Restringir la búsqueda al atributo name (definido explícitamente en el espacio de nombres
| "http://posample.org") del elemento shipTo (del espacio de nombres predeterminado
| "http://mastsample.org"), que es un elemento hijo del elemento purchaseOrder (definido explícitamente
| en el espacio de nombres "http://posample.org"). El espacio de nombres predeterminado
| "http://mastsample.org" se aplica a los elementos shipTo, billTo y name.
| CONTAINS(myxmlcol, '@xmlxp:'' declare default namespace "http://mastsample.org";
| declare namespace ns1 = "http://posample.org"; /ns1:purchaseOrder/shipTo[@ns1:name =
| "Jane" and billTo/name = "Jason"]''')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ejemplo de búsqueda XML
v Cree una tabla XML_DOCUMENTS en el esquema XMLTEST para almacenar los documentos XML:
CREATE TABLE XMLTEST.XML_DOCUMENTS (ID INT, XML_DATA XML, PRIMARY KEY (ID));
v Cree un índice de búsqueda de texto denominado XML_INDEX sobre la columna XML:
call SYSPROC.SYSTS_CREATE('XMLTEST', 'XML_INDEX', 'XMLTEST.XML_DOCUMENTS(XML_DATA)', '');
v Inserte algunos documentos XML:
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
VALUES(1,
'<BOOK publication_date="2009-01-01">' ||
' <TITLE> OmniFind Text Search Server for DB2 </TITLE>' ||
' <ID_NUMBER> 1 ></ID_NUMBER>' ||
' <CHAPTER>' ||
' <NUMBER> 1 </NUMBER>' ||
' <TITLE> Introducción </TITLE>' ||
' <ABSTRACT> Este capítulo presentará al lector las prestaciones de OmniFind
for DB2 for IBM i </ABSTRACT>' ||
' </CHAPTER>'||
' <CHAPTER>' ||
' <NUMBER> 2 </NUMBER>' ||
' <TITLE> Crear un índice de búsqueda de texto </TITLE>' ||
' <ABSTRACT> Este capítulo describirá cómo crear un índice de búsqueda de texto </ABSTRACT>' ||
' </CHAPTER>' ||
'</BOOK>');
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
VALUES(2,
'<BOOK publication_date="2010-02-01">' ||
' <TITLE> Utilizar el tipo de datos XML para DB2 for IBM i </TITLE>' ||
' <ID_NUMBER> 2 ></ID_NUMBER>' ||
' <CHAPTER>' ||
' <NUMBER> 1 </NUMBER>' ||
' <TITLE> Introducción </TITLE>' ||
' <ABSTRACT> Este capítulo presentará al lector el tipo de datos XML de DB2 </ABSTRACT>' ||
' </CHAPTER> ' ||
' <CHAPTER>' ||
'
<NUMBER> 2 </NUMBER>' ||
'
<TITLE> Insertar datos XML en una tabla de DB2 </TITLE>' ||
'
<ABSTRACT> Este capítulo describirá cómo insertar datos XML en una tabla de DB2 </ABSTRACT>' ||
' </CHAPTER>' ||
' <CHAPTER>' ||
'
<NUMBER> 3 </NUMBER>' ||
'
<TITLE> Buscar datos XML </TITLE>' ||
OmniFind Text Search Server
55
|
'
<ABSTRACT> Este capítulo describirá cómo consultar datos de columnas XML
mediante las UDFS CONTAINS y SCORE </ABSTRACT>' ||
|
' </CHAPTER>' ||
|
'</BOOK>');
|
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
|
VALUES(3,
|
'<BOOK xmlns="http://www.ibm.com/digital_media_library"' ||
|
'
publication_date="2010-02-01">' ||
|
' <TITLE> Utilizar espacios de nombres con OmniFind Text Search Server for DB2 for IBM i </TITLE>' ||
|
' <ID_NUMBER> 2 </ID_NUMBER>' ||
|
' <CHAPTER>' ||
|
' <NUMBER> 1 </NUMBER>' ||
|
' <TITLE> Introducción </TITLE>' ||
|
' <ABSTRACT> Este capítulo presentará al lector los espacios de nombres XML </ABSTRACT>' ||
|
' </CHAPTER>' ||
|
' <CHAPTER>' ||
|
' <NUMBER> 2 </NUMBER>' ||
|
' <TITLE> Utilizar espacios de nombres predeterminados </TITLE>' ||
|
' <ABSTRACT> Este capítulo describirá cómo utilizar un espacio de nombres en una búsqueda XML </ABSTRACT>' ||
|
' </CHAPTER>' ||
|
'</BOOK>');
|
| v Actualice el índice:
CALL SYSPROC.SYSTS_UPDATE('XMLTEST', 'XML_INDEX', '');
|
| Consultas de ejemplo
| Ejemplo 1:
|
|
|
|
|
Buscar todos los documentos que tienen un elemento raíz BOOK con un descendiente directo TITLE que
contiene DB2.
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''/BOOK/TITLE[. contains("DB2")]'' ') = 1;
| Dado que no se ha especificado un prólogo de espacio de nombres en el término de búsqueda, no se
| tiene en cuenta ningún espacio de nombres para la búsqueda.
|
Tabla 15. Resultado
|
ID
|
1
|
2
|
|
3
| Ejemplo 2:
|
|
|
|
|
|
|
|
Buscar todos los documentos que tienen un elemento raíz BOOK con un descendiente directo TITLE que
contiene DB2. Utilizar un espacio de nombres de elemento predeterminado para indicar que BOOK y TITLE
deben estar en el espacio de nombres "http://www.ibm.com/digital_media_library”.
|
Tabla 16. Resultado
|
ID
|
3
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace
"http://www.ibm.com/digital_media_library";
/BOOK/TITLE[. contains("DB2")]'' ') = 1;
56
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Ejemplo 3:
| Buscar todos los documentos que tienen un elemento raíz BOOK que tiene un atributo publication_date
| posterior a "2010-01-01" y un elemento hijo TITLE que contiene DB2. Restringir la búsqueda para que los
| códigos BOOK y TITLE no deban existir en ningún espacio de nombres.
| SELECT ID
| FROM XMLTEST.XML_DOCUMENTS
| WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace "";
| /BOOK[@publication_date > xs:date("2010-01-01")]/TITLE[. contains("DB2")]'' ') = 1;
|
Tabla 17. Resultado
|
ID
|
|
2
|
Ejemplo 4:
| Buscar todos los documentos con un elemento raíz BOOK (que no esté en ningún espacio de nombres) que
| tengan un descendiente directo CHAPTER (tampoco en un espacio de nombres) que contenga información
| acerca de la inserción de datos en una tabla XML.
| SELECT ID
| FROM XMLTEST.XML_DOCUMENTS
| WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace "";
| /BOOK/CHAPTER[. contains("insertar datos XML en una tabla")]'' ') = 1;
|
Nota:
v El texto contenido en CHAPTER incluye el texto contenido en los elementos ABSTRACT y TITLE que
son descendientes de CHAPTER.
v La serie de búsqueda no distingue entre mayúsculas y minúsculas y se tienen en cuenta las
variantes lingüísticas de las palabras de búsqueda.
|
|
|
|
|
Tabla 18. Resultado
|
ID
|
|
2
|
Ejemplo 5:
| Buscar todos los documentos con un elemento raíz BOOK (en el espacio de nombres “http://www.ibm.com/
| digital_media_library”) que tengan un descendiente directo CHAPTER (también en el espacio de nombres
| “http://www.ibm.com/digital_media_library”). CHAPTER debe tener un descendiente directo NUMBER (en el
| espacio de nombres “http://www.ibm.com/digital_media_library") con el valor 1, y también contener
| información de texto acerca de la búsqueda en un espacio de nombres XML.
| SELECT ID
| FROM XMLTEST.XML_DOCUMENTS
| WHERE CONTAINS(XML_DATA, '@xmlxp:''declare namespace ns1 = "http://www.ibm.com/digital_media_library";
| /ns1:BOOK/ns1:CHAPTER[. contains("búsqueda XML mediante un espacio de nombres") and NUMBER = 1]'' ') = 1;
|
|
El documento #3 es el único con códigos en el espacio de nombres correcto, pero sólo tiene coincidencias
de palabras clave en un capítulo con el valor de número 2 (no 1).
|
No se devuelve ninguna fila.
OmniFind Text Search Server
57
|
Tabla 19. Resultado
|
ID
|
|
| Ejemplo 6:
|
|
|
|
|
|
|
|
|
|
Buscar todos los documentos con un elemento raíz BOOK (en el espacio de nombres “http://www.ibm.com/
digital_media_library”) que tengan un descendiente directo CHAPTER (en el espacio de nombres
“http://www.ibm.com/digital_media_library”). CHAPTER debe tener un descendiente directo NUMBER (en el
espacio de nombres “http://www.ibm.com/digital_media_library”) con el valor 1. BOOK debe tener un
descendiente CHAPTER (no necesariamente con un descendiente NUMBER) que contenga información de texto
acerca de la búsqueda en un espacio de nombres XML.
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare namespace ns1 = "http://www.ibm.com/digital_media_library";
/ns1:BOOK[ns1:CHAPTER contains("búsqueda XML mediante un espacio de nombres")]/ns1:CHAPTER[ns1:NUMBER = 1]'' ') = 1;
| El documento 3 tiene un elemento CHAPTER que coincide con los criterios de CONTAINS, y también un
| elemento CHAPTER con un descendienteNUMBER que tiene el valor 1. Por tanto, el documento 3 coincide con
| esta consulta.
|
Tabla 20. Resultado
|
ID
|
|
|
3
Referencia relacionada
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
“SYSPROC.SYSTS_UPDATE” en la página 34
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
que indica si se ha encontrado una coincidencia.
|
|
|
|
|
|
|
|
|
|
|
|
| Ejemplo de búsqueda XML
| Este ejemplo incluye una tabla de documentos XML, un índice de búsqueda de texto sobre una columna
| XML de la tabla y seis búsquedas de texto SQL que utilizan CONTAINS.
|
|
|
|
|
|
|
|
|
|
Nota: Al utilizar los ejemplos de código, acepta los términos del apartado “Información sobre licencia de
código y exención de responsabilidad” en la página 109.
v Cree una tabla XML_DOCUMENTS en el esquema XMLTEST para almacenar los documentos XML:
CREATE TABLE XMLTEST.XML_DOCUMENTS (ID INT, XML_DATA XML, PRIMARY KEY (ID));
v Cree un índice de búsqueda de texto denominado XML_INDEX sobre la columna XML:
call SYSPROC.SYSTS_CREATE('XMLTEST', 'XML_INDEX', 'XMLTEST.XML_DOCUMENTS(XML_DATA)', '');
v Inserte algunos documentos XML:
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
VALUES(1,
'<BOOK publication_date="2009-01-01">' ||
58
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
' <TITLE> OmniFind Text Search Server for DB2 </TITLE>' ||
' <ID_NUMBER> 1 ></ID_NUMBER>' ||
' <CHAPTER>' ||
' <NUMBER> 1 </NUMBER>' ||
' <TITLE> Introducción </TITLE>' ||
' <ABSTRACT> Este capítulo presentará al lector las prestaciones de OmniFind
for DB2 for IBM i </ABSTRACT>' ||
' </CHAPTER>'||
' <CHAPTER>' ||
' <NUMBER> 2 </NUMBER>' ||
' <TITLE> Crear un índice de búsqueda de texto </TITLE>' ||
' <ABSTRACT> Este capítulo describirá cómo crear un índice de búsqueda de texto </ABSTRACT>' ||
' </CHAPTER>' ||
'</BOOK>');
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
VALUES(2,
'<BOOK publication_date="2010-02-01">' ||
' <TITLE> Utilizar el tipo de datos XML para DB2 for IBM i </TITLE>' ||
' <ID_NUMBER> 2 ></ID_NUMBER>' ||
' <CHAPTER>' ||
' <NUMBER> 1 </NUMBER>' ||
' <TITLE> Introducción </TITLE>' ||
' <ABSTRACT> Este capítulo presentará al lector el tipo de datos XML de DB2 </ABSTRACT>' ||
' </CHAPTER> ' ||
' <CHAPTER>' ||
'
<NUMBER> 2 </NUMBER>' ||
'
<TITLE> Insertar datos XML en una tabla de DB2 </TITLE>' ||
'
<ABSTRACT> Este capítulo describirá cómo insertar datos XML en una tabla de DB2 </ABSTRACT>' ||
' </CHAPTER>' ||
' <CHAPTER>' ||
'
<NUMBER> 3 </NUMBER>' ||
'
<TITLE> Buscar datos XML </TITLE>' ||
'
<ABSTRACT> Este capítulo describirá cómo consultar datos de columnas XML
mediante las UDFS CONTAINS y SCORE </ABSTRACT>' ||
' </CHAPTER>' ||
'</BOOK>');
INSERT INTO XMLTEST.XML_DOCUMENTS (ID, XML_DATA)
VALUES(3,
'<BOOK xmlns="http://www.ibm.com/digital_media_library"' ||
'
publication_date="2010-02-01">' ||
' <TITLE> Utilizar espacios de nombres con OmniFind Text Search Server for DB2 for IBM i </TITLE>' ||
' <ID_NUMBER> 2 </ID_NUMBER>' ||
' <CHAPTER>' ||
' <NUMBER> 1 </NUMBER>' ||
' <TITLE> Introducción </TITLE>' ||
' <ABSTRACT> Este capítulo presentará al lector los espacios de nombres XML </ABSTRACT>' ||
' </CHAPTER>' ||
' <CHAPTER>' ||
' <NUMBER> 2 </NUMBER>' ||
' <TITLE> Utilizar espacios de nombres predeterminados </TITLE>' ||
' <ABSTRACT> Este capítulo describirá cómo utilizar un espacio de nombres en una búsqueda XML </ABSTRACT>' ||
' </CHAPTER>' ||
'</BOOK>');
v Actualice el índice:
CALL SYSPROC.SYSTS_UPDATE('XMLTEST', 'XML_INDEX', '');
|
Consultas de ejemplo
|
Búsqueda 1:
| Buscar todos los documentos que tienen un elemento raíz BOOK con un descendiente directo TITLE que
| contiene DB2.
OmniFind Text Search Server
59
| SELECT ID
| FROM XMLTEST.XML_DOCUMENTS
| WHERE CONTAINS(XML_DATA, '@xmlxp:''/BOOK/TITLE[. contains("DB2")]'' ') = 1;
| Dado que no se ha especificado un prólogo de espacio de nombres en el término de búsqueda, no se
| tiene en cuenta ningún espacio de nombres para la búsqueda.
|
Tabla 21. Resultado
|
ID
|
1
|
2
|
|
3
| Búsqueda 2:
|
|
|
|
|
|
|
|
Buscar todos los documentos que tienen un elemento raíz BOOK con un descendiente directo TITLE que
contiene DB2. Utilizar un espacio de nombres de elemento predeterminado para indicar que BOOK y TITLE
deben estar en el espacio de nombres "http://www.ibm.com/digital_media_library”.
|
Tabla 22. Resultado
|
ID
|
|
3
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace
"http://www.ibm.com/digital_media_library";
/BOOK/TITLE[. contains("DB2")]'' ') = 1;
| Búsqueda 3:
|
|
|
|
|
|
|
Buscar todos los documentos que tienen un elemento raíz BOOK que tiene un atributo publication_date
posterior a "2010-01-01" y un elemento hijo TITLE que contiene DB2. Restringir la búsqueda para que los
códigos BOOK y TITLE no deban existir en ningún espacio de nombres.
|
Tabla 23. Resultado
|
ID
|
|
2
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace "";
/BOOK[@publication_date > xs:date("2010-01-01")]/TITLE[. contains("DB2")]'' ') = 1;
| Búsqueda 4:
|
|
|
|
|
|
|
Buscar todos los documentos con un elemento raíz BOOK (que no esté en ningún espacio de nombres) que
tengan un descendiente directo CHAPTER (tampoco en un espacio de nombres) que contenga información
acerca de la inserción de datos en una tabla XML.
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare default element namespace "";
/BOOK/CHAPTER[. contains("insertar datos XML en una tabla")]'' ') = 1;
| Nota:
60
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
v El texto contenido en CHAPTER incluye el texto contenido en los elementos ABSTRACT y TITLE que
son descendientes de CHAPTER.
v La serie de búsqueda no distingue entre mayúsculas y minúsculas y se tienen en cuenta las
variantes lingüísticas de las palabras de búsqueda.
|
|
|
|
|
Tabla 24. Resultado
|
ID
|
|
2
|
Búsqueda 5:
| Buscar todos los documentos con un elemento raíz BOOK (en el espacio de nombres “http://www.ibm.com/
| digital_media_library”) que tengan un descendiente directo CHAPTER (también en el espacio de nombres
| “http://www.ibm.com/digital_media_library”). CHAPTER debe tener un descendiente directo NUMBER (en el
| espacio de nombres “http://www.ibm.com/digital_media_library") con el valor 1, y también contener
| información de texto acerca de la búsqueda en un espacio de nombres XML.
| SELECT ID
| FROM XMLTEST.XML_DOCUMENTS
| WHERE CONTAINS(XML_DATA, '@xmlxp:''declare namespace ns1 = "http://www.ibm.com/digital_media_library";
| /ns1:BOOK/ns1:CHAPTER[. contains("búsqueda XML mediante un espacio de nombres") and NUMBER = 1]'' ') = 1;
|
|
El documento #3 es el único con códigos en el espacio de nombres correcto, pero sólo tiene coincidencias
de palabras clave en un capítulo con el valor de número 2 (no 1).
|
No se devuelve ninguna fila.
|
Tabla 25. Resultado
|
ID
|
|
|
Búsqueda 6:
|
|
|
|
|
|
|
|
|
|
Buscar todos los documentos con un elemento raíz BOOK (en el espacio de nombres “http://www.ibm.com/
digital_media_library”) que tengan un descendiente directo CHAPTER (en el espacio de nombres
“http://www.ibm.com/digital_media_library”). CHAPTER debe tener un descendiente directo NUMBER (en el
espacio de nombres “http://www.ibm.com/digital_media_library”) con el valor 1. BOOK debe tener un
descendiente CHAPTER (no necesariamente con un descendiente NUMBER) que contenga información de texto
acerca de la búsqueda en un espacio de nombres XML.
|
|
|
El documento 3 tiene un elemento CHAPTER que coincide con los criterios de CONTAINS, y también un
elemento CHAPTER con un descendienteNUMBER que tiene el valor 1. Por tanto, el documento 3 coincide con
esta consulta.
|
Tabla 26. Resultado
|
ID
|
|
3
SELECT ID
FROM XMLTEST.XML_DOCUMENTS
WHERE CONTAINS(XML_DATA, '@xmlxp:''declare namespace ns1 = "http://www.ibm.com/digital_media_library";
/ns1:BOOK[ns1:CHAPTER contains("búsqueda XML mediante un espacio de nombres")]/ns1:CHAPTER[ns1:NUMBER = 1]'' ') = 1;
OmniFind Text Search Server
61
|
|
|
|
Gramática de consultas de búsqueda XML
|
|
|
|
|
|
La gramática EBNF se ha simplificado en los siguientes aspectos:
v No permitiendo nombres de vía de acceso absoluta en expresiones de predicado.
v Reconociendo sólo un eje (código) y sólo hacia adelante.
v Aplicando restricciones semánticas adicionales al uso del carácter comodín (consulte la sección anterior
dedicada al soporte de comodines en las expresiones de vía de acceso, del apartado “Búsqueda XML”
en la página 47.
v Exigiendo la especificación de la declaración de espacio de nombres en la serie de búsqueda antes de
cualquier utilización, implícita o explícita, del espacio de nombres. Si no se incluye la declaración de
espacio de nombres, los espacios de nombres no se tienen en cuenta en la búsqueda.
v Las expresiones de vía de acceso relativa deben tener un nombre de atributo o código incluido en la
expresión. La consulta ‘/' para seleccionar el nodo raíz y ‘//' para seleccionar todos los nodos no son
expresiones válidas.
|
|
|
|
|
|
La gramática de la búsqueda XML se basa en un subconjunto del lenguaje XPath, definido por la
gramática EBNF (Extended Backus-Naur Form). El analizador de consultas rechazará las consultas que no
se ajusten a la gramática soportada.
| La tabla siguiente muestra la gramática soportada en la notación EBNF.
|
Tabla 27. Gramática de consultas soportada en la notación EBNF
|
Símbolo
Producción
|
|
XMLQuery ::=
QueryPrefix NameSpaceDeclaration QueryString
| QueryPrefix QueryString
|
QueryPrefix ::=
@xmlxp:
|
QueryString ::=
"'" PathExpr "'"
|
|
|
PathExpr ::=
RelativePathExpr
| "/" RelativePathExpr?
| "//" RelativePathExpr
|
RelativePathExpr ::=
StepExpr ( ( "/" | "//" ) StepExpr )*
|
StepExpr ::=
( "." | AbbrevForwardStep ) Predicate?
|
AbbrevForwardStep ::=
"@"? (QName | "*")
|
Predicate ::=
"[" PredicateExpr "]"
|
|
|
PredicateExpr ::=
Expr
| PredicateExpr ( "and" | "or" )
| "(" PredicateExpr ")"
|
Expr ::=
ComparisonExpr | ContainmentExpr
|
ComparisonExpr ::=
PathExpr ComparisonOp Literal
|
ComparisonOp ::=
"=" | "<" | ">" | "!=" | "<=" | ">="
|
Literal ::=
StringLiteral | NumericLiteral | DateLiteral
|
|
ContainmentExpr ::=
PathExpr "contains" "(" StringLiteral ")"
| PathExpr "excludes" "(" StringLiteral ")"
|
|
StringLiteral ::=
"\"" [^"]* "\""
| "'" [^']* "'"
|
|
DateLiteral ::=
"xs:date(\"" xmlDate "\")"
| "xs:dateTime(\"" xmlDateTime "\")"
|
xmlDate ::=
aaaa"-"mm"-"dd
|
xmlDateTime ::=
aaaa"-"mm"-"dd [T] hh":"mm":"ss"."uuuuuu
|
NameSpaceDeclaration ::=
defaultNameSpace (NameSpacePrefixDeclaration)*
62
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 27. Gramática de consultas soportada en la notación EBNF (continuación)
|
|
defaultNameSpace ::=
“declare default element namespace
“ StringLiteral “;”
|
|
NameSpacePrefixDeclaration ::=
“declare namespace”
StringLiteral “;”
|
|
NameSpacePrefix ::=
[^”:]+
NameSpacePrefix “=”
|
|
Administrar un OmniFind(r) Text Search Server for DB2(r) for i
|
|
Puede administrar OmniFind Text Search Server for DB2 for i mediante las siguientes técnicas y
herramientas.
|
Iniciar OmniFind Text Search Server for DB2 for i
|
|
Puede iniciar OmniFind Text Search Server for DB2 for i llamando al procedimiento
SYSPROC.SYSTS_START.
|
|
|
|
OMNIFIND inicia automáticamente el servidor de búsqueda de texto cuando es necesario, siempre y
cuando el valor de SERVERSTATUS de QSYS2.SYSTEXTSERVERS sea 0. Esta política permite iniciar
automáticamente el servidor de búsqueda de texto cuando se inicia el sistema host. Sin embargo, puede
iniciar el servidor manualmente si es necesario.
|
Para iniciar el servidor:
|
CALL SYSPROC.SYSTS_START(idservidor)
|
|
|
|
|
|
Si la llamada es satisfactoria, el valor de SERVERSTATUS de QSYS2.SYSTEXTSERVERS se establece en 0
después de llamar al procedimiento. Si el servidor es local, los trabajos siguientes estarán activos en
segundo plano:
v QJVAEXEC usuariox BCI 0.0 JVM-com.ibm.es
v QJVAEXEC usuariox BCI 0.0 PGM-OutsideInP
v QJVAEXEC usuariox BCI 0.0 PGM-OutsideInP
v QJVAEXEC usuariox BCI 0.0 PGM-OutsideInP
|
|
v QJVAEXEC usuariox BCI 0.0 PGM-OutsideInP
|
siendo usuariox el ID de usuario del administrador que ha llamado al procedimiento almacenado.
|
|
|
|
|
|
|
|
|
Puede que deban transcurrir unos minutos antes de que todos estos trabajos estén activos y el servidor
de texto pueda utilizarse.
Referencia relacionada
|
Detener OmniFind Text Search Server for DB2 for i
|
|
Puede detener OmniFind Text Search Server for DB2 for i manualmente mediante el script de conclusión
que se suministra.
“SYSPROC.SYSTS_START” en la página 15
Puede habilitar funciones de búsqueda de texto de DB2 llamando al procedimiento almacenado
SYSPROC.SYSTS_START.
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
OmniFind Text Search Server
63
|
|
|
|
Si ha instalado OmniFind Text Search Server for DB2 for i como servicio, el servidor de búsqueda de
texto se detiene automáticamente cada vez que se concluye el sistema host. Sin embargo, puede detener
el servidor manualmente aunque haya instalado OmniFind Text Search Server for DB2 for i como
servicio.
| Para detener OmniFind Text Search Server for DB2 for i:
| 1. Indique en el catálogo SYSTEXTSERVER que el servidor se detiene llamando a
|
SYSPROC.SYSTS_STOP.
|
v Para detener todos los servidores: CALL SYSPROC.SYSTS_STOP().
v Para detener un servidor específico:
a. Consulte el catálogo de servidores para obtener el idservidor que desea detener:
SELECT SERVERID,SERVERPORT,SERVERSTATUS,SERVERPATH
FROM QSYS2.SYSTEXTSERVERS
|
|
|
|
|
Nota: SERVERPATH identifica al servidor. SERVERSTATUS indica si el servidor está actualmente
|
activo (0) o inactivo (1).
|
b. Llame a SYSPROC.SYSTS_STOP, especificando el idservidor numérico o el nombre de alias del
|
servidor que desea detener.
|
CALL SYSPROC.SYSTS_STOP(idservidor).
| 2. (Opcional) Detenga el servidor en sí llamando al script de conclusión. Al detener el servidor, se
|
detienen todos los trabajos del servidor de búsqueda de texto del sistema host. Detenga el servidor en
|
el entorno Qshell.
|
|
|
|
|
Para concluir el servidor local, especifique el mandato siguiente en la línea de mandatos:
QSH CMD('cd /QOpenSys/QIBM/ProdData/TextSearch/server1/bin; shutdown.sh')
.
Si el servidor que debe concluirse no es el servidor local predeterminado creado por el proceso de
instalación, debe obtener el valor correcto de SERVERPATH de QSYS2.SYSTEXTSERVERS. Utilice ese
valor de SERVERPATH en lugar de /QOpenSys/QIBM/ProdData/TextSearch/server1/bin.
|
|
|
|
Si detiene el servidor mediante el script de conclusión, el catálogo SERVERSTATUS no cambia a
estado Inactivo (1). La próxima vez que se llame a los procedimientos almacenados SYSTS_CREATE,
SYSTS_UPDATE y SYSTS_DROP, o cuando se invoque una UDF CONTAINS o SCORE como parte de
una consulta SQL, el servidor se iniciará automáticamente.
|
|
|
|
|
Referencia relacionada
“SYSPROC.SYSTS_STOP” en la página 17
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_STOP para detener las funciones de
búsqueda de texto de DB2. Este procedimiento almacenado establece el valor SERVERSTATUS del
catálogo QSYS2.SYSTEXTSERVERS en 1 (detenido).
|
|
|
“Tabla de administración QSYS2.SYSTEXTSERVERS” en la página 104
Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
administración QSYS2.SYSTEXTSERVERS.
|
Salvar y restaurar índices de búsqueda de texto
| Puede salvar y restaurar los índices de búsqueda de texto con o sin datos.
| Salvar y restaurar un índice de búsqueda de texto sin datos
| Puede salvar y restaurar una estructura de índice de búsqueda de texto sin los datos de índice. El proceso
| de salvar y restaurar puede realizarse mediante los mandatos CL SAVOBJ y SAVLIB.
| Cuando se crea un índice de búsqueda de texto mediante SYSTS_CREATE, se crea una vista de DB2
| utilizando el esquema y el nombre del índice como nombre de la vista. La vista actúa como mecanismo
| para salvar y restaurar la estructura del índice.
64
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
El usuario puede salvar la vista mediante los mismos métodos utilizados para salvar tablas y vistas de
base de datos. (Consulte los mandatos CL SAVOBJ o SAVLIB). Al salvar la vista automáticamente, se
salva la información adicional necesaria para volver a crear el índice durante la restauración.
|
|
|
|
La vista puede restaurarse mediante los mandatos CL RSTOBJ o RSTLIB. DB2 for i reconoce que la vista
representa un índice de búsqueda de texto y vuelve a crear el índice. Una vez recreada la estructura del
índice, se someterá una actualización a un trabajo en segundo plano para volver a llenar los datos del
índice.
|
|
|
|
|
|
|
|
|
Durante el proceso de restauración deben tenerse en cuenta consideraciones adicionales:
1. Si el servidor de búsqueda de texto no puede iniciarse o un producto necesario no está instalado en el
sistema, la restauración fallará. Consulte los Requisitos de software para obtener una lista de los
productos necesarios.
2. Si el índice de búsqueda de texto existe en el sistema, se realizan las acciones siguientes.
a. Si la información de índice existente coincide exactamente con el índice que se restaura, la
restauración será satisfactoria. El índice no se reconstruye.
b. Si la información de índice existente no coincide con el índice que se restaura y no puede
modificarse para que coincida sin volver a crear el índice, la restauración fallará.
|
c. Si la información de índice existente no coincide con el índice que se restaura, pero puede
|
modificarse para que coincida mediante SYSTS_ALTER, el índice existente se modificará para que
|
coincida con el índice que se ha salvado. El índice no se reconstruye.
| 3. El índice se restaura para utilizar el mismo servidor de búsqueda de texto utilizado en el momento de
|
realizar la operación de salvar. Si el servidor utilizado cuando se realizó la operación de salvar no está
|
definido, se seleccionará un servidor disponible en ese momento. Si el servidor salvado está definido
|
pero no está disponible, la restauración fallará.
| 4. Si el índice de búsqueda de texto no puede crearse por alguna otra razón, como por ejemplo una
|
columna incompatible en la tabla base, la restauración fallará.
| 5. El nombre de la tabla intermedia en QSYS2, los nombres de desencadenantes que se añaden a la tabla
|
base y el nombre de colección en el servidor de búsqueda de texto pueden cambiar. Las
|
autorizaciones especiales otorgadas a estos objetos no se conservan.
| 6. Los sinónimos añadidos al diccionario de sinónimos del índice de búsqueda de texto no se conservan.
| 7. Si el índice existe en los catálogos del sistema durante la restauración y la vista no existe actualmente
|
en el sistema, sólo se restaura la vista. La tabla intermedia, la colección del servidor de búsqueda de
|
texto y los desencadenantes de la tabla base no se crean.
|
En este caso, se presupone que el índice de búsqueda de texto forma parte de una restauración mayor
|
en la que el usuario ha salvado explícitamente las partes individuales del índice, y ahora se restauran
|
todas ellas (como por ejemplo al restaurar todo el sistema).
|
|
Todas las partes necesarias del índice deben restaurarse para que funcione el índice. Es
responsabilidad del usuario asegurarse de que todas las partes del índice estén sincronizadas.
|
|
|
|
Los índices de búsqueda de texto están soportados por el mandato Restaurar objetos diferidos
(RSTDFROBJ). Es aconsejable utilizar el parámetro DFRID en los mandatos CL RSTOBJ y RSTLIB. Este
parámetro permite restaurar índices de búsqueda de texto mediante el mandato RSTDFROBJ después de
corregir condiciones habituales que impiden la creación del índice.
|
|
|
|
|
Son ejemplos de condiciones que provocan el diferimiento del índice:
v Un producto necesario que no está instalado.
v Un servidor de búsqueda de texto no está disponible o definido.
v La tabla base no existía.
Referencia relacionada
|
|
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
OmniFind Text Search Server
65
|
|
|
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
|
|
|
|
|
|
|
|
|
|
“SYSPROC.SYSTS_ALTER” en la página 28
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_ALTER para modificar los atributos de
un índice creado por SYSPROC.SYSTS_CREATE. Sólo se cambiarán los atributos especificados
explícitamente en este procedimiento. Todos los demás atributos del índice permanecerán sin cambios.
Información relacionada
Salvar objeto (SAVOBJ)
Salvar biblioteca (SAVLIB)
Restaurar objeto (RSTOBJ)
Restaurar biblioteca (RSTLIB)
Restaurar objetos diferidos (RSTDFROBJ)
| Salvar y restaurar un índice de búsqueda de texto con datos
| Salvar y restaurar un índice de búsqueda de texto con datos es una operación más compleja que hacerlo
| sin datos.
| Debe salvar los objetos siguientes:
| v El índice de búsqueda de texto (almacenado en el sistema de archivos integrado).
| v La tabla intermedia utilizada como archivo de registro que realiza el seguimiento de los cambios de
registro de la tabla base (sobre la cual se ha creado el índice). La tabla intermedia se encuentra en la
|
biblioteca QSYS2. Su nombre empieza por QDBTS, por ejemplo, QDBTS00001.
|
| v La vista, que es el objeto de base de datos que representa el índice de texto. La vista tiene el mismo
nombre que el índice de texto.
|
| v La tabla base a partir de la cual se ha construido el índice.
| v Los catálogos SQL que almacenan la información destinada a realizar el seguimiento del índice.
| Para salvar los índices de búsqueda de texto, siga estos pasos:
| 1. Recomendado: actualice los índices realizando primero operaciones de actualización (SYSTS_UPDATE)
para los índices de búsqueda de texto.
|
| 2. Salve la tabla base y la vista mediante técnicas de salvación estándar, como por ejemplo el mandato
SAVOBJ.
|
| 3. Salve las tablas intermedias que se encuentran en QSYS2 mediante técnicas de salvación estándar. Por
ejemplo, SAVOBJ LIB(QSYS2) OBJ(QDBTS*).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4. Salve los catálogos de índice de búsqueda de texto en QSYS2:
Todos los nombres de catálogo empiezan por SYSTXT, por ejemplo, SYSTXTSRVR. Al igual que los
demás catálogos SQL de QSYS2, es responsabilidad del usuario asegurarse de que se haya salvado y
esté disponible una copia de seguridad.
Esta copia de seguridad puede realizarse de dos maneras:
a. Puede salvarse toda la biblioteca como parte del mandato SAVLIB, especificando *ALLUSR o *IBM
en el parámetro LIB.
b. Pueden salvarse los catálogos de búsqueda de texto específicos mediante el mandato SAVOBJ,
especificando LIB(QSYS2) y OBJ((SYSTXT*)).
5. Salve la información del índice de búsqueda de texto en el sistema de archivos integrado. Esta
información incluye todo el contenido del directorio config bajo la vía de acceso del servidor de texto.
La vía de acceso del servidor de texto puede determinarse consultando la columna SERVERPATH del
catálogo SYSTXTSRVR del servidor en cuestión. La vía de acceso del servidor contiene un directorio
añadido al final, que debe sustituirse por el directorio config.
66
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Una técnica habitual de salvar es utilizar el mandato SAV, aunque funcionará cualquier tipo de
compresión de salvado.
|
Nota: Esta información de salvar sólo es aplicable a los servidores de texto ejecutados en IBM i.
|
Ejemplo:
|
|
|
Supongamos que desea salvar todos los índices de texto asociados con el servidor de texto
predeterminado creado por OMNIFIND. Tiene una tabla QGPL/MYDOCS con el índice de texto
QGPL/MYDOCIX construido a partir de ella. En este ejemplo, los soportes de salvar son archivos.
|
|
|
|
|
|
|
|
|
Siga estos pasos:
1. Salve todas las tablas intermedias y los catálogos de OMNIFIND de QSYS2:
SAVOBJ OBJ(QDBTS* SYSTXT*) LIB(QSYS2) DEV(*SAVF) SAVF(QGPL/SAVFQSYS2)
2. Salve la tabla base y la vista:
SAVOBJ OBJ(MYDOCS MYDOCIX) LIB(QGPL) DEV(*SAVF) SAVF(QGPL/SAVFMYFILE)
3. Mediante SQL, obtenga el nombre de vía de acceso del servidor de texto. En este ejemplo, serverid =
2:
SELECT SERVERPATH FROM systxtsrvr WHERE serverid=2
El valor de SERVERPATH devuelto es /QOpenSys/QIBM/ProdData/TextSearch/server1/bin/.
|
Nota: Compruebe que está consultando el servidor correcto.
| 4. Especifique config en lugar de bin/ y salve los índices de texto:
|
|
SAV DEV('/QSYS.LIB/QGPL.LIB/SAVIFS.FILE') OBJ(('/QOpenSys/QIBM/ProdData/TextSearch/server1/
config'))
| Los índices de texto se salvarán ahora en los archivos de salvar QGPL/SAVFMYFILE, QGPL/SAVFQSYS2
| y QGPL/SAVIFS.
| La operación de restaurar los índices de texto debe realizarse en el mismo orden que la operación de
| salvar. Los catálogos de QSYS2 DEBEN restaurarse en primer lugar.
|
Referencia relacionada
|
“SYSPROC.SYSTS_UPDATE” en la página 34
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
|
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
|
Información relacionada
Salvar objeto (SAVOBJ)
|
Salvar biblioteca (SAVLIB)
|
Determinación de problemas
|
|
Puede utilizar los mensajes del sistema y de rastreo registrados para determinar el origen de los
problemas que puedan surgir.
|
|
|
El registro del servidor OmniFind Text Search Server for DB2 for i se encuentra en el directorio
<DIRECTORIO_INICIAL_INSTALACIÓN>/log. El servidor predeterminado creado durante la instalación se
encuentra en el directorio /QOpenSys/QIBM/ProdData/TextSearch/server1/log.
| Por omisión, el registro cronológico de rastreo está desactivado, y el nivel de registro del sistema está
| establecido en informativo. Puede utilizar la herramienta de configuración para cambiar las opciones de
| rastreo y nivel de registro.
OmniFind Text Search Server
67
| Los archivos de registro del servidor se rotan por tamaño. Se almacenan las cinco copias más recientes de
| los archivos de registro del servidor que no superan los 8 MB. Puede visualizar y guardar los registros
| del servidor mediante el script que se suministra.
| En IBM i o en un servidor Linux, el script es logformatter.sh. En un servidor Windows, el script es
| logformatter.bat.
| Opciones
| El script tiene las opciones siguientes.
| -f logfile
Especifica el archivo de registro del servidor que desea formatear.
|
| -l locale
Especifica el entorno local que debe utilizarse al grabar los mensajes reformateados. Por ejemplo,
|
especifique en_US para el inglés o ja_JP para el japonés. Este valor es opcional. El valor
|
predeterminado es en_US.
|
| -o outputfile
Especifica el archivo de salida en el que deben grabarse los mensajes de registro reformateados
|
mediante la codificación UTF-8. Este valor es opcional. Si no especifica esta opción, se utilizará un
|
archivo de salida estándar.
|
| -? Imprime el mensaje de ayuda. Este valor es opcional.
| -v Especifica la modalidad de visualización de los mensajes de depuración. Este valor es opcional.
|
Visualizar y guardar registros del servidor
| Puede utilizar los scripts que se suministran para visualizar y guardar los registros del servidor. Estos
| registros pueden ayudar a determinar el origen de los problemas.
| Para visualizar y guardar un registro del servidor:
| 1. Para visualizar el registro del servidor, ejecute uno de los mandatos siguientes:
||
Opción
Descripción
|
|
En IBM i (dentro del entorno QSH)
bin/logformatter.sh -f
log/System.0.log
|
|
En un servidor Linux
bin/logformatter.sh -f
log/System.0.log
bin/logformatter.bat -f
| En un servidor Windows
log/System.0.log
|
|
| 2. Para guardar el registro del servidor en un archivo para poder leerlo en un editor de archivos, ejecute
uno de los mandatos siguientes:
|
||
Opción
Descripción
|
|
|
En IBM i (dentro del entorno QSH)
bin/logformatter.sh
-f log/System.0.log
–o <nombre de archivo de salida>
|
|
|
En un servidor Linux
bin/logformatter.sh
-f log/System.0.log
–o <nombre de archivo de salida>
|
|
|
|
En un servidor Windows
bin/logformatter.bat
-f log/System.0.log
–o <nombre de archivo de salida>
68
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Herramientas de administración
|
|
|
OMNIFIND suministra herramientas que pueden utilizarse para tareas habituales. Estas tareas incluyen la
configuración y administración de un servidor de búsqueda de texto adicional y la adición de un
diccionario de sinónimos a una colección.
|
|
Estas herramientas son scripts de shell en lugar de mandatos CL. Pueden invocarse dentro del entorno de
scripts que se inicia mediante los mandatos CL Iniciar QSH (STRQSH) o QSH (QSH).
|
|
|
|
|
Estas herramientas no autentican ID de usuario. Sin embargo, sólo un usuario que tenga acceso válido al
servidor de búsqueda de texto puede ejecutarlas.
Información relacionada
Iniciar QSH (STRQSH)
Iniciar QSH (QSH)
|
|
|
Herramienta de configuración
|
|
Para personalizar la mayoría de los valores de configuración, es necesario detener el servidor de
búsqueda de texto antes de ejecutar la herramienta de configuración.
|
Sin embargo, mientras el servidor está en ejecución puede visualizar las opciones siguientes:
v la señal de autenticación actual
|
|
|
|
La herramienta de configuración se utiliza para personalizar valores de configuración después de instalar
OmniFind Text Search Server for DB2 for i.
v el puerto del servidor
v las propiedades actuales del sistema
La herramienta configServerAndDB2
| La herramienta configServerAndDB2 (configServerAndDB2.sh) se encuentra en el directorio del sistema
| de archivos integrado /QOpenSys/QIBM/ProdData/TextSearch. Esta herramienta puede utilizarse para crear
| o modificar entradas del archivo de catálogo de DB2 SYSTEXTSERVERS.
| También puede utilizarse para configurar la señal de autenticación o el número de puerto asociados con
| un servidor específico. La herramienta modifica o establece los valores de SERVERAUTHTOKEN y
| SERVERPORT en el archivo de catálogo de DB2 SYSTEXTSERVERS.
| Si desea crear un servidor adicional que se ejecute localmente en el sistema, utilice la “Herramienta
| ServerInstance” en la página 79.
|
|
|
|
|
|
|
|
|
|
|
La
1.
2.
3.
herramienta configServerAndDB2 (configServerAndDB2.sh) se invoca con cinco parámetros:
El primer parámetro es generateToken o configureHTTPListener.
El segundo parámetro es -serverPath.
El tercer parámetro es la vía de acceso al nodo raíz del sistema de archivos integrado donde se
almacena la información relacionada con el servidor. Ejemplo: /QOpenSys/QIBM/ProdData/TextSearch/
server2.
4. El cuarto y quinto parámetros varían en función del valor del primer parámetro.
v Si el primer parámetro es generateToken, el cuarto parámetro es -seed seguido de un entero (por
ejemplo, 1) como quinto parámetro.
v Si el primer parámetro es configureHTTPListener, el cuarto parámetro es -adminHTTPPort. El
quinto parámetro es un valor entero que se utiliza como puerto de socket del servidor.
| A continuación se muestran dos ejemplos:
OmniFind Text Search Server
69
| v STRQSH
|
cd /QOpenSys/QIBM/ProdData/TextSearch
|
configServerAndDB2.sh generateToken -serverPath /QOpenSys/QIBM/ProdData/TextSearch/server2 -seed 1
| v STRQSH
cd /QOpenSys/QIBM/ProdData/TextSearch
|
configServerAndDB2.sh configureHTTPListener -serverPath /QOpenSys/QIBM/ProdData/TextSearch/server2
|
-adminHTTPPort 9997
|
| El script configTool
| El script configTool.sh está disponible para cada servidor local. No es aconsejable utilizarlo para
| modificar entradas de servidor. Puede utilizarlo para imprimir la información del servidor (como, por
| ejemplo, printAll y printToken).
|
Tabla 28. Mandatos de ejecución de la herramienta de configuración
|
En IBM i:
|
|
|
|
|
configTool.sh
<opción_mandato_obligatoria>
<argumentos_globales_obligatorios>
<argumentos_globales_opcionales>
<opciones_mandato_opcionales>
|
En un servidor Linux
|
|
|
|
|
configTool.sh
<opción_mandato_obligatoria>
<argumentos_globales_obligatorios>
<argumentos_globales_opcionales>
<opciones_mandato_opcionales>
|
En un servidor Windows
|
|
|
|
|
|
configTool.bat
<opción_mandato_obligatoria>
<argumentos_globales_obligatorios>
<argumentos_globales_opcionales>
<opciones_mandato_opcionales>
| Opciones de mandato
| La herramienta de configuración admite las siguientes opciones de mandato:
| configureParams
Especifica los parámetros del sistema que puede configurar. Puede configurar los parámetros
|
siguientes:
|
|
|
|
-configPath
Especifica la vía de acceso absoluta a la carpeta de configuración que contiene el archivo
config.xml.
|
|
|
-adminHTTPPort
Especifica el número de puerto HTTP de administración. Si se produce un error, se devuelve el
código de error -3.
|
|
-logPath
Especifica la vía de acceso absoluta al directorio de registros.
|
|
-temDirPath
Especifica la vía de acceso absoluta al directorio temporal.
|
|
-numberOfIndexers
Especifica el número de subsistemas de indexación de búsqueda de texto simultáneos.
70
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
-numberOfTokenizers
Especifica el número de subsistemas simultáneos utilizados para analizar la entrada a fin de
generar señales.
|
|
|
-maxDocumentSize
Especifica el número máximo de caracteres que deben indexarse para un documento. Si se
produce un error, se devuelve el código de error -3.
|
|
|
-logLevel
Especifica el nivel de registro de los mensajes del sistema en el archivo de registro. El nivel
predeterminado es informativo. Las opciones adicionales son aviso y grave.
|
|
|
-maxHeapSize
Inicia y detiene el tamaño de almacenamiento dinámico en un formato aceptado por la máquina
virtual Java. Si se produce un error, se devuelve el código de error -5.
| printToken
|
Imprime la señal de autenticación y la clave de cifrado actuales.
| printAll
|
Imprime todos los valores actuales para las opciones que pueden configurarse con esta herramienta.
| printAdminHTTPPort
|
Imprime el valor actual del puerto HTTP de administración.
| generateToken
|
Genera la señal de autenticación.
|
Argumentos globales
|
|
|
-configPath
Especifica la vía de acceso absoluta a la carpeta de configuración que contiene el archivo config.xml.
Este argumento global es obligatorio.
|
|
|
-locale
Especifica el valor de entorno local de cinco caracteres para la escritura de mensajes en el archivo de
rastreo. Si no especifica este valor, se utilizará el valor predeterminado, -en_US.
|
Ejemplo
|
|
|
|
En un servidor Linux, especifique el mandato siguiente para imprimir la señal de autenticación actual:
|
|
SYSPROC.SYSTS_REMOVE
|
Autorización
|
|
El nombre de colección de los índices huérfanos posibles puede identificarse mediante la función de tabla
definida por usuario (UDTF) QDBTS_LISTINXSTS.
|
|
|
|
Los privilegios detentados por el ID de autorización de la sentencia deben incluir como mínimo uno de
los siguientes:
v Autoridad *JOBCTL
v Utilización de la función especial de seguridad QIBM_DB_SQLADM
configTool.sh printToken -configPath <vía_acceso> <argumentos_globales_opcionales>
Información relacionada
Iniciar QSH (QSH)
Puede eliminar índices huérfanos con el procedimiento almacenado SQL SYSPROC.SYSTS_REMOVE.
OmniFind Text Search Server
71
| Sintaxis
| >>-SYSPROC.SYSTS_REMOVE (nombre-colección) -><
| Parámetro
| nombre-colección
Especifica un literal de tipo serie que identifica el nombre de la colección que debe eliminarse.
|
| Nota: Este procedimiento utiliza el script de shell adminTool.sh para eliminar el directorio de colección.
Para utilizar este script de shell, el servidor debe encontrarse en funcionamiento. Si el servidor no
|
se ha iniciado, este procedimiento devolverá un mensaje de error.
|
| SQL para SYSTS_REMOVE
| CREATE PROCEDURE SYSPROC.SYSTS_REMOVE(
IN COLLECTIONNAME VARCHAR(255) CCSID 1208)
|
EXTERNAL NAME QDBTSLIB.DSN5RMCOLL
|
DYNAMIC RESULT SETS 0
|
LANGUAGE C++
|
PARAMETER STYLE SQL
|
PROGRAM TYPE MAIN
|
COMMIT ON RETURN NO
|
INHERIT SPECIAL REGISTERS;
|
| Ejemplos
| v Para eliminar un índice huérfano con el nombre de colección 0_65_2815_2008_06_02_11_58_22_901726
del grupo de ASP *SYSBASE, especifique el mandato siguiente en cualquier interfaz SQL:
|
CALL SYSPROC.SYSTS_REMOVE('0_65_2815_2008_06_02_11_58_22_901726')
|
El procedimiento almacenado SYSTS_REMOVE comprueba si la información de índice se encuentra en
|
la tabla de catálogo QSYS2.SYSTEXTINDEXES. Si es verdadero (true), se devuelve el mensaje de error
|
DSX_INDEX_EXIST; si no es así, el procedimiento busca en el directorio config/collections del
|
servidor 65.
|
Si la colección no existe, se devolverá el mensaje de error DSX_COLLECTION_NOT_FOUND; si la
|
colección existe, el procedimiento llamará a adminTool.sh para eliminar la colección.
|
A continuación, el procedimiento comprobará de nuevo el directorio para ver si la colección se ha
|
eliminado. Si la colección no se ha eliminado, se devolverá al usuario el mensaje de error
|
DSX_REMOVE_COLLECTION_FAILED.
|
Nota: Cuando la colección del servidor de búsqueda de texto se encuentra en un grupo de ASP
|
independientes, la hebra que llama al procedimiento almacenado SYSTS_REMOVE debe
|
ejecutarse en el espacio de nombres de la ASP independiente. Utilice el mandato Establecer
|
grupo de agrupaciones de almacenamiento auxiliar (SETASPGRP).
|
| v Para eliminar un índice huérfano con el nombre de colección 33_7_26_2008_06_18_21_28_39_407824 de
la ASP independiente iaspXXX, puede utilizar los mandatos siguientes:
|
CL:
|
SETASPGRP(iaspXXX)
|
|
|
SQL:
CALL SYSPROC.SYSTS_REMOVE(' 33_7_26_2008_06_18_21_28_39_407824')
| Nota: Si utiliza System i Navigator, pulse con el botón derecho del ratón el nombre de base de datos de
la ASP independiente y ejecute los scripts SQL.
|
Referencia relacionada
|
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
|
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
|
72
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
“Buscar índices huérfanos y ausentes” en la página 77
Puede buscar índices huérfanos y ausentes mediante una función de tabla definida por usuario
(UDTF) SQL denominada QDBTS_LISTINXSTS.
|
|
|
|
SYSPROC.SYSTS_REPRIMEINDEX
|
|
|
Si se restauran los datos de la tabla base, el contenido actualizado de la tabla base no puede indexarse
mientras se llama al procedimiento almacenado SYSTS_UPDATE. En este caso, puede llamarse al
procedimiento almacenado SYSPROC.SYSTS_REPRIMEINDEX para ajustar el índice.
|
|
Nota: Si se ha creado un diccionario de sinónimos para el índice de búsqueda de texto, este proceso
elimina el diccionario.
|
|
|
Sintaxis
|
El calificador de esquema es SYSPROC.
|
Parámetros
|
|
|
indexSchema
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
del registro especial CURRENT SCHEMA correspondiente al invocante.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Puede ajustar (reprime) el índice e iniciar una actualización inicial mediante el procedimiento almacenado
SYSPROC.SYSTS_REPRIMEINDEX. Utilice este procedimiento almacenado cuando desee restaurar datos
desde la tabla base.
>>-SYSPROC.SYSTS_REPRIMEINDEX(
indexSchema, indexName, options) -><
El tipo de datos de este parámetro es VARCHAR(128).
indexName
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
junto con el esquema del índice, identifica de forma exclusiva el índice de texto completo en el
subsistema DB2. Debe especificar un valor que no sea nulo para este parámetro.
El tipo de datos de este parámetro es VARCHAR(128).
options
Serie de caracteres que especifica opciones que pueden añadirse en el futuro a este procedimiento
almacenado.
Importante: Debe especificar un valor no nulo para el parámetro options. De lo contrario, pueden
generarse errores. Observe el ejemplo siguiente para saber cómo especificar el parámetro
opciones.
SQL para SYSTS_REPRIMEINDEX
CREATE PROCEDURE SYSPROC.SYSTS_REPRIMEINDEX(
IN INDEXSCHEMA VARCHAR(128) CCSID 1208,
IN INDEXNAME VARCHAR(128) CCSID 1208,
IN OPTIONS VARCHAR(32000) CCSID 1208)
EXTERNAL NAME QDBTSLIB.DSN5RPMIDX
DYNAMIC RESULT SETS 0
LANGUAGE C
PARAMETER STYLE SQL
MODIFIES SQL DATA
PROGRAM TYPE MAIN
COMMIT ON RETURN NO
INHERIT SPECIAL REGISTERS
OmniFind Text Search Server
73
| Ejemplo
| v Para ajustar (reprime) un índice desde cualquier interfaz SQL, especifique el mandato siguiente desde
cualquier interfaz de SQL:
|
CALL SYSPROC.SYSTS_REPRIMEINDEX('indexSchema1','indexName1','')
|
Referencia relacionada
|
“SYSPROC.SYSTS_UPDATE” en la página 34
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
|
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
| SYSPROC.SYSTS_VALIDITYCHECK
| Puede comprobar la validez de elementos de índice mediante el procedimiento almacenado SQL
| SYSPROC.SYSTS_VALIDITYCHECK.
| Sintaxis
| Este procedimiento almacenado puede arreglar algunos elementos que no son válidos si se especifica el
| parámetro autoFix.
| >>-SYSPROC.SYSTS_VALIDITYCHECK (indexSchema, indexName, autoFix) -><
| El calificador de esquema es SYSPROC.
| Parámetros
| indexSchema
Identifica el esquema del índice de búsqueda de texto. Si este parámetro es nulo, se utiliza el valor
|
del registro especial CURRENT SCHEMA correspondiente al invocante.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| indexName
Identifica el nombre del índice de búsqueda de texto. El nombre del índice de búsqueda de texto,
|
junto con el esquema del índice, identifica de forma exclusiva el índice de texto completo en el
|
subsistema DB2. Debe especificar un valor que no sea nulo para este parámetro.
|
El tipo de datos de este parámetro es VARCHAR(128).
|
| autoFix
Identifica si es necesario un arreglo automático. El valor de este parámetro sólo puede ser 0 o 1. Los
|
significados de estos valores son los siguientes:
|
|
0
Sólo se comprueba la validez del índice.
|
1
Se comprueba la validez del índice y se arreglan los elementos que no son válidos.
|
Nota:
Si se especifican valores que no son 0 o 1, se consideran 0.
|
El tipo de datos de este parámetro es INTEGER.
|
| Restricciones: si tanto indexSchema como indexName se especifican como *NONE, el procedimiento
| almacenado sólo comprueba la validez de los componentes comunes del producto.
| SQL para SYSTS_VALIDITYCHECK
| CREATE PROCEDURE SYSPROC.SYSTS_VALIDITYCHECK
(IN INDEXSCHEMA VARCHAR(128) CCSID 1208,
|
IN INDEXNAME VARCHAR(128) CCSID 1208,
|
IN AUTOFIX INTEGER)
|
EXTERNAL NAME QDBTSLIB.DSN5VALCHK
|
74
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
DYNAMIC RESULT SETS 0
LANGUAGE C
PARAMETER STYLE SQL
MODIFIES SQL DATA
PROGRAM TYPE MAIN
COMMIT ON RETURN NO
INHERIT SPECIAL REGISTERS
|
|
|
|
|
|
Ejemplos
|
|
Diccionarios de sinónimos
|
Puede añadir un diccionario de sinónimos a una colección en cualquier momento.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Un diccionario de sinónimos consta de grupos de sinónimos que el usuario define en un archivo XML.
Por ejemplo:
|
Añadir un diccionario de sinónimos a una colección:
|
Utilice la herramienta de sinónimos para añadir un diccionario de sinónimos a una colección específica.
|
|
|
La especificación de los grupos de sinónimos en un diccionario de sinónimos mejora la calidad de los
resultados de búsqueda de texto. El administrador de OMNIFIND tiene la autoridad y los privilegios
adecuados para ejecutar la herramienta de sinónimos.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Para añadir un diccionario de sinónimos a una colección, siga estos pasos:
1. Cree un archivo XML de sinónimos especificando los grupos de sinónimos, como se muestra en el
ejemplo siguiente:
v Para comprobar la validez de un índice, especifique el mandato siguiente desde cualquier interfaz de
SQL:
CALL SYSPROC.SYSTS_VALIDITYCHECK('indexSchema1','indexName1',0)
v Para comprobar y arreglar un índice automáticamente:
CALL SYSPROC.SYSTS_VALIDITYCHECK('indexSchema1','indexName1',1)
Un diccionario de sinónimos puede mejorar la calidad de los resultados de búsqueda.
<?xml version="1.0" encoding="UTF-8"?>
<synonymgroups version="1.0">
<synonymgroup>
<synonym>Paixão</synonym>
<synonym>amor</synonym>
<synonym>flor</synonym>
<synonym>linda</synonym>
</synonymgroup>
<synonymgroup>
<synonym>worldwide patent tracking system</synonym>
<synonym>wpts</synonym>
</synonymgroup>
</synonymgroups>
<?xml version="1.0" encoding="UTF-8"?>
<synonymgroups version="1.0">
<synonymgroup>
<synonym>Paixão</synonym>
<synonym>amor</synonym>
<synonym>flor</synonym>
<synonym>linda</synonym>
</synonymgroup>
<synonymgroup>
<synonym>worldwide patent tracking system</synonym>
<synonym>wpts</synonym>
</synonymgroup>
</synonymgroups>
OmniFind Text Search Server
75
| 2. Copie el archivo XML de sinónimos en el servidor de búsqueda de texto.
| 3. Utilice la herramienta de sinónimos para añadir el diccionario de sinónimos a una colección.
|
Puede añadir un diccionario de sinónimos en modalidad de adición o en modalidad de sustitución.
|
Si añade un diccionario de sinónimos en modalidad de adición, los sinónimos nuevos se añadirán al
|
diccionario de sinónimos existente. Si añade un diccionario de sinónimos en modalidad de
|
sustitución, los sinónimos existentes se sustituirán por los sinónimos nuevos que ha definido para el
|
índice de búsqueda de texto.
||
Opción
Descripción
|
|
|
|
|
|
|
En IBM i, especifique el mandato siguiente (dentro de
la interfaz QSH):
synonymTool.sh importSynonym
-synonymFile <vía de acceso absoluta al archivo
XML de sinónimos>
-collectionName <nombre de colección>
-replace <[true|false]>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
|
|
|
|
|
|
|
En un servidor Linux, especifique el mandato siguiente: synonymTool.sh importSynonym
-synonymFile <vía de acceso absoluta al archivo
XML de sinónimos>
-collectionName <nombre de colección>
-replace <[true|false]>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
|
|
|
|
|
|
|
|
|
En un servidor Windows, especifique el mandato
siguiente:
|
Eliminar un diccionario de sinónimos de una colección:
|
Utilice el script que se suministra para eliminar un diccionario de sinónimos de una colección.
|
|
El administrador de OMNIFIND debe recuperar el nombre de la colección de la que debe eliminarse el
diccionario de sinónimos.
|
Ejecute el script para eliminar un diccionario de sinónimos de una colección.
||
Opción
Descripción
|
|
|
|
En IBM i, especifique el mandato siguiente (dentro de
la interfaz QSH):
removeSynonym.sh
-collectionName <nombre de colección>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
|
|
|
|
En un servidor Linux, especifique el mandato siguiente: removeSynonym.sh
-collectionName <nombre de colección>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
|
|
|
|
|
En un servidor Windows, especifique el mandato
siguiente:
synonymTool.bat importSynonym
-synonymFile <vía de acceso absoluta al archivo
XML de sinónimos>
-collectionName <nombre de colección>
-replace <[true|false]>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
Si el formato del archivo XML no es válido o si está vacío, se devolverá un código de error.
removeSynonym.bat
-collectionName <nombre de colección>
-configPath <vía de acceso absoluta a
la carpeta de configuración>
| Si una base de datos tiene varios índices de búsqueda de texto, debe realizar esta tarea para cada una de
| las colecciones correspondientes.
76
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Buscar índices huérfanos y ausentes
|
|
Puede buscar índices huérfanos y ausentes mediante una función de tabla definida por usuario (UDTF)
SQL denominada QDBTS_LISTINXSTS.
|
|
Un índice puede quedar huérfano si se llama a un procedimiento almacenado SYSTS_DROP y el servidor
se detiene en el momento de ejecutar el procedimiento.
|
|
|
|
La función QDBTS_LISTINXSTS combina todos los índices de catálogo y colecciones del sistema de
archivos integrado del espacio de nombres actual en una sola tabla. La función decide qué agrupación de
almacenamiento auxiliar (ASP) independiente o *SYSBASE se establece. A continuación, explora el
directorio de colección de cada servidor de la ASP independiente o de *SYSBASE.
|
|
|
|
|
Para *SYSBASE, se comprueba cada uno de los directorios de servidor que se encuentran bajo
/QOpenSys/QIBM/ProdData/TextSearch. Para las ASP independientes, se comprueba cada uno de los
directorios de servidor que se encuentran bajo /el número de ASP/QOpenSys/QIBM/ProdData/TextSearch.
Por ejemplo, si el número de ASP independiente es 67, se comprueba cada uno de los directorios de
servidor situados bajo /67/QOpenSys/QIBM/ProdData/TextSearch.
|
|
|
|
Para la información de índice de catálogo, los datos se obtienen de la tabla de catálogo
QSYS2.SYSTEXTINDEXES. Si desea comprobar los servidores de una ASP independiente, emita el
mandato Establecer grupo de agrupaciones de almacenamiento auxiliar (SETASPGRP) antes de llamar a
esta función.
|
|
|
Si desea eliminar posibles índices huérfanos del sistema de archivos integrado una vez identificados,
utilice el procedimiento almacenado SYSPROC.SYSTS_REMOVE o la herramienta “Administración
avanzada” en la página 78 (adminTool.sh).
|
Términos
|
|
|
Índice huérfano
Existe una colección (índice) en el directorio del sistema de archivos integrado del servidor, pero
no hay ningún índice correspondiente registrado en el catálogo QSYS2.SYSTEXTINDEXES.
|
|
|
Índice ausente
Existen índices de registro en el catálogo QSYS2.SYSTEXTINDEXES, pero no existe el directorio
de colección correspondiente.
|
Sintaxis
|
>>-QDBTS_LISTINXSTS(--null--)---><
|
Formato de retorno
|
|
La función QDBTS_LISTINXSTS devuelve la información de los índices detectados en una tabla. Consulte
el mandato SQL siguiente, utilizado para crear la UDTF.
|
|
|
|
|
|
|
|
|
SQL para LISTINXSTS UDTF
CREATE FUNCTION QDBTSLIB.QDBTS_LISTINXSTS()
RETURNS TABLE(COLLECTIONNAME VARCHAR(255),
INDEXID INTEGER,
INDEXSCHEMA VARCHAR(128),
INDEXNAME VARCHAR(128),
SERVERID INTEGER)
SPECIFIC qdbts_listinxsts
SCRATCHPAD
OmniFind Text Search Server
77
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NO FINAL CALL
LANGUAGE C++
PARAMETER STYLE DB2SQL
EXTERNAL NAME 'QDBTSLIB/QDBTSSP(checkIndex)';
Ejemplos
v Detectar todos los índices huérfanos:
SELECT COLLECTIONNAME, SERVERID
FROM TABLE(QDBTSLIB.QDBTS_LISTINXSTS()) AS T
WHERE T.INDEXSCHEMA IS NULL AND T.INDEXNAME IS NULL
v Detectar todos los índices ausentes:
SELECT INDEXSCHEMA, INDEXNAME
FROM TABLE(QDBTSLIB. QDBTS_LISTINXSTS()) AS T
WHERE T.COLLECTIONNAME is NULL
v Detectar los índices huérfanos en serverid = 2 de la ASP independiente iaspXXX:
CONNECT TO iaspXXX
SQL:
SELECT T.COLLECTIONNAME, S.SERVERPATH
FROM TABLE(QDBTSLIB.QDBTS_LISTINXSTS())
AS T LEFT OUTER JOIN QSYS2.SYSTEXTSERVERS S ON (T.SERVERID = S.SERVERID)
WHERE T.INDEXSCHMEA IS NULL AND T.INDEXNAME IS NULL AND T.SERVERID = 2
Referencia relacionada
“SYSPROC.SYSTS_DROP” en la página 33
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_DROP para eliminar un índice de
búsqueda de texto definido mediante el procedimiento almacenado SYSPROC.SYSTS_CREATE.
“SYSPROC.SYSTS_REMOVE” en la página 71
Puede eliminar índices huérfanos con el procedimiento almacenado SQL SYSPROC.SYSTS_REMOVE.
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
| Administración avanzada
| Puede utilizar la herramienta de administración para la administración avanzada.
| OmniFind Text Search Server for DB2 for i puede estar en ejecución cuando se utiliza la herramienta de
| administración.
|
|
|
|
|
|
Puede utilizar la herramienta de administración para realizar las tareas siguientes:
v Comprobar el estado de las colecciones, como por ejemplo averiguar cuántos documentos están
presentes
v Suprimir colecciones huérfanas
v Notificar la versión del servidor
v Notificar todas las colecciones que se encuentran en el servidor de búsqueda de texto
| Mandatos
| El mandato emitido para ejecutar la herramienta de administración dependerá del sistema operativo en el
| que esté instalado el servidor de búsqueda de texto. El mandato también depende de la tarea que se
| desea realizar.
78
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 29. Mandatos destinados a comprobar el estado de las colecciones y a suprimir colecciones huérfanas
|
|
En IBM i (dentro de la interfaz
QSH)
|
|
|
|
|
adminTool.sh -[delete|status]
adminTool.sh -[delete|status]
adminTool.bat -[delete|status]
–collectionName <nombre de colección>
–collectionName <nombre de colección>
–collectionName <nombre de colección>
-configPath <vía de acceso absoluta -configPath
a
<vía de acceso absoluta -configPath
a
<vía de acceso absoluta a
la carpeta de configuración>
la carpeta de configuración>
la carpeta de configuración>
|
Tabla 30. Mandatos destinados a visualizar la versión del servidor y a notificar todas las colecciones
|
|
En IBM i (dentro de la interfaz
QSH)
|
|
|
|
adminTool.sh -[version]
adminTool.sh -[version|reportAll] adminTool.bat -[version|reportAll]
-configPath <vía de acceso absoluta -configPath
a
<vía de acceso absoluta -configPath
a
<vía de acceso absoluta a
la carpeta de configuración>
la carpeta de configuración>
la carpeta de configuración>
|
Opciones
|
|
status
Comprueba el estado de la colección.
|
|
delete
Especifica que el usuario desea suprimir la colección huérfana.
|
|
version
Visualiza la versión del servidor.
|
|
reportAll
Notifica todas las colecciones que se encuentran en el servidor de búsqueda de texto.
|
Ejemplo
|
|
Para averiguar la versión del servidor, especifique el mandato siguiente en un servidor Linux:
|
Si utiliza un servidor Windows, se le suministrará un script .bat correspondiente.
|
Herramienta ServerInstance
|
|
|
|
Puede utilizar la herramienta ServerInstance para crear o suprimir servidores de *SYSBASE o de una
agrupación de almacenamiento auxiliar (ASP) independiente. También puede utilizar la herramienta
ServerInstance para enlazar archivos de un servidor con el servidor en el que está instalado OmniFind
Text Search Server for DB2 for i.
|
|
Por omisión, OmniFind Text Search Server for DB2 for i se instala en el directorio /QOpenSys/QIBM/
ProdData/TextSearch/server1.
|
|
|
|
|
Puede utilizar la herramienta ServerInstance para realizar las tareas siguientes antes de utilizarla para
detener server1 en *SYSBASE:
v Crear un servidor en *SYSBASE o en ASP independientes
v Suprimir un servidor de *SYSBASE o de ASP independientes
v Enlazar archivos de un servidor con server1
En un servidor Linux
En un servidor Linux
En un servidor Windows
En un servidor Windows
adminTool.sh –version -s <vía de acceso absoluta al archivo config.xml del servidor>
OmniFind Text Search Server
79
|
|
|
|
|
Sintaxis
ServerInstance.sh –[create|delete|relink]
–servernum <número_servidor>
(-port <puerto>)
(-device <nombre_dispositivo>)
| Opciones de mandato
| create
Crea un servidor.
|
| delete
Suprime un servidor.
|
| relink
Enlaza archivos de un servidor con server1.
|
Nota: Esta opción no es necesaria una vez instalado el arreglo temporal de programa (PTF) SI31548
en el sistema. El sistema procesa automáticamente la operación de enlace si tiene instalado este
PTF.
|
|
|
| Parámetros
| número_servidor
Especifica el número de servidor. Por ejemplo, si se crea un servidor con el número 3, el directorio
|
del servidor será /QOpenSys/QIBM/ProdData/TextSearch/server3.
|
| puerto
Especifica el puerto del servidor. Este parámetro sólo es necesario al crear un servidor.
|
| dispositivo
Especifica el nombre de la ASP independiente. Este parámetro sólo es necesario cuando la operación
|
se realiza en la ASP independiente.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ejemplos
|
Consideraciones relativas a las ASP independientes para OmniFind
Text Search Server for DB2 for i
|
v Para crear un servidor con el número de servidor 2 y el número de puerto 50000 en *SYSBASE:
ServerInstance.sh -create -servernum 2 -port 50000
v Para crear un servidor con el número de servidor 3 y el número de puerto 50001 en la ASP
independiente iasp1:
ServerInstance.sh -create -servernum 3 -port 50001 -device iasp1
v Para suprimir un servidor con el número de servidor 2 de *SYSBASE:
ServerInstance.sh -delete -servernum 2
v Para suprimir un servidor con el número de servidor 3 de la ASP independiente iasp1:
ServerInstance.sh -delete -servernum 3 -device iasp1
v Para enlazar archivos de un servidor con el número de servidor 2 de *SYSBASE:
ServerInstance.sh -relink -servernum 2
v Para enlazar archivos de un servidor con el número de servidor 3 de la ASP independiente iasp1:
ServerInstance.sh -relink -servernum 3 -device iasp1
| Puede administrar un índice de búsqueda de texto en una agrupación de almacenamiento auxiliar (ASP)
| independiente. La ASP puede conmutarse entre varios sistemas, por lo que existen consideraciones
| adicionales.
80
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
Durante la instalación de OMNIFIND, se crea un servidor de búsqueda de texto local. En el caso de las
ASP independientes, un administrador crea un servidor de texto local mediante la herramienta
ServerInstance (ServerInstance.sh) una vez creado el grupo de ASP independientes.
|
|
|
|
Después de crear un servidor de búsqueda de texto local en la ASP independiente, los datos de índice
existen en el sistema de archivos de la ASP independiente. Los datos están disponibles si la ASP
independiente se conmuta a otro sistema. El administrador sólo necesita crear un servidor de búsqueda
de texto local una vez para cada grupo de ASP independientes.
|
|
|
|
Los índices de búsqueda de texto que se encuentran en la ASP independiente deben estar contenidos en
servidores de búsqueda de texto definidos en la ASP independiente. No es posible visualizar un servidor
de búsqueda de texto definido en otro grupo de ASP independientes o en la ASP del sistema cuando el
trabajo está conectado a la ASP independiente.
|
|
|
|
|
|
|
|
|
|
Para crear un servidor de búsqueda de texto en una ASP independiente denominada miiasp, siga estos
pasos:
1. Active la ASP independiente con el mandato CL Trabajar con estado de configuración (WRKCFGSTS)
o mediante System i Navigator.
2. Conéctese al espacio de nombres del grupo de ASP independientes mediante el mandato CL
Establecer grupo de agrupaciones auxiliares (SETASPGRP).
3. Utilice el script ServerInstance.sh para crear un servidor de búsqueda de texto.
A continuación figura un ejemplo del mandato QSH que debe utilizarse:
|
|
|
En el mandato, nnnnn es un número de puerto disponible para el servidor. Este número de puerto
debe estar disponible en todos los sistemas a los que el grupo de ASP independientes pueda
conmutarse.
|
|
|
|
Una vez definido un servidor de búsqueda de texto para el grupo de ASP independientes, pueden
utilizarse los procedimientos almacenados administrativos para iniciar y detener el servidor de búsqueda
de texto. Los procedimientos almacenados también pueden utilizarse para crear, eliminar y actualizar
índices de búsqueda de texto.
|
|
|
|
Nota: Cuando se activa la ASP independiente, se añaden entradas de planificador de trabajos para los
índices con actualizaciones planificadas existentes en la ASP independiente. Las entradas del
planificador de trabajos permiten continuar con las actualizaciones planificadas aunque la ASP
independiente se conmute entre sistemas.
/QOpenSys/QIBM/ProdData/TextSearch/ServerInstance.sh -create
-servernum 2 -port nnnnn -device miiasp
| Restricciones de utilización de índices de búsqueda de texto y ASP
| independientes
| v Todos los sistemas a los que la ASP independiente puede conmutarse deben tener instalado OmniFind
Text Search Server for DB2 for i y estar al mismo nivel de arreglo temporal de programa (PTF).
|
| v No cree índices de búsqueda de texto en una ASP que no sea aquella sobre la que se ha creado el
índice de tabla.
|
| v Los catálogos de sistema SYSTEXTSERVERS, SYSTEXTINDEXES, SYSTEXTDEFAULTS,
SYSTEXTCOLUMNS y SYSTEXTCONFIGURATION no contienen registros para índices y servidores
|
definidos en un grupo de ASP diferente, incluida la ASP del sistema. Los catálogos contienen sólo filas
|
para índices y servidores definidos para el grupo de ASP independientes al que el trabajo está
|
conectado.
|
| v Los procedimientos almacenados administrativos sólo pueden utilizarse para realizar funciones en
servidores de búsqueda de texto e índices definidos en el grupo de ASP independientes al que el
|
trabajo está conectado.
|
OmniFind Text Search Server
81
| Nota: Puede utilizar las sentencias SQL CONTAINS y SCORE cuando un trabajo esté conectado a un
|
grupo de ASP independientes, aunque la columna esté basada en una tabla existente en la ASP del
|
sistema.
|
Alta disponibilidad
| Puede implementar una solución de alta disponibilidad que incluya índices de búsqueda de texto
| utilizando API y mandatos existentes. Ahora, DB2 for IBM i reconoce los índices de búsqueda de texto y
| realiza acciones especiales durante las operaciones de DB2 que afectan a dichos índices.
| Consideraciones especiales relativas a índices de búsqueda de texto, alta disponibilidad y
| administración de bases de datos
| v Un mandato de supresión de archivo (mandato CL DLTF) o una sentencia SQL DROP VIEW ejecutados
con respecto a la vista que representa el índice de búsqueda de texto provoca la eliminación del
|
mismo. La eliminación falla si se ejecuta bajo control de compromiso.
|
| v Al restaurar una tabla o archivo físico que se ha salvado con un índice de búsqueda de texto a partir
de una columna no habilita los desencadenantes creados para el índice de búsqueda de texto antes de
|
la operación de salvar. Si más adelante se restaura o crea el índice de búsqueda de texto, los
|
desencadenantes se añaden como parte de la creación del índice. Este método permite que las
|
aplicaciones funcionen aunque el índice de búsqueda de texto construido originariamente a partir de la
|
tabla no se restaure o cree.
|
| Reproducción de entradas de diario para procedimientos almacenados administrativos de OmniFind
| v La reproducción de la entrada de diario (API QDBRPLAY) para la creación de la vista que representa el
índice de búsqueda de texto provoca la creación del índice de búsqueda de texto.
|
| v La adición y eliminación de los desencadenantes en la tabla base durante las llamadas a los
procedimientos SYSTS_CREATE o SYSTS_DROP no provoca el registro de entradas de diario.
|
| v Una llamada al procedimiento almacenado SYSTS_UPDATE o SYSTS_REPRIMEINDEX da como
resultado el registro de una entrada de diario con respecto a la vista del índice de búsqueda de texto.
|
Una repetición de esta entrada de diario mediante la API QDBRPLAY provoca la repetición de la
|
llamada al procedimiento correcto.
|
| v Las actualizaciones planificadas automáticamente NO dan como resultado entradas de diario para el
índice y no pueden reproducirse.
|
| v Una llamada a SYSTS_ALTER provoca un cambio de entrada de diario en la vista. Una repetición de la
entrada de diario mediante la API QDBRPLAY provoca la repetición de la llamada a SYSTS_ALTER.
|
| Recomendaciones con respecto a la alta disponibilidad
| Si desea implementar una solución de alta disponibilidad, tenga en cuenta las siguientes
| recomendaciones:
| v Después de crear el índice de búsqueda de texto en el sistema primario, puede utilizarse la API
QDBRPLAY para repetir la creación en el sistema de copia de seguridad.
|
| v El sistema de copia de seguridad contiene ahora un índice duplicado, con actualizaciones planificadas
que se producen con la misma frecuencia que en el sistema primario.
|
| v A medida que los cambios de registro se reproducen en los sistemas de copia de seguridad basados en
la tabla, se registran en la tabla intermedia del sistema de copia de seguridad.
|
|
|
|
|
|
|
|
v Las llamadas a SYSTS_UPDATE, SYSTS_REPRIMEINDEX y SYSTS_ALTER en el sistema primario
generan entradas de diario que pueden reproducirse en el sistema de copia de seguridad.
v NO es necesario que los clientes registren por diario y repliquen los archivos IFS para los índices de
búsqueda de texto.
v Es necesario asegurarse de que los desencadenantes que se han añadido como parte de
SYSTS_CREATE estén habilitados para registrar los cambios en la tabla base. Estos desencadenantes
pueden identificarse mediante el prefijo especial "QDBTS" en el nombre del desencadenante.
82
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Mandato CL Aplicar cambios de diario (APYJRNCHG)
|
|
|
|
Puede utilizarse el mandato CL Aplicar cambios de diario (APYJRNCHG) para reproducir sucesos de
OmniFind. Los usuarios que deseen utilizar este mandato deben considerar cuidadosamente el orden en
que se reproducen las entradas de diario. La tabla intermedia de QSYS2 debe sincronizarse exactamente
con la tabla base en el momento de reproducir o invocar SYSTS_UPDATE.
|
|
|
|
Los cambios de registro que se aplican a la tabla base NO se registran en la tabla intermedia durante el
proceso de APYJRNCHG. En algunos casos puede ser necesario llamar al procedimiento almacenado
SYSTS_REPRIMEINDEX para reconstruir el índice después de utilizar este mandato.
Referencia relacionada
|
|
|
|
“SYSPROC.SYSTS_REPRIMEINDEX” en la página 73
Puede ajustar (reprime) el índice e iniciar una actualización inicial mediante el procedimiento
almacenado SYSPROC.SYSTS_REPRIMEINDEX. Utilice este procedimiento almacenado cuando desee
restaurar datos desde la tabla base.
|
Análisis del rendimiento
|
|
El análisis de rendimiento de OMNIFIND incluye la elección de la definición de índice correcta, el
manejo eficiente de los documentos y la especificación de una búsqueda selectiva.
|
Segundo plano
|
|
|
El proceso de OmniFind es una combinación de tareas en un trabajo 'cliente' de componente frontal y de
tareas en un trabajo 'servidor' de segundo plano, que se intercomunican. La comunicación se realiza
mediante conexiones de socket estándar.
|
|
|
|
|
|
|
El trabajo cliente lee los registros de la tabla de base de datos adecuada durante las construcciones y el
mantenimiento del índice. Procesa el registro de los cambios de tabla, envía los documentos para el
proceso y maneja las solicitudes de búsqueda de texto mediante las funciones SQL CONTAINS o SCORE.
El trabajo cliente es aquel en el que se ejecuta el procedimiento, por ejemplo SYSTS_CREATE o
SYSTS_UPDATE, o la consulta con CONTAINS o SCORE. El rendimiento del trabajo cliente depende de
la rapidez de proceso de las acciones de base de datos y la recuperación y transporte eficientes de
documentos de texto al trabajo servidor.
|
|
|
|
|
|
El trabajo servidor analiza los documentos enviados desde el trabajo cliente, mantiene el índice de texto
asociado con las inserciones y supresiones y maneja las solicitudes de búsqueda dentro del índice. El
rendimiento del trabajo servidor depende de su capacidad para comunicarse con los trabajos cliente y
para manejar los documentos de forma eficiente. Generalmente hay un único trabajo servidor que da
servicio a varios trabajos cliente. En consecuencia, el trabajo servidor es un trabajo multihebra para que
pueda manejar varios clientes.
|
|
|
|
|
|
El mantenimiento de un índice de texto no se realiza inmediatamente con los cambios realizados en la
tabla de base de datos subyacente. En lugar de ello, los cambios de registro de la tabla se registran
mediante una combinación de un desencadenante de base de datos y una tabla intermedia. La tabla
intermedia registra el tipo de actualización (inserción, actualización o supresión) junto con una indicación
de qué registro de la tabla de base de datos ha cambiado. En el archivo de registro no se captura el texto;
sólo la información que identifica el registro que ha cambiado.
|
|
Los cambios en los registros de la tabla no se reflejan en el índice de texto, y en consecuencia tampoco en
las búsquedas con CONTAINS o SCORE, hasta la próxima operación SYSTS_UPDATE satisfactoria.
|
|
|
Las actualizaciones de un índice de texto posteriores a la actualización inicial se denominan
actualizaciones incrementales. Estas actualizaciones añaden o suprimen documentos del índice de texto
en función de los cambios de registro efectuados en la tabla subyacente desde la última actualización.
OmniFind Text Search Server
83
| Los cambios realizados en la tabla base se registran en una tabla intermedia. En una actualización
| incremental, la tabla intermedia se utiliza para determinar qué registros de la tabla base han cambiado.
| Dichos registros se leen más adelante de la tabla base y su contenido actualizado se refleja en el índice.
|
|
|
|
|
La actualización inicial es un proceso más eficiente, por fila, que una actualización incremental. La tabla
base se procesa sin necesidad de procesar también la tabla intermedia. Por tanto, es una técnica
aconsejable de cara al rendimiento realizar la actualización inicial en el índice de texto después de llenar
inicialmente la tabla subyacente. Esta técnica minimiza el tiempo necesario para llenar el índice con los
documentos.
|
|
|
|
|
Una opción de configuración importante relacionada con el rendimiento es UPDATEAUTOCOMMIT. Este
valor define la frecuencia con la que el trabajo cliente de la base de datos interrumpe el proceso de
documentos. El cliente espera a que el trabajo servidor confirme que ha procesado todos los documentos
que se le han enviado actualmente. UPDATEAUTOCOMMIT se utiliza como método de punto de
comprobación para que la base de datos pueda establecer límites de trabajo finalizado.
|
|
|
|
|
Si la actualización del índice se interrumpe y prosigue más adelante, el proceso se reinicia en el límite del
punto de comprobación. Al igual que en cualquier interrupción, un límite de punto de comprobación
obliga a la suspensión del flujo de documentos y a la eliminación de la interconexión entre el cliente y el
servidor. Este proceso de inicio y detención puede tener un efecto negativo considerable sobre el
rendimiento.
|
|
|
|
El valor predeterminado de UPDATEAUTOCOMMIT es 100, que proporciona puntos de comprobación
frecuentes. Si se establece en un valor superior, generalmente se produce un rendimiento de tiempo de
respuesta mejor para las llamadas a SYSTS_UPDATE. Sin embargo, un valor superior no implica un
tiempo de recuperación mayor si la actualización se cancela y se reinicia.
|
|
|
|
El establecimiento de UPDATEAUTOCOMMIT es un número superior (o en cero, que significa que no se
producirán puntos de comprobación) proporciona el mejor rendimiento de tiempo de respuesta. Sin
embargo, si se cancela la actualización inicial, OmniFind debe reiniciarse desde el principio del índice
construido, debido a que no existe ningún punto de comprobación.
| Para algunos clientes, un valor entre 5000 y 20000 ofrece un equilibrio razonable entre el rendimiento y la
| recuperabilidad de puntos de comprobación.
| Elegir la definición de índice correcta
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Un índice de texto puede especificarse en cuatro tipos de configuración FORMAT: TEXT, HTML, XML e
INSO.
1. TEXT es generalmente el formato más eficiente. El texto se lee del registro de base de datos y se envía
al servidor de texto, que lo procesa directamente.
2. HTML se utiliza cuando se sabe que los documentos se encuentran en el formato de HyperText
Markup Language. El texto se procesa ignorando los valores de control de marcación del documento.
3. XML se utiliza cuando se sabe que los documentos se encuentran en el formato de Extensible Markup
Language. Se toma en especial consideración la naturaleza estructural del contenido de los
documentos, con seguimiento de elementos, atributos y la jerarquía interna del documento. La
marcación de un índice como XML ofrece la posibilidad de realizar búsquedas XML mediante el
lenguaje de búsqueda xmlxp (xpath) en las funciones CONTAINS y SCORE.
4. INSO se utiliza cuando el documento debe procesarse al revés (INSide Out). En este formato, se
presupone que el contenido de cada documento es más que texto simple. Cada documento se
preanaliza para determinar de qué tipo de documento se trata. Los documentos INSO son
generalmente documentos de tratamiento de texto enriquecido generados por programas de
tratamiento de texto.
84
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
Desde la perspectiva del rendimiento, el trabajo para indexar un documento aumenta al pasar del
formato TEXT al formato INSO. Aunque el formato INSO maneja texto simple, genera más carga global
que el formato TEXT, ya que tiene lugar un proceso de interpretación. Utilice TEXT cuando el documento
sea de texto simple en la columna de base de datos.
|
|
|
|
La opción de configuración LANGUAGE no es estrictamente necesaria, ya que OmniFind determina el
lenguaje del documento en función de la exploración. Sin embargo, si se conoce el lenguaje de los
documentos, el hecho de especificarlo en la opción LANGUAGE puede mejorar el rendimiento. Esto
limitará el volumen de interpretación que debe realizarse.
|
Manejar documentos de forma eficiente
|
|
|
|
Los trabajos cliente y servidor comunican la información del documento mediante UTF (Unicode
Transformation Format). Para convertir el documento a este formato, el cliente lo lee de la base de datos
y convierte los datos resultantes a UTF-8, también denominado CCSID 1208. Todos el texto se convierte a
UTF-8 antes de enviarlo al servidor.
|
|
Para mejorar el rendimiento, establezca la columna de texto que se indexa en el CCSID 1208 para evitar
esta conversión, mejorando con ello la eficiencia del proceso de manejo de documentos.
|
Especificar una búsqueda selectiva
|
|
|
|
|
Las búsquedas de texto se realizan mediante las funciones CONTAINS o SCORE dentro de una sentencia
de consulta SQL. Estas búsquedas comparan los criterios de búsqueda de la función con los documentos
asociados con la columna en la que se busca. Los registros coincidentes se identifican y seleccionan. El
trabajo cliente envía la solicitud de búsqueda al servidor y recibe la respuesta con respecto a si se ha
encontrado una coincidencia.
|
|
|
|
|
Al igual que en todos los criterios de búsqueda, cuanto más selectiva sea la búsqueda, más eficiente
resultará. La búsqueda de frases habituales, como por ejemplo el artículo 'the' en el idioma inglés,
produce numerosas coincidencias y puede afectar negativamente al rendimiento. En la práctica, es
improbable que una búsqueda de este tipo proporcione información significativa. La especificación de
frases de búsqueda más selectivas producirá menos coincidencias más significativas.
|
|
|
|
|
|
Generalmente, la utilización de CONTAINS en la cláusula WHERE de una sentencia SQL ofrece un mejor
rendimiento que utilizar AND para otros criterios. Por ejemplo:
|
Utilizar CONTAINS y SCORE
|
|
|
|
|
El optimizador puede mejorar el rendimiento de las funciones CONTAINS y SCORE combinando
internamente y sustituyendo estas UDF por una función de tabla definido por el usuario (UDTF). La
UDTF devuelve una lista de documentos coincidentes en un resultado. En muchos casos, este proceso de
UDTF ofrece un mejor rendimiento que el proceso alternativo consistente en invocar la UDF para cada
registro para determinar si existe una coincidencia.
|
|
|
|
Para habilitar el optimizador para realizar la reescritura de la UDTF, la función CONTAINS debe:
v residir en la cláusula WHERE de la sentencia SQL
v ser aislable (aplicarse AND) en cualquier otro predicado de la cláusula WHERE
v ser equivalente al valor 1.
|
Por ejemplo, la cláusula:
SELECT bn, pubdate, description
FROM myBooks
WHERE CONTAINS(description,'Alladin') = 1
AND Pubdate > '2004-01-01'
OmniFind Text Search Server
85
| WHERE CONTAINS(MyDocuments, 'java performance') = 1
| podría reescribirse mediante el optimizador en el formato de UDTF. Sin embargo, la cláusula:
| WHERE CONTAINS(MyDocuments, 'java performance') = 1 OR price >100
| no podría reescribirse debido a que se aplica OR a CONTAINS para otros predicados.
| Nota: cuando se habilita una reescritura de UDTF, el optimizador sigue utilizando la comparación de
coste para elegir el plan óptimo.
|
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve un resultado
|
que indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento de búsqueda. La función devuelve una puntuación
|
de relevancia que mide hasta que punto un documento coincide con la consulta.
|
“SYSPROC.SYSTS_UPDATE” en la página 34
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_UPDATE para actualizar el índice de
|
búsqueda de texto a fin de reflejar el contenido actual de la columna de texto.
|
“SYSPROC.SYSTS_CREATE” en la página 19
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
|
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
|
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
|
SQL que contengan las funciones CONTAINS o SCORE.
|
|
Consideraciones relativas a las transacciones
| Tenga en cuenta el entorno al decidir la frecuencia con la que va a actualizar los índices de texto a partir
| de los datos subyacentes de las tablas de base de datos.
|
|
|
|
|
|
|
Una consideración de amplio espectro para los usuarios de bases de datos tradicionales es el concepto de
límites de transacción y proceso de transacción. Un ejemplo clásico de ello es una transacción bancaria, en
la que se transfiere dinero de una cuenta a otra. La transferencia se considera una única transacción,
independientemente de que se realice o no. El cliente no deseará que el dinero se elimine de una cuenta
sin que aparezca en la otra hasta transcurrido algún tiempo. A su vez, el banco no desea que el dinero
aparezca en ambas cuentas durante algún tiempo hasta que la transacción se haya completado. La idea es
que, si se realiza un cambio, éste se refleje inmediatamente.
|
|
|
|
|
En gestión de la información existen muchos ejemplos en los que los retardos son más aceptables e
incluso esperados. En un diseño de depósito de datos tradicional, el contenido del depósito de datos
carece con frecuencia de los datos operativos durante horas, o incluso más tiempo. Esta aceptación del
retardo se basa en una combinación de expectativas realistas de un depósito de datos y el deseo de contar
con datos coherentes y previsibles.
|
|
|
|
|
|
|
Las búsquedas de texto no estructurado se sitúan en algún punto entre estos extremos. En la práctica, la
indexación de documentos de texto es un proceso intensivo consistente en analizar y dividir el
significado subyacente de las palabras del documento. Las búsquedas de texto permiten que una
búsqueda de ‘mice' (ratones, en inglés) encuentre los documentos que contienen ‘mouse' (ratón, en
inglés). Este resultado de búsqueda se produce debido a la capacidad de la técnica de indexación para
separar las palabras en sus significados subyacentes. Este análisis se realiza en el momento de indexar un
documento para que las búsquedas subsiguientes sean lo más rápidas posible.
86
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
Los usuarios de índices de bases de datos tradicionales esperan que el índice refleje el estado de los datos
en la tabla de base de datos. Esta expectativa no se cumple en el caso de un índice de texto. El contenido
del índice de texto refleja el estado de la tabla en función del momento en que se realizó la última
actualización (SYSTS_UPDATE).
|
|
|
|
|
En un entorno altamente cambiante, es improbable que el índice de texto refleje el estado actual de la
tabla en un momento dado. Sin embargo, en un entorno más previsible, en el que la tabla de base de
datos se actualice con menor frecuencia o se realice en modalidad de proceso por lotes, las
actualizaciones del índice de texto pueden temporizarse para que se realicen después de la actualización
de la tabla, reflejando exactamente el estado de ésta.
|
|
|
|
Es importante que las expectativas con respecto a un índice de texto sean adecuadas. Utilice la opción
UPDATE FREQUENCY en los procedimientos “SYSPROC.SYSTS_CREATE” en la página 19 o
“SYSPROC.SYSTS_UPDATE” en la página 34 del índice de texto o llame explícitamente al procedimiento
SYSTS_UPDATE para actualizar adecuadamente el contenido del índice de texto.
|
|
|
|
|
Para entornos más estáticos, como por ejemplo cargas de datos masivas, es aconsejable temporizar la
actualización del índice de texto para que se produzca una vez realizada la carga masiva. En entornos
más orientados a transacciones, puede establecerse el valor UPDATE FREQUENCY en una duración más
corta o invocarse con frecuencia el procedimiento SYSTS_UPDATE. Normalmente, cuanto mayor es la
frecuencia de actualización, mayor es la carga de trabajo a la que se somete la máquina.
|
|
|
|
|
Referencia relacionada
“Tabla de administración QSYS2.SYSTEXTINDEXES” en la página 101
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de
administración QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un
nombre de esquema y un nombre de colección asociada en el servidor de búsqueda de texto.
|
Utilizar IBM Systems Director Navigator for i
|
|
|
Puede administrar los servidores de búsqueda de texto e índices de búsqueda de texto de OmniFind
mediante IBM Systems Director Navigator.
1. En la ventana de IBM Systems Director Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Seleccione Búsqueda de texto de OmniFind.
OmniFind Text Search Server
87
|
|
| Trabajar con servidores de búsqueda de texto
| Puede iniciar y detener los servidores de búsqueda de texto de OmniFind y crear un índice de búsqueda
| de texto mediante IBM Systems Director Navigator for i.
| Visualizar el estado de los Servidores de texto de OmniFind:
| 1. Seleccione la carpeta Servidores de texto en el panel derecho.
| 2. Visualice el estado de los servidores de búsqueda de texto configurados actualmente en el sistema en
el panel derecho.
|
| 3. Seleccione Renovar para renovar la lista de servidores.
88
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
Iniciar y detener los Servidores de texto de OmniFind:
1. Seleccione el recuadro situado junto al ID de servidor seleccionado en el panel derecho.
2. En el menú Acciones, seleccione una de las acciones siguientes:
v Iniciar servidor
v Detener servidor
v Crear un índice de búsqueda de texto
| Crear un índice de búsqueda de texto:
OmniFind Text Search Server
89
|
|
| Trabajar con índices de búsqueda de texto
| Puede realizar operaciones sobre cualquier índice de búsqueda de texto de un sistema mediante IBM
| Systems Director Navigator for i.
| Visualizar los índices de texto de OmniFind para un servidor de texto:
| 1. En la ventana de IBM Systems Director Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Seleccione Búsqueda de texto de OmniFind.
| 5. Seleccione Servidores de texto.
| 6. Seleccione el servidor de texto con el que desee trabajar. Los índices correspondientes a ese servidor
se visualizarán en el panel derecho.
|
90
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Visualizar los índices de texto de OmniFind para este sistema:
1. Seleccione Búsqueda de texto de OmniFind.
| 2. Seleccione Índices de texto. Estos índices son todos los índices de búsqueda de texto correspondientes
a este sistema en la partición actual.
|
|
|
|
|
|
Realizar operaciones sobre un índice de texto:
OmniFind Text Search Server
91
| 1. Seleccione en el panel derecho el recuadro correspondiente al índice con el que desee trabajar.
| 2. Pulse Seleccionar acción en el recuadro situado en la parte superior del panel.
|
v actualizar
|
v ajustar
|
v suprimir
v ver descripción
v ver definición
v modificar definición
|
|
|
| Visualizar los índices de texto de OmniFind para un esquema:
| 1. En la ventana de IBM Systems Director Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Expanda Esquemas.
| 5. Expanda el esquema con el que desee trabajar.
| 6. Seleccione Índices de texto de OmniFind. Estos índices son todos los índices de búsqueda de texto
|
correspondientes a este esquema.
|
|
| Visualizar construcciones de índice de búsqueda de texto:
| Puede visualizar los índices de texto que la base de datos está construyendo mediante IBM Systems
| Director Navigator. Esta vista resulta de utilidad para determinar cuándo quedan disponibles los índices
| de búsqueda de texto para las aplicaciones.
| Para visualizar los índices de búsqueda que se están construyendo, siga estos pasos:
92
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
| 1. En la ventana de IBM Systems Director Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Seleccione Mantenimiento de base de datos.
| 5. Seleccione Construcciones de índice de texto.
| Este panel sólo muestra las actualizaciones de índice de búsqueda de texto en proceso. Si no hay
| actualizaciones o ajustes ejecutados actualmente en el sistema, estará vacío.
|
|
|
Utilizar System i Navigator
|
|
|
Puede administrar los servidores de búsqueda de texto e índices de búsqueda de texto de OmniFind
mediante System i Navigator.
1. En la ventana de System i Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Seleccione Búsqueda de texto de OmniFind.
OmniFind Text Search Server
93
|
|
| Trabajar con servidores de búsqueda de texto
| Puede iniciar y detener los servidores de búsqueda de texto de OmniFind y crear un índice de búsqueda
| de texto mediante System i Navigator.
| Visualizar el estado de los Servidores de texto de OmniFind:
| 1. Seleccione la carpeta Servidores de texto en el panel derecho.
| 2. Visualice el estado de los servidores de búsqueda de texto configurados actualmente en el sistema en
el panel derecho.
|
| 3. Seleccione F5 para renovar la lista de servidores.
94
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
|
|
|
|
|
|
Iniciar y detener los Servidores de texto de OmniFind:
1. Seleccione el ID de servidor seleccionado en el panel derecho.
2. Pulse el botón derecho del ratón para visualizar las opciones:
v Iniciar servidor
v Detener servidor
v Crear un índice de búsqueda de texto
Crear un índice de búsqueda de texto:
OmniFind Text Search Server
95
|
|
| Trabajar con índices de búsqueda de texto
| Puede realizar operaciones sobre cualquier índice de búsqueda de texto de un sistema mediante System i
| Navigator.
| Visualizar los índices de texto de OmniFind para un servidor de texto:
| 1. En la ventana de System i Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Seleccione Búsqueda de texto de OmniFind.
| 5. Seleccione Servidores de texto.
| 6. Seleccione el servidor de texto con el que desee trabajar. Los índices correspondientes a ese servidor
se visualizarán en el panel derecho.
|
96
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
Visualizar los índices de texto de OmniFind para este sistema:
1. Seleccione Búsqueda de texto de OmniFind.
| 2. Seleccione Índices de texto. Los índices mostrados son todos los índices de búsqueda de texto
correspondientes a este sistema en la partición actual.
|
|
|
OmniFind Text Search Server
97
|
|
| Realizar operaciones sobre un índice de texto:
| 1. Seleccione en el panel derecho un índice con el que desee trabajar.
| 2. Pulse el índice con el botón derecho del ratón.
| 3. Seleccione una operación:
v actualizar
|
|
|
v
v
v
v
v
|
|
|
ajustar
suprimir
ver descripción
ver definición
modificar definición
| Visualizar los índices de texto de OmniFind para un esquema:
| 1. En la ventana de System i Navigator, expanda el sistema que desee utilizar.
2.
3.
4.
5.
| 6.
|
|
|
|
|
98
Expanda Bases de datos.
Expanda la base de datos con la que desee trabajar.
Expanda Esquemas.
Expanda el esquema con el que desee trabajar.
Seleccione Índices de texto de OmniFind. Estos índices son todos los índices de búsqueda de texto
correspondientes a este esquema.
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
|
|
Visualizar construcciones de índice de búsqueda de texto:
|
|
|
Puede visualizar los índices de texto que la base de datos está construyendo mediante System i
Navigator. Esta vista resulta de utilidad para determinar cuándo quedan disponibles los índices de
búsqueda de texto para las aplicaciones.
|
Para visualizar los índices de búsqueda que se están construyendo, siga estos pasos:
| 1. En la ventana de System i Navigator, expanda el sistema que desee utilizar.
| 2. Expanda Bases de datos.
| 3. Expanda la base de datos con la que desee trabajar.
| 4. Expanda Mantenimiento de base de datos.
| 5. Seleccione Construcciones de índice de texto.
| Este panel sólo muestra las actualizaciones de índice de búsqueda de texto en proceso. Si no hay
| actualizaciones o ajustes ejecutados actualmente en el sistema, estará vacío.
OmniFind Text Search Server
99
|
|
|
|
Tablas de administración de búsqueda de texto
| Puede dar soporte a los servidores e índices de búsqueda de texto mediante las tablas de administración
| de QSYS2.
|
Tabla de administración QSYS2.SYSTEXTDEFAULTS
| Puede visualizar los parámetros y valores predeterminados en la tabla de administración
| QSYS2.SYSTEXTDEFAULTS. Esta tabla se crea al instalar OmniFind Text Search for DB2 for i.
| La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTDEFAULTS.
| Tabla 31. Contenido de la tabla de administración QSYS2.SYSTEXTDEFAULTS
|
| Nombre de columna
Tipo de datos
Capacidad para
nulos
| NAME
|
|
VARCHAR(30)
No
Nombre de un parámetro
predeterminado de la base de datos
para la búsqueda de texto.
| VALUE
|
VARCHAR(512)
No
Valor del parámetro predeterminado
para la búsqueda de texto.
100
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
Descripción
|
Tabla 31. Contenido de la tabla de administración QSYS2.SYSTEXTDEFAULTS (continuación)
|
|
Nombre de columna
Tipo de datos
Capacidad para
nulos
Descripción
|
|
TYPE
INTEGER
No
Reservada.
|
Tabla de administración QSYS2.SYSTEXTINDEXES
|
|
|
Puede visualizar información acerca de cada índice de búsqueda de texto en la tabla de administración
QSYS2.SYSTEXTINDEXES. Cada índice de búsqueda de texto tiene un nombre, un nombre de esquema y
un nombre de colección asociada en el servidor de búsqueda de texto.
|
|
|
La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTINDEXES. La clave
exclusiva de esta tabla es la columna INDEXSCHEMA con la columna INDEXNAME. La clave primaria
es la columna INDEXID.
|
Tabla 32. Contenido de la tabla de administración QSYS2.SYSTEXTINDEXES
|
|
Nombre de columna
Tipo de datos
Capacidad para
nulos
|
|
INDEXID
INTEGER
No
ID de índice del índice de búsqueda de
texto generado de forma exclusiva.
|
|
INDEXSCHEMA
VARCHAR(128)
No
Nombre de esquema del índice de
búsqueda de texto.
|
|
INDEXNAME
VARCHAR(128)
No
Nombre no calificado del índice de
búsqueda de texto.
|
TABLESCHEMA
VARCHAR(128)
No
Nombre de esquema de la tabla base.
|
TABLENAME
VARCHAR(128)
No
Nombre no calificado de la tabla base.
|
TABLEIASP
SMALLINT
No
ASP independiente de la tabla base.
|
|
COLLECTIONNAME
VARCHAR(255)
No
Nombre de la colección asociada en el
servidor de búsqueda de texto.
|
|
SERVERID
INTEGER
No
ID de servidor del índice de búsqueda
de texto.
|
TAKEOVERSERVERID
INTEGER
Sí
Reservada para uso futuro.
|
TAKEOVERSERVERPULSE
TIMESTAMP
Sí
Reservada para uso futuro.
|
SEARCHARGS
VARBINARY(1024)
Sí
Reservada para uso futuro.
|
|
|
|
|
ALIASSCHEMA
VARCHAR(128)
No
El alias del esquema de la tabla base
utilizada en el procedimiento
almacenado SYSPROC.SYSTS_CREATE.
Si no se utiliza ningún alias, este valor
es idéntico a TABLESCHEMA.
|
|
|
|
|
ALIASNAME
VARCHAR(128)
No
El alias del nombre de la tabla base
utilizada en el procedimiento
almacenado SYSPROC.SYSTS_CREATE.
Si no se utiliza ningún alias, este valor
es idéntico a TABLENAME.
|
|
STAGINGTABLENAME
VARCHAR(128)
Sí
El nombre de la tabla de registro para
el índice de búsqueda de texto.
|
|
EVENTTABLENAME
VARCHAR(128)
No
El nombre de la tabla de sucesos para
el índice de búsqueda de texto.
Descripción
OmniFind Text Search Server
101
| Tabla 32. Contenido de la tabla de administración QSYS2.SYSTEXTINDEXES (continuación)
|
| Nombre de columna
Tipo de datos
Capacidad para
nulos
| OFINDEXTABLENAME
|
|
VARCHAR(128)
No
El nombre de la tabla para el índice de
búsqueda de texto en OmniFind Text
Search Server for DB2 for i.
| UPDATEMINIMUM
|
|
|
INTEGER
No
Número mínimo de entradas de la tabla
de registro antes de realizar una
actualización incremental del índice de
búsqueda de texto.
| UPDATEFREQUENCY
|
|
|
VARCHAR(512)
No
Frecuencia de actualización del índice
de búsqueda de texto según lo
especificado en el procedimiento
almacenado SYSPROC.SYSTS_CREATE.
| UPDATEMODE
|
|
|
|
|
INTEGER
No
Indica la modalidad de actualización
del índice de búsqueda de texto. El
entero 0 (cero) indica la actualización
inicial del índice de búsqueda de texto.
El valor 1 indica actualizaciones
incrementales posteriores.
| REORGANIZATIONMODE
|
INTEGER
No
Indica la modalidad de reorganización
del índice de búsqueda de texto.
| CREATETIME
|
TIMESTAMP
No
Hora de creación del índice de
búsqueda de texto.
| LASTUPDATETIME
|
TIMESTAMP
Sí
Hora de última actualización del índice
de búsqueda de texto.
| LASTUPDATESTATUS
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CHAR
Sí
Indica el estado interno para optimizar
el proceso de limpieza después de una
actualización inicial o incremental del
índice de búsqueda de texto. Los
valores típicos son:
Descripción
v (Nulo) indica que el índice nunca se
ha actualizado.
v 'C' indica que se ha iniciado una
actualización inicial. Si la modalidad
de actualización no es incremental, la
actualización inicial sigue en proceso
o no ha finalizado.
v 'N' indica que se ha realizado
satisfactoriamente una actualización
incremental.
|
|
|
|
|
|
|
Durante el proceso de actualización se
utilizan otros códigos internamente. El
proceso de actualización utiliza dichos
códigos para determinar las acciones de
recuperación específicas que pueden
realizarse si la actualización no puede
realizarse.
| SCHEDULERTASKID
INTEGER
Sí
Reservada para uso futuro.
| EXPRESSIONLISTS
CLOB (32 K)
Sí
Reservada para uso futuro.
| EXPRESSIONNUMBERS
VARBINARY(32)
Sí
Reservada para uso futuro.
| USEREXITFUNCTION
VARCHAR(18)
Sí
Reservada para uso futuro.
102
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 32. Contenido de la tabla de administración QSYS2.SYSTEXTINDEXES (continuación)
|
|
Nombre de columna
Tipo de datos
Capacidad para
nulos
|
|
|
|
|
REMARKS
VARCHAR(2000)
Sí
Indicaciones realizadas en la opción
COMMENTS del parámetro
opciones-configuración-índice del
procedimiento almacenado
SYSPROC.SYSTS_CREATE.
|
|
|
|
|
|
|
|
|
TABLEMBR
VARCHAR(10)
Sí
El miembro de tabla a partir del cual se
ha construido el índice de texto. Se
utiliza para realizar el seguimiento del
miembro específico que se indexa si el
archivo es multimiembro. Si el valor es
nulo, es miembro es el primero y único
de la tabla.
|
|
Descripción
Conceptos relacionados
“Nombre de alias de servidor” en la página 11
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
|
Tabla de administración QSYS2.SYSTEXTCOLUMNS
|
|
|
Puede visualizar información acerca de las columnas de texto de un índice de búsqueda de texto en la
tabla de administración QSYS2.SYSTEXTCOLUMNS. Cada índice de búsqueda de texto tiene un ID de
índice, nombres de columna de texto y el nombre de esquema de la tabla base.
|
|
|
La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTCOLUMNS. La
clave primaria de esta tabla es la columna INDEXID con la columna COLUMNNAME. La clave foránea
es la columna INDEXID.
|
Tabla 33. Contenido de la tabla de administración QSYS2.SYSTEXTCOLUMNS
|
|
Nombre de columna
Tipo de datos
Capacidad
para nulos
|
|
INDEXID
INTEGER
No
ID de índice del índice de búsqueda de
texto generado de forma exclusiva.
|
|
COLUMNNAME
VARCHAR(128)
No
Nombre no calificado de la columna de
texto.
|
TABLESCHEMA
VARCHAR(128)
No
Nombre de esquema de la tabla base.
|
TABLENAME
VARCHAR(128)
No
Nombre no calificado de la tabla base.
|
|
|
|
|
LANGUAGE
VARCHAR(5)
No
El idioma que el servidor de búsqueda
de texto utiliza para el proceso
lingüístico de los documentos de texto.
El valor predeterminado es en_US
(inglés).
|
|
|
|
|
|
|
FUNCTIONSCHEMA
VARCHAR(128)
Sí
El esquema de una función definida
por el usuario utilizada por
OMNIFIND para acceder a documentos
de texto que se encuentran en una
columna que no es de un tipo de datos
soportado o que están almacenados en
otro lugar.
Descripción
OmniFind Text Search Server
103
| Tabla 33. Contenido de la tabla de administración QSYS2.SYSTEXTCOLUMNS (continuación)
|
| Nombre de columna
Tipo de datos
Capacidad
para nulos
| FUNCTIONNAME
|
|
|
|
|
VARCHAR(18)
Sí
El nombre de una función definida por
el usuario utilizada por OMNIFIND
para acceder a documentos de texto
que se encuentran en una columna que
no es de un tipo de datos soportado o
que están almacenados en otro lugar.
| CCSID
|
|
|
INTEGER
No
Identificador de juego de caracteres
codificados utilizado para un índice de
búsqueda de texto en una columna con
un tipo de datos binarios.
| FORMAT
|
|
|
VARCHAR(30)
No
El formato de los documentos de texto
de la columna. Los valores de formato
soportados son TEXT, HTML, XML e
INSO.
| KEYCOLUMNCOUNT
|
INTEGER
No
El recuento de columnas de clave para
el índice de búsqueda de texto.
| KEYCOLUMNNAMES
|
|
VARCHAR(1200)
No
Los nombres de columnas de clave
para el índice de búsqueda de texto.
|
Descripción
Tabla de administración QSYS2.SYSTEXTSERVERS
| Puede visualizar dónde están instalados los servidores de búsqueda de texto mediante la tabla de
| administración QSYS2.SYSTEXTSERVERS.
| La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTSERVERS. La clave
| exclusiva de esta tabla es la columna SERVERNAME con la columna SERVERPORT. La clave primaria es
| la columna SERVERID.
| Tabla 34. Contenido de la tabla de administración QSYS2.SYSTEXTSERVERS
|
| Nombre de columna
Tipo de datos
Capacidad
para nulos
| SERVERID
|
INTEGER
No
ID del servidor de búsqueda de texto
generado de forma exclusiva.
| SERVERNAME
|
VARCHAR(128)
No
Nombre o dirección IP del host del
servidor de búsqueda de texto.
| SERVERADRINFO
|
|
|
VARBINARY(3000)
Sí
Representación interna de SERVERNAME
y SERVERPORT según lo determinado por
el procedimiento almacenado
SYSPROC.SYSTS_START.
| SERVERPORT
|
INTEGER
No
Número de puerto del servidor de
búsqueda de texto.
| SERVERPATH
|
VARCHAR(512)
No
Vía de acceso del servidor de búsqueda de
texto.
| SERVERTYPE
|
|
|
|
|
INTEGER
No
Tipo del servidor de búsqueda de texto. El
valor 0 (cero) indica un servidor de
búsqueda de texto IBM i. El valor 1 indica
un servidor de búsqueda de texto Linux. El
valor 2 indica un servidor de búsqueda de
texto Windows.
104
Descripción
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
|
Tabla 34. Contenido de la tabla de administración QSYS2.SYSTEXTSERVERS (continuación)
|
|
Nombre de columna
Tipo de datos
Capacidad
para nulos
|
|
SERVERAUTHTOKEN
VARCHAR(256)
No
Señal de autenticación para el servidor de
búsqueda de texto.
|
|
SERVERMASTERKEY
VARCHAR(36)
No
Clave de servidor del servidor de
búsqueda de texto.
|
|
|
|
|
|
SERVERCLASS
INTEGER
No
Clase de servidor del servidor de
búsqueda de texto. El valor 0 (cero) indica
un servidor de producción, disponible para
selección automática. El valor 9 indica un
servidor de prueba, nunca asignado
automáticamente.
|
|
|
|
|
SERVERSTATUS
INTEGER
No
Indica si el servidor puede utilizarse como
servidor de búsqueda de texto para crear
índices de búsqueda de texto. El valor
predeterminado es 0 (cero), que indica que
el servidor puede utilizarse.
|
|
|
|
|
ALIASNAME
VARCHAR(128)
Sí
El nombre de alias es exclusivo cuando no
es nulo y es sensible a las mayúsculas y
minúsculas.
|
|
Descripción
Conceptos relacionados
“Nombre de alias de servidor” en la página 11
Puede utilizar un nombre de alias de servidor para asignar un nombre significativo a un servidor.
|
Tabla de administración QSYS2.SYSTEXTCONFIGURATION
|
|
|
Puede visualizar los parámetros de configuración del índice de búsqueda de texto pasados por el
procedimiento almacenado SYSPROC.SYSTS_CREATE en la tabla de administración
QSYS2.SYSTEXTCONFIGURATION.
|
|
|
La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTCONFIGURATION.
La clave primaria es la columna INDEXID con la columna PARAMETER. La clave foránea es la columna
INDEXID.
|
Tabla 35. Contenido de la tabla de administración QSYS2.SYSTEXTCONFIGURATION
|
|
Nombre de columna
Tipo de datos
Capacidad para
nulos
Descripción
|
|
INDEXID
INTEGER
No
ID de índice del índice de búsqueda de
texto generado de forma exclusiva.
|
|
|
|
PARAMETER
VARCHAR(30)
No
Parámetros especificados para el índice
de búsqueda de texto en el
procedimiento almacenado
SYSPROC.SYSTS_CREATE.
|
|
|
VALUE
VARCHAR(512)
No
Valores de los parámetros especificados.
|
|
|
|
|
Referencia relacionada
“SYSPROC.SYSTS_CREATE” en la página 19
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_CREATE para crear un índice de
búsqueda de texto. Este procedimiento almacenado habilita una columna de texto para la indexación
de búsqueda de texto. A continuación, el índice de búsqueda de texto puede utilizarse en consultas
SQL que contengan las funciones CONTAINS o SCORE.
OmniFind Text Search Server
105
SQLCODE -0196
|
Tabla de administración QSYS2.SYSTEXTSERVERHISTORY
| Puede ver el historial de los servidores utilizados para el procedimiento almacenado
| SYSPROC.SYSTS_DROP visualizando la tabla auxiliar QSYS2.SYSTEXTSERVERHISTORY.
| La tabla siguiente muestra el contenido de la tabla de administración QSYS2.SYSTEXTSERVERHISTORY.
| La clave exclusiva de esta tabla es la columna INDEXID con la columna SERVERID. La clave foránea es
| la columna INDEXID.
| Tabla 36. Contenido de la tabla de administración QSYS2.SYSTEXTSERVERHISTORY
|
| Nombre de columna
| INDEXID
|
Tipo de datos
Capacidad para
nulos
INTEGER
No
Descripción
ID de índice de un índice de búsqueda
de texto creado.
| SERVERID
INTEGER
No
ID del servidor donde debe descartarse
|
un índice de búsqueda de texto en
|
SYSPROC.SYSTS_DROP.
|
Referencia relacionada
|
“SYSPROC.SYSTS_DROP” en la página 33
|
Puede llamar al procedimiento almacenado SYSPROC.SYSTS_DROP para eliminar un índice de
|
búsqueda de texto definido mediante el procedimiento almacenado SYSPROC.SYSTS_CREATE.
|
|
|
Mensajes y códigos
| Puede visualizar los mensajes y códigos de retorno SQL de OmniFind Text Search for DB2 for i. Los
| mensajes se listan por orden numérico.
|
Mensajes de OmniFind
| Puede visualizar los mensajes de OmniFind correspondientes a OmniFind Text Search for DB2 for i. Los
| mensajes se listan por orden numérico.
| Se añaden mensajes al archivo de mensajes de OmniFind (QDBTSLIB/QOMFMSGF) para los errores
| siguientes.
|
Tabla 37. Mensajes de OmniFind
|
Número
Tipo
Mensaje
|
OMF0011
Información
Índice de búsqueda de texto restaurado con opciones de configuración diferentes.
|
|
OMF0012
Aviso
El tipo FORMAT para el índice que se crea no es XML. Las búsquedas XML no
están soportadas.
|
|
|
OMF0334
Error
El objeto ''{0}''.''{1}'' que ha especificado no está soportado. Un índice de búsqueda
de texto sólo puede crearse sobre una tabla SQL, un alias SQL o un miembro
simple de un archivo físico.
|
|
OMF0358
Error
El usuario actual no tiene autoridad suficiente para realizar la operación
solicitada.
|
|
|
OMF0359
Error
La restauración ha fallado. El servidor de texto para el índice de texto no está
disponible.
|
| SQLCODE -0196 La columna &3 de &1 en &2 no
puede descartarse.
|
| Explicación: Se ha intentado descartar la columna &3.
| La columna no puede descartarse porque una vista, un
106
| desencadenante o un índice depende de la columna y
| se ha especificado RESTRICT, o la columna forma parte
| de la clave de partición.
| Respuesta del Usuario: Especifique CASCADE en la
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
SQLCODE -5003 • SQLCODE -20424
|
|
|
|
|
|
|
sentencia ALTER TABLE para descartar la columna y
las vistas, restricciones, desencadenantes e índices que
dependen de ella. Si la columna forma parte de la clave
de partición, especifique DROP PARTITIONING en la
sentencia ALTER TABLE para eliminar el
particionamiento de la tabla. Intente de nuevo la
petición.
|
SQLSTATE: 42817
|
|
|
SQLCODE -5003 No puede realizarse la operación
bajo control de compromiso.
| Explicación: Las operaciones siguientes no pueden
| realizarse bajo control de compromiso especificando
| COMMIT(*CHG), COMMIT(*CS) o COMMIT(*ALL):
| v Sentencia DROP SCHEMA.
| v Sentencia GRANT o REVOKE sobre un objeto que
tiene un poseedor de autoridad.
|
| v Sentencia CREATE en modalidad de denominación
SQL de un objeto que tiene un poseedor de
|
autoridad.
|
| v DROP de un índice de búsqueda de texto.
| Estas operaciones no pueden comprometerse ni
| retrotraerse.
| Respuesta del Usuario: Especifique
| COMMIT(*NONE) e intente de nuevo la sentencia.
| SQLSTATE: 42922
|
|
|
SQLCODE -20423 Se ha producido un error durante
el proceso de búsqueda de texto.
| Explicación: Se ha producido un error durante el
| proceso de búsqueda de texto de una función
| CONTAINS o SCORE. El error se ha producido en el
| servidor servidor al utilizar el índice de búsqueda de
| texto nombre-índice por el código de razón código-razón.
| El testo que describe el problema es: texto.
|
|
OmniFind Text Search Server for DB2 for i esté
correctamente instalado.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SQLSTATE: 38H10
Referencia relacionada
“CONTAINS” en la página 37
Puede utilizar la función CONTAINS para realizar
búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento
de búsqueda. La función devuelve un resultado que
indica si se ha encontrado una coincidencia.
“SCORE” en la página 39
Puede utilizar la función SCORE para realizar
búsquedas en un índice de búsqueda de texto
utilizando criterios especificados en un argumento
de búsqueda. La función devuelve una puntuación
de relevancia que mide hasta que punto un
documento coincide con la consulta.
|
| SQLCODE -20424 El soporte de búsqueda de texto
no está disponible por la razón
|
código-razón.
|
| Explicación: Se ha detectado un problema en una de
| las tablas administrativas de búsqueda de texto. El
| código de razón es código-razón.
| 1
|
|
|
|
Una de las tablas de administración de
búsqueda de texto no se ha encontrado
(QSYS2.SYSTEXTINDEXES,
QSYS2.SYSTEXTCOLUMNS o
QSYS2.SYSTEXTSERVERS).
|
| 3
|
El soporte de búsqueda de texto no está
instalado.
| 4
|
|
|
La columna STATUS de la tabla
QSYS2.SYSTEXTSERVERS tiene un valor de 1,
que indica que el soporte de búsqueda de
texto se ha detenido.
No hay ningún OmniFind Text Search Server
for DB2 for i definido.
|
|
|
servidor: nombre o dirección IP del host y puerto del
servidor de búsqueda de texto en el que se ha
detectado el error.
| 7
|
|
|
nombre-índice: nombre del índice utilizado en el proceso
de búsqueda de texto.
|
|
Nota: incluya el esquema y un punto en el nombre de
índice en una única señal.
|
|
|
|
|
|
código-razón: código de razón devuelto por OmniFind
Text Search Server for DB2 for i.
|
|
texto: texto devuelto por OmniFind Text Search Server
for DB2 for i.
|
Acción del Sistema: La sentencia no puede procesarse.
|
|
Respuesta del Usuario: Póngase en contacto con el
administrador del sistema para comprobar que
| Acción del Sistema: La sentencia no puede procesarse.
Respuesta del Usuario: Póngase en contacto con el
administrador del sistema para asegurarse de que el
soporte para la búsqueda de texto esté correctamente
configurado en el sistema.
| SQLSTATE: 38H11
Referencia relacionada
|
“Tabla de administración
|
QSYS2.SYSTEXTSERVERS” en la página 104
|
Puede visualizar dónde están instalados los
|
servidores de búsqueda de texto mediante la tabla
|
de administración QSYS2.SYSTEXTSERVERS.
|
“Tabla de administración
|
QSYS2.SYSTEXTINDEXES” en la página 101
|
Puede visualizar información acerca de cada índice
|
OmniFind Text Search Server
107
SQLCODE -20425 • CPF32fb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
de búsqueda de texto en la tabla de administración
QSYS2.SYSTEXTINDEXES. Cada índice de
búsqueda de texto tiene un nombre, un nombre de
esquema y un nombre de colección asociada en el
servidor de búsqueda de texto.
“Tabla de administración
QSYS2.SYSTEXTCOLUMNS” en la página 103
Puede visualizar información acerca de las
columnas de texto de un índice de búsqueda de
texto en la tabla de administración
QSYS2.SYSTEXTCOLUMNS. Cada índice de
búsqueda de texto tiene un ID de índice, nombres
de columna de texto y el nombre de esquema de la
tabla base.
|
| SQLCODE -20425 Búsqueda de texto no permitida
para la columna nombre-columna.
|
|
|
|
|
|
|
Explicación: Una función de búsqueda de texto
CONTAINS o SCORE ha especificado la columna
nombre-columna de la tabla nombre-tabla en el esquema
de tabla. No existe un índice de texto para esta
columna, por lo que el proceso de búsqueda de texto
no puede ejecutarse.
| Acción del Sistema: La sentencia no puede procesarse.
| Respuesta del Usuario: Compruebe que la columna y
| la tabla estén registradas en OmniFind Text Search
| Server for DB2 for i.
| SQLSTATE: 38H12
Referencia relacionada
|
“CONTAINS” en la página 37
|
Puede utilizar la función CONTAINS para realizar
|
búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento
|
de búsqueda. La función devuelve un resultado que
|
indica si se ha encontrado una coincidencia.
|
“SCORE” en la página 39
|
Puede utilizar la función SCORE para realizar
|
búsquedas en un índice de búsqueda de texto
|
utilizando criterios especificados en un argumento
|
de búsqueda. La función devuelve una puntuación
|
de relevancia que mide hasta que punto un
|
documento coincide con la consulta.
|
|
| SQLCODE -20426 Ya se está ejecutando un
procedimiento de administración de
|
búsqueda de texto conflictivo.
|
| Explicación: En este índice ya se está ejecutando un
| procedimiento administrativo de búsqueda de texto
| conflictivo, como por ejemplo una actualización.
| Acción del Sistema: La sentencia no puede procesarse.
| Respuesta del Usuario: Invoque de nuevo el
| procedimiento almacenado de administración una vez
| finalizado el procedimiento almacenado en ejecución.
|
| SQLCODE -20427 Se ha producido un error durante
el procedimiento administrativo de
|
búsqueda de texto.
|
|
|
|
|
Explicación: Se ha producido un error durante un
procedimiento administrativo de búsqueda de texto. El
código de razón es código-razón. El testo devuelto es:
texto. El texto del error describe el problema.
| Acción del Sistema: La sentencia CALL falla con este
| SQLCODE.
| Respuesta del Usuario: Solucione el problema
| indicado por el error e invoque de nuevo el
| procedimiento almacenado administrativo.
| SQLSTATE: 38H14
|
| CPF32fa
|
|
|
|
|
|
Explicación: Se ha intentado una operación que no
está soportada para un índice de búsqueda de texto.
Los índices de búsqueda de texto no permiten algunas
operaciones que están permitidas en los índices y vistas
tradicionales de DB2.
| Si se ha intentado suprimir el índice, la operación
| puede haber fallado debido a que el control de
| compromiso estaba activo.
|
|
|
|
Respuesta del Usuario: Realice las operaciones
administrativas de búsqueda de texto mediante los
procedimientos almacenados SQL incluidos en
OmniFind Text Search Server for DB2 for i.
|
|
|
|
Para obtener más información acerca de los índices de
búsqueda de texto y las restricciones que se les aplican,
consulte la documentación de Information Center:
http://www.ibm.com/systems/i/infocenter/
|
| CPF32fb
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
La operación en el índice de búsqueda
de texto &2 de &1 no ha podido
realizarse.
Explicación: Se ha intentado una operación en el
índice de búsqueda de texto &2 de &1. La operación
solicitada no es válida actualmente debido al código de
razón &3; los códigos de razón y sus significados son
los siguientes:
1. Un producto necesario no está instalado.
2. El servidor de búsqueda de texto solicitado &4 no
está disponible o no está definido.
3. Se ha intentado una restauración del índice, pero el
índice ya existe. El índice existente no ha podido
modificarse para que coincida con el índice salvado.
4. Un objeto dependiente &5 en &6 de tipo &7 no
existía.
5. Un objeto &5 en &6 de tipo &7 no estaba
disponible.
| SQLSTATE: 38H13
108
Operación no permitida en el índice de
búsqueda de texto &2 de &1.
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
CPI321E
|
|
|
|
|
6. La agrupación de almacenamiento auxiliar (ASP)
para la hebra actual no coincide con la ASP del
índice de búsqueda de texto.
|
|
Respuesta del Usuario: Corrija el problema e intente
de nuevo la operación.
|
|
|
|
Para obtener más información acerca de los índices de
búsqueda de texto, consulte la documentación de
Information Center: http://www.ibm.com/systems/i/
infocenter/
|
|
CPI321E
7. Ya existe un índice de búsqueda de texto para la
columna &8, tabla &5 de la biblioteca &6.
Archivo &1 de la biblioteca &2 diferido.
|
|
|
|
|
4. El archivo representa un índice de búsqueda de
texto y el objeto de programa bajo licencia necesario
no existe en el sistema.
|
|
|
|
|
Respuesta del Usuario: Para el código de razón 1:
restaure el archivo base que falta o utilice el mandato
Restaurar objetos diferidos (RSTDFROBJ) especificando
el mismo ID de diferimiento (parámetro DFRID) &4 en
cualquiera de los mandatos utilizados.
|
|
|
|
|
Para los códigos de razón 2 y 3: corrija las razones de
la anomalía de creación y luego utilice el mandato
Restaurar objetos diferidos (RSTDFROBJ) especificando
el mismo ID de diferimiento (parámetro DFRID) &4 en
el mandato.
|
|
|
|
|
|
|
Para el código de razón 5: consulte los mensajes
anteriores del registro de trabajo, corrija los errores y
luego utilice el mandato Restaurar objetos diferidos
(RSTDFROBJ) especificando el mismo ID de
diferimiento (parámetro DFRID) &4 en el mandato.
5. El archivo representa un índice de búsqueda de
texto y el índice no ha podido volver a crearse.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Explicación: El archivo &1 de la biblioteca &2 se ha
diferido durante esta solicitud de restauración con el ID
de diferimiento especificado &4. El archivo se ha
diferido debido al código de razón &3. Los códigos de
razón son:
|
|
|
IBM le otorga una licencia de copyright no exclusiva para utilizar todos los ejemplos de código de
programación, a partir de los que puede generar funciones similares adaptadas a sus necesidades
específicas.
|
|
|
|
|
|
SUJETO A LAS GARANTÍAS ESTATUTARIAS QUE NO PUEDAN EXCLUIRSE, IBM Y LOS
DESARROLLADORES Y SUMINISTRADORES DE PROGRAMAS DE IBM NO OFRECEN NINGUNA
GARANTÍA NI CONDICIÓN, YA SEA IMPLÍCITA O EXPLÍCITA, INCLUIDAS, PERO SIN LIMITARSE A
ELLAS, LAS GARANTÍAS O CONDICIONES IMPLÍCITAS DE COMERCIALIZACIÓN, ADECUACIÓN
A UN PROPÓSITO DETERMINADO Y NO VULNERACIÓN CON RESPECTO AL PROGRAMA O AL
SOPORTE TÉCNICO, SI EXISTE.
|
|
|
|
|
|
|
|
BAJO NINGUNA CIRCUNSTANCIA, IBM Y LOS DESARROLLADORES O SUMINISTRADORES DE
PROGRAMAS DE IBM SE HACEN RESPONSABLES DE NINGUNA DE LAS SIGUIENTES
SITUACIONES, NI SIQUIERA EN CASO DE HABER SIDO INFORMADOS DE TAL POSIBILIDAD:
1. PÉRDIDA DE DATOS O DAÑOS CAUSADOS EN ELLOS;
2. DAÑOS ESPECIALES, ACCIDENTALES, DIRECTOS O INDIRECTOS, O DAÑOS ECONÓMICOS
DERIVADOS;
3. PÉRDIDAS DE BENEFICIOS, COMERCIALES, DE INGRESOS, CLIENTELA O AHORROS
ANTICIPADOS.
|
|
|
ALGUNAS JURISDICCIONES NO PERMITEN LA EXCLUSIÓN O LA LIMITACIÓN DE LOS DAÑOS
DIRECTOS, ACCIDENTALES O DERIVADOS, POR LO QUE PARTE DE LAS LIMITACIONES O
EXCLUSIONES ANTERIORES, O TODAS ELLAS, PUEDE NO SER PROCEDENTE EN SU CASO.
1. El archivo base &5 de la biblioteca &6 no existía
cuando se estaba creando &1 para la restauración.
2. El archivo &1 no ha podido crearse por alguna otra
razón que no es la ausencia de un archivo base.
Consulte los mensajes anteriores para determinar
por qué ha fallado la creación del archivo.
Información relacionada
Restaurar objetos diferidos (RSTDFROBJ)
3. Uno o varios de los miembros del archivo &1 no
han podido crearse. Consulte los mensajes
anteriores para determinar por qué ha fallado la
creación de los miembros.
Información sobre licencia de código y exención de responsabilidad
OmniFind Text Search Server
109
110
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
Apéndice. Avisos
Esta información se ha desarrollado para productos y servicios ofrecidos en los Estados Unidos de
América.
Es posible que IBM no ofrezca los productos, servicios o características descritos en este documento en
otros países. Póngase en contacto con el representante local de IBM para obtener información acerca de
los productos y servicios disponibles actualmente en su área geográfica. Las referencias a productos,
programas o servicios IBM no pretenden afirmar ni implican que sólo puedan utilizarse dichos productos,
programas o servicios IBM. En su lugar puede utilizarse cualquier producto, programa o servicio
funcionalmente equivalente que no infrinja ninguno de los derechos de propiedad intelectual de IBM. Sin
embargo, es responsabilidad del usuario evaluar y comprobar el funcionamiento de cualquier producto,
programa o servicio que no sea de IBM.
IBM puede tener patentes o aplicaciones pendientes de patente que cubran los temas descritos en este
documento. La adquisición de este documento no le otorga ninguna licencia sobre dichas patentes. Puede
enviar consultas sobre licencias, por escrito, a:
IBM Director of Licensing
IBM Corporation
North Castle Drive
Armonk, NY 10504-1785
U.S.A.
Para consultas sobre licencias relativas a la información de doble byte (DBCS), póngase en contacto con el
departamento de propiedad intelectual de IBM de su país, o envíe las consultas, por escrito, a:
Intellectual Property Licensing
Legal and Intellectual Property Law
IBM Japan, Ltd.
3-2-12, Roppongi, Minato-ku, Tokyo 106-8711
El párrafo siguiente no se aplica en el Reino Unido ni en ningún otro país en el que tales
disposiciones sean incoherentes con la legislación local: INTERNATIONAL BUSINESS MACHINES
CORPORATION SUMINISTRA ESTA PUBLICACIÓN “TAL CUAL”, SIN GARANTÍAS DE NINGÚN
TIPO, NI IMPLÍCITAS NI EXPLÍCITAS, INCLUIDAS LAS GARANTÍAS IMPLÍCITAS DE NO
VULNERACIÓN, COMERCIALIZACIÓN O ADECUACIÓN A UN PROPÓSITO DETERMINADO, PERO
SIN LIMITARSE A ELLAS. Algunos estados no permiten la declaración de limitación de responsabilidad
de las garantías implícitas o explícitas en determinadas transacciones, por lo que esta declaración puede
no ser aplicable en su caso.
Esta información puede incluir inexactitudes técnicas o errores tipográficos. La información incluida aquí
está sujeta a cambios periódicos; dichos cambios se incorporarán en nuevas ediciones de esta publicación.
IBM puede efectuar mejoras y/o cambios en los productos y/o programas descritos en esta publicación
en cualquier momento sin previo aviso.
Las referencias hechas en esta información a sitios que no pertenecen a IBM se suministran únicamente a
efectos de comodidad, y no se ofrece garantía alguna con respecto a ellos. Los materiales de dichos sitios
Web no forman parte de los materiales de este producto IBM, y el uso de los mismos es responsabilidad
del usuario.
IBM puede utilizar o distribuir la información suministrada por el cliente de la forma que considere
adecuada sin incurrir por ello en ninguna obligación con respecto a él.
© Copyright IBM Corp. 2002, 2010
111
Los licenciatarios de este programa que deseen obtener información acerca del mismo con el propósito de
permitir: (i) el intercambio de información entre programas creados de forma independiente y otros
programas (incluido este) y (ii) la utilización mutua de la información intercambiada, deben ponerse en
contacto con:
IBM Corporation
Software Interoperability Coordinator, Department YBWA
3605 Highway 52 N
Rochester, MN 55901
U.S.A.
Tal información puede estar disponible, sujeta a los términos y condiciones adecuados, incluyendo en
algunos casos el pago de una tasa.
IBM suministra el programa bajo licencia descrito en este documento y todo el material bajo licencia
destinado a él bajo los términos del acuerdo de cliente de IBM (IBM Customer Agreement), el acuerdo
internacional de licencia de programas IBM (IBM International Program License Agreement), el acuerdo
de licencia para código de máquina de IBM (IBM License Agreement for Machine Code) o cualquier
acuerdo equivalente entre las partes.
Los datos de rendimiento contenidos en esta documentación se han determinado en un entorno
controlado. Por tanto, los resultados obtenidos en otros entornos operativos pueden variar de forma
significativa. Algunas mediciones pueden haberse efectuado en sistemas a nivel de desarrollo, y no existe
ninguna garantía de que dichas mediciones sean las mismas en sistemas de disponibilidad general.
Además, algunas mediciones pueden haberse estimado por extrapolación. Los resultados reales pueden
variar. Los usuarios de este documento deben verificar los datos aplicables a su entorno específico.
La información concerniente a productos no IBM se ha obtenido de los proveedores de dichos productos,
de sus anuncios publicados o de otras fuentes públicamente disponibles. IBM no ha probado dichos
productos y no puede confirmar la exactitud del rendimiento, la compatibilidad ni ninguna ora
declaración relacionada con productos no IBM. Las preguntas relativas a las prestaciones de los productos
no IBM deben dirigirse a los proveedores de los mismos.
Todas las afirmaciones relativas a planes o intenciones futuras de IBM están sujetas a cambio o retirada
sin previo aviso, y representan únicamente metas y objetivos.
Todos los precios de IBM que se muestran son precios de minorista sugeridos por IBM, están
actualizados y sujetos a cambios sin previo aviso. Los precios de los minoristas pueden variar.
Esta información tiene únicamente valor de planificación. La información contenida en esta
documentación está sujeta a cambios antes de que los productos descritos estén disponibles.
Esta información contiene ejemplos de datos e informes utilizados en operaciones comerciales diarias.
Para ilustrarlos de la forma más completa posible, incluyen los nombres de individuos, empresas, marcas
y productos. Todos estos nombres son ficticios, y cualquier parecido con los nombres y direcciones de
empresas reales es pura coincidencia.
LICENCIA DE COPYRIGHT:
Esta información contiene programas de aplicación de ejemplo en lenguaje fuente, que ilustran las
técnicas de programación en diversas plataformas operativas. Puede copiar, modificar y distribuir estos
programas de ejemplo de cualquier modo sin pago a IBM con el propósito de desarrollar, utilizar,
comercializar o distribuir programas de aplicación compatibles con la interfaz de programación de
aplicaciones correspondiente a la plataforma operativa para la que se han escrito. Estos ejemplos no se
han probado exhaustivamente bajo todas las condiciones. Por tanto, IBM no puede garantizar la
fiabilidad, capacidad de servicio o funcionamiento de estos programas. Los programas de ejemplo se
112
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
suministran "TAL CUAL", sin garantías de ninguna clase. IBM no será responsable de los daños
derivados de la utilización de los programas de ejemplo por parte del cliente.
Cada copia o parte de estos programas de ejemplo o cualquier trabajo derivado debe incluir una viso de
copyright como el siguiente:
© (nombre de la empresa) (año). Partes de este código se derivan de IBM Corp. Sample Programs. ©
Copyright IBM Corp. _especificar el año o años_.
Si visualiza esta información en copia software, es posible que no se muestren las fotografías e
ilustraciones en color.
Información sobre interfaces de programación
Esta publicación dedicada a OmniFind Text Search Server for DB2 for i documenta las interfaces de
programación planificadas que permiten al cliente escribir programas a fin de obtener los servicios de
OmniFind Text Search Server for DB2 for i.
Marcas registradas
IBM, el logotipo de IBM e ibm.com son marcas registradas de International Business Machines Corp., en
numerosas jurisdicciones de todo el mundo. Otros nombres de productos y servicios pueden ser marcas
registradas de IBM o de otras empresas. Puede encontrar una lista de las marcas registradas de IBM en el
sitio Web de Copyright and trademark information, cuya dirección es www.ibm.com/legal/
copytrade.shtml.
Adobe, el logotipo de Adobe, PostScript y el logotipo de PostScript son marcas registradas de Adobe
Systems Incorporated en los Estados Unidos de América o en otros países.
Java y todas las marcas registradas y logotipos basados en Java son marcas registradas de Sun
Microsystems, Inc. en los Estados Unidos de América o en otros países.
Linux es una marca registrada de Linus Torvalds en los Estados Unidos de América o en otros países.
Windows es una marca registrada de Microsoft Corporation en los Estados Unidos de América o en otros
países.
UNIX es una marca registrada de The Open Group en los Estados Unidos de América o en otros países.
Otros nombres de empresas, productos o servicios pueden ser marcas registradas o de servicio de
terceros.
Términos y condiciones
Los permisos para utilizar estas publicaciones están sujetos a los siguientes términos y condiciones.
Uso personal: puede reproducir estas publicaciones para uso personal (no comercial) siempre y cuando
incluya una copia de todos los avisos de derechos de autor. No puede distribuir ni visualizar estas
publicaciones ni ninguna de sus partes, como tampoco elaborar trabajos que se deriven de ellas, sin el
consentimiento explícito de IBM.
Uso comercial: puede reproducir, distribuir y visualizar estas publicaciones únicamente dentro de su
empresa, siempre y cuando incluya una copia de todos los avisos de derechos de autor. No puede
elaborar trabajos que se deriven de estas publicaciones, ni tampoco reproducir, distribuir ni visualizar
estas publicaciones ni ninguna de sus partes fuera de su empresa, sin el consentimiento explícito de IBM.
Apéndice. Avisos
113
Aparte de la autorización que se concede explícitamente en este permiso, no se otorga ningún otro
permiso, licencia ni derecho, ya sea explícito o implícito, sobre las publicaciones, la información, los
datos, el software o cualquier otra propiedad intelectual contenida en ellas.
IBM se reserva el derecho de retirar los permisos aquí concedidos siempre que, según el parecer del
fabricante, se utilicen las publicaciones en detrimento de sus intereses o cuando, también según el parecer
del fabricante, no se sigan debidamente las instrucciones anteriores.
No puede bajar, exportar ni reexportar esta información si no lo hace en plena conformidad con la
legislación y normativa vigente, incluidas todas las leyes y normas de exportación de Estados Unidos.
IBM NO PROPORCIONA NINGUNA GARANTÍA SOBRE EL CONTENIDO DE ESTAS
PUBLICACIONES. LAS PUBLICACIONES SE PROPORCIONAN "TAL CUAL", SIN GARANTÍA DE
NINGUNA CLASE, YA SEA EXPLÍCITA O IMPLÍCITA, INCLUIDAS, PERO SIN LIMITARSE A ELLAS,
LAS GARANTÍAS IMPLÍCITAS DE COMERCIALIZACIÓN, NO VULNERACIÓN E IDONEIDAD PARA
UN FIN DETERMINADO.
114
IBM i: e-business y servicio Web OmniFind Text Search Server for DB2 for i
Impreso en España
Descargar