Los argumentos de búsqueda se utilizan en CONTAINS, NO_OF_MATCHES, RANK y HANDLE_LIST. Esta sección utiliza la función CONTAINS para mostrar diferentes ejemplos de argumentos de búsqueda en funciones DB2 Text Extender.
Puede haber más de un término en un argumento de búsqueda. Una forma de combinar varios términos de búsqueda es conectarlos entre sí utilizando comas, de la siguiente manera:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '("compress", "compiler", "pack", "zip", "compact")') = 1
Este formato de argumento de búsqueda encuentra el texto que contiene cualquiera de los términos de búsqueda. En términos lógicos, los términos de búsqueda se conectan mediante un operador OR.
(Consulte también el apartado Búsqueda con el operador booleano NOT.)
Los términos de búsqueda pueden combinarse con otros términos de búsqueda utilizando los operadores booleanos "&" (AND) y "!" (OR). Por ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress" | "compiler"') = 1
Puede combinar varios términos de búsqueda utilizando los operadores booleanos:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress" | "compiler" & "DB2"') = 1
Si utiliza más de un operador booleano, DB2 Text Extender los evalúa de izquierda a derecha, pero el operador lógico AND (&) tiene un enlace superior al operador lógico OR (!). Por ejemplo, si no incluye los paréntesis,
"DB2" & "compiler" | "support" & "compress"
se evalúa como:
("DB2" & "compiler") | ("support" & "compress")
Por lo que en el ejemplo siguiente, debe incluir los paréntesis:
"DB2" & ("compiler" | "support") & "compress"
Si combina operadores booleanos con términos de búsqueda encadenados mediante el separador coma, de esta manera:
("compress", "compiler") & "DB2"
la coma se interpreta como el operador booleano OR, de esta manera:
("compress" | "compiler") & "DB2"
Si está utilizando un índice precise (exacto), DB2 Text Extender busca los términos exactamente tal como los escribe. Por ejemplo, el término media sólo encuentra el texto que contiene "media". El texto que contiene el singular "medium" no se encuentra.
Si está utilizando un índice linguistic (lingüístico), DB2 Text Extender busca también las variaciones de los términos como, por ejemplo, el plural de un nombre o un tiempo de verbo distinto.
Por ejemplo, el término drive encuentra el texto que contiene "drive", "drives", "driving", "drove" y "driven".
Los caracteres de máscara, conocidos como caracteres "comodines", ofrecen una forma de flexibilizar la búsqueda. Representan caracteres opcionales al principio, en medio o al final de un término de búsqueda. Aumentan el número de documentos de texto que una búsqueda encuentra.
Consejo |
---|
Si utiliza caracteres de máscara, no puede utilizar la palabra clave SYNONYM FORM OF. |
Los caracteres de máscara son especialmente útiles para buscar variaciones de términos si tiene un índice exacto. Si tiene un índice lingüístico, muchas de las variaciones encontradas utilizando los caracteres de máscara también se encontrarían.
Tenga en cuenta que los fragmentos de palabras (palabras enmascaradas con caracteres comodín) no pueden reducirse a su formato base. Por lo tanto, si busca passe%, no encontrará las palabras "passes" ni "passed", porque se reducen a su formato base "pass" en el índice. Para buscarlas, debe buscar pass%.
DB2 Text Extender utiliza dos caracteres de máscara: porcentaje (%) y subrayado (_):
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"%name"') = 1
Este término de búsqueda encuentra los documentos de texto que contienen, por ejemplo, "username", "file_name" y "table-name".
% también puede representar una palabra completa: el ejemplo siguiente busca los documentos de texto que contienen frases como "graphic function" y "query function".
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"% function"') = 1
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"_LOB"') = 1
Si desea buscar un término que contiene el carácter "%" o el carácter "_", debe anteponer al carácter el llamado carácter de escape y, después, identificar el carácter de escape utilizando la palabra clave ESCAPE.
Por ejemplo, para buscar "10% interest":
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"10!% interest" ESCAPE "!"') = 1
El carácter de escape en este ejemplo es "!".
Si busca "hard disk" tal como se muestra en el ejemplo siguiente, sólo encontrará los dos términos si son adyacentes y aparecen en el orden mostrado, sin tener en cuenta el tipo de índice que esté utilizando.
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"hard disk"') = 1
Para buscar términos en cualquier orden, como "data disks and hard drives", por ejemplo, utilice una coma para separar los términos:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '("hard", "disk")') = 1
Este es un ejemplo de un argumento de búsqueda que busca documentos de texto en el que aparecen los términos de búsqueda en la misma sentencia:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress" IN SAME SENTENCE AS "decompress"') = 1
También puede buscar más de dos palabras que aparezcan juntas. En el siguiente ejemplo, se efectúa una búsqueda de varias palabras que aparecen en el mismo párrafo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress" IN SAME PARAGRAPH AS "decompress" AND "encryption"') = 1
Este es un ejemplo de un argumento de búsqueda para encontrar los documentos de texto en los que el término Williams aparece en la subsección author de la sección play de los documentos estructurados. La estructura del documento se especifica por el modelo play que se describe en un archivo de modelos de documentos. Consulte el apartado Trabajar con documentos estructurados (soporte de secciones) para obtener más información.
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'MODEL play SECTIONS (play/author) "williams"') = 1
Para un índice lingüístico, puede flexibilizar las búsquedas buscando además de los términos de búsqueda que especifique, las palabras que tienen un significado similar. Por ejemplo, cuando busca la palabra "book", puede ser útil buscar también su sinónimo. Para hacerlo, especifique:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'SYNONYM FORM OF "book"') = 1
Cuando utiliza SYNONYM FORM OF, se supone que los sinónimos del término están conectados por el operador lógico OR, es decir, el argumento de búsqueda se interpreta como:
"book" | "article" | "volume" | "manual"
Los sinónimos están en un diccionario que se proporciona con DB2 Text Extender. El diccionario por omisión utilizado para los sinónimos siempre es US_ENGLISH, no el idioma especificado en los valores de configuración del texto.
Puede cambiar el diccionario para una consulta en particular especificando un idioma diferente. Este es un ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'SYNONYM FORM OF UK_ENGLISH "programme"') = 1
Consejo |
---|
No puede utilizar la palabra clave SYNONYM si hay caracteres de máscara en el término de búsqueda o si se utiliza NOT con el argumento de búsqueda. |
DB2 Text Extender ofrece un poderoso proceso lingüístico para realizar una búsqueda basándose en los términos de búsqueda que el usuario proporciona. Las funciones lingüísticas se aplican cuando el índice es lingüístico. Las funciones lingüísticas se describen en el Capítulo 15, Proceso lingüístico para los índices lingüístico y exacto.
Un ejemplo es una búsqueda de un plural como, por ejemplo, "utilities", y encontrar "utility". El plural se reduce a su formato base utility, utilizando un diccionario inglés, antes de que empiece la búsqueda.
Sin embargo, el diccionario inglés no contiene la información para reducir las variaciones de los términos en otros idiomas a su formato base. Para buscar el plural de un término en otro idioma debe utilizar el diccionario para ese idioma.
Si especifica GERMAN, por ejemplo, puede buscar "geflogen" (volado) y encontrar todas las variaciones de su formato base "fliegen" (volar)--no sólo "geflogen", si no también "fliege", "fliegt", etcétera.
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'STEMMED FORM OF GERMAN "geflogen"') = 1
Consejo |
---|
Cuando busque en documentos que no estén en inglés de EE.UU., especifique el idioma en el argumento de búsqueda sin tener en cuenta el idioma por omisión. |
Si especifica siempre el formato base de un término de búsqueda, en lugar de una variación del mismo, no es necesario que especifique un idioma.
Para entender porqué, considere lo que ocurre cuando se indexa el texto de la base de datos. Si está utilizando un índice lingüístico, se reducen todas las variaciones de un término a su formato base antes de que se almacenen los términos en el índice. Esto significa que, en la tabla DB2TX.SAMPLE, aunque el término "decompress" aparece en la primera entrada de la columna COMMENT, "decompression" aparece en la segunda entrada, el índice sólo contiene el formato base "decompress" e identifica este término (o sus variaciones) como si estuviese en las dos entradas.
Después, si busca el formato base "decompress", encontrará todas las variaciones. Sin embargo, si busca una variación como "decompression", no puede encontrarla directamente. Debe especificar un diccionario adecuado para la búsqueda, de modo que la variación pueda convertirse primero a su formato base.
Puede utilizar el operador booleano NOT para excluir de la búsqueda unos documentos de texto en particular. Por ejemplo:
("compress", "compiler") & NOT "DB2"
Cualquier documento que contenta el término "DB2" se excluye de la búsqueda de "compress" o "compiler".
No puede utilizar el operador NOT en combinación con IN SAME SENTENCE AS o IN SAME PARAGRAPH AS descritas en el apartado Búsqueda de términos en la misma sentencia o párrafo, tampoco puede utilizarlo con SYNONYM FORM OF descrito en el apartado Búsqueda de sinónimos de términos.
Sólo puede utilizar el operador NOT con una búsqueda primaria, es decir, no puede combinar con libertad los operadores &, | y NOT (consulte el apartado Sintaxis del argumento de búsqueda).
Ejemplo de utilización no permitida de NOT:
NOT("compress" & "compiler")
Lo permitido es:
NOT("compress" , "compiler")
La búsqueda "similar" busca palabras que estén escritas de manera parecida al término de búsqueda. Está disponible para índices Ngram.
Por ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'FUZZY FORM OF 2 "compress"') = 1
Esta búsqueda encontraría una aparición de la palabra incorrectamente escrita conpress.
El nivel de coincidencia, en el ejemplo "2", especifica el grado de exactitud. Se da soporte a cinco niveles, el nivel 1 proporciona la coincidencia inferior de aproximadamente el 20 por ciento y el nivel 5 proporciona la coincidencia más exacta de aproximadamente el 90 por ciento. Utilice una búsqueda similar cuando sea posible que haya palabras escritas incorrectamente en el documento, como es el caso de los documentos creados utilizando un dispositivo de Reconocimiento óptico de caracteres o entrada fonética.
La búsqueda de "límites" se ha desarrollado para el idioma coreano. Asegura que DB2 Text Extender respete los límites de la palabra durante la búsqueda. Por ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'BOUND "expresión-coreana"') = 1
La búsqueda de "sonido" busca palabras que suenen igual que el argumento de búsqueda. Es útil en los documentos que pueden contener palabras que suenen igual, pero que se escriban de forma diferente. El nombre alemán que se pronuncia my-er, por ejemplo, se escribe de varias formas.
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'SOUNDS LIKE "Meyer"') = 1
Esta búsqueda puede encontrar las apariciones de "Meyer", "Mayer" y "Maier".
La búsqueda en tesauro es otra de las poderosas funciones de ampliación del término de búsqueda de DB2 Text Extender. Los términos adicionales buscados se toman de un tesauro que el usuario crea, por lo que tiene control directo sobre los mismos. El usuario busca "base de datos", por ejemplo, y puede encontrar términos como "depósito" y "DB2".
Este tipo de búsqueda está pensado para áreas específicas de interés en las que se efectúan búsquedas frecuentes; un área en la que vale la pena invertir tiempo para crear un tesauro para producir resultados de búsqueda significativamente más eficaces.
Consulte el apartado Conceptos del tesauro para obtener más información y una descripción de cómo crear un tesauro. El ejemplo de la Figura 16 es un pequeño extracto de un tesauro sobre el tema de bases de datos. Se utiliza en los ejemplos siguientes para demostrar la sintaxis de la utilización de la ampliación del tesauro.
Este ejemplo toma el término "object relational database management system" y lo amplía, añadiendo todas las instancias de este término que se encuentran en el tesauro "myterms". Aquí, "DB2" se añade a la búsqueda.
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'THESAURUS "myterms" EXPAND "INST" TERM OF "object relational database management system"') = 1
El siguiente ejemplo toma el término "document management system" y lo amplía, añadiendo todos sus sinónimos. Sólo hay un sinónimo - "library".
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'THESAURUS "myterms" EXPAND "SYN" TERM OF "document management system"') = 1
La "búsqueda de texto libre" es una búsqueda en la cual el término de búsqueda se expresa como texto de formato libre. Una frase o una sentencia describe en idioma natural el tema que se ha de buscar. La secuencia de la palabras en una consulta de texto libre no es importante. Además, se da soporte a las llamadas afinidades léxicas. En la recuperación, son pares de palabras determinadas que aparecen en un término de consulta de texto libre y que aparecen en la colección de documentos, con una frecuencia mínima y a una distancia mínima. La distancia para los documentos en inglés es de cinco palabras.
Tenga en cuenta que no se da soporte al enmascaramiento de caracteres o de palabras para las series de búsqueda en un argumento de texto libre.
Por ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, 'IS ABOUT "everything related to AIX installation"') = 1
La búsqueda híbrida es una combinación de búsqueda booleana y de búsqueda de texto libre. Por ejemplo:
db2=>SELECT DATE, SUBJECT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"DB2" & IS ABOUT "everything related to AIX installation"') = 1