La "búsqueda de texto libre" es una búsqueda en la que el término buscado se expresa como texto de formato libre. Una expresión o frase describe en lenguaje natural el tema que debe buscarse. El orden de las palabras en una consulta de texto libre no es relevante. Sin embargo, para un conjunto de términos de consulta, debe aparecer por lo menos uno de los términos en los documentos que se buscarán.
Tenga en cuenta que no se da soporte a los caracteres o palabras de máscara para series de búsqueda en un argumento de texto libre.
Por ejemplo:
SELECT AUTOR, TÍTULO, SCORE(COMENTARIOS, 'IS ABOUT EN_US "algo relacionado con dinosaurios"') FROM DB2EXT.TEXTTAB WHERE CONTAINS(COMENTARIOS, 'IS ABOUT EN_US "algo relacionado con dinosaurios"') = 1
Combinando la consulta con la función de búsqueda SCORE, la búsqueda también devolverá documentos que sólo contienen la palabra "algo".
Para familiarizarse con los ejemplos adicionales de sintaxis de búsqueda, utilice el archivo de entrada del procesador de línea de mandatos denominado search. Éste contiene ejemplos de las funciones de búsqueda de DB2 Net Search Extender que se ejecutan en la tabla de ejemplo.
Para ejecutar el ejemplo, utilice la sintaxis siguiente:
db2 -tvf search
Si la tabla y los índices no se han creado, utilice uno de los métodos siguientes:
Utilice la interfaz de búsqueda de procedimiento almacenado cuando la aplicación necesite un subconjunto del resultado de búsquedas de texto, pero no en una forma de alto rendimiento. No utilice el procedimiento almacenado si se necesitan todos los resultados o si se debe indexar un gran número de documentos. La razón principal es que muchas partes de la tabla de usuario se copian en la memoria y, en consecuencia, es necesario que haya una gran cantidad de memoria real disponible.
Puede utilizar el procedimiento almacenado para, en primer lugar, solicitar resultados de 0 a 20, a continuación de 21 a 40, y así sucesivamente, de forma similar a la navegación con el cursor. Si se combinan estas posibilidades del cursor con el uso de una antememoria (calculada durante la indexación), la búsqueda resultará extremadamente rápida, ya que no se necesitará ninguna unión.
Si va a utilizar el procedimiento almacenado, asegúrese de tener en cuenta las opciones siguientes:
A continuación se ofrece un ejemplo de una búsqueda de procedimiento almacenado:
db2 "call db2ext.textSearch('\"libro\"','DB2EXT','COMMENT',0,2,1,1,?,?)"
El primer parámetro es el término de búsqueda. La sintaxis es exactamente la misma que en las funciones de SQL. A continuación, especifique el nombre de índice y el esquema de índice. Si no ha enmascarado el nombre, se convierte a mayúsculas. Los dos números siguientes le proporcionan la probabilidad de obtener el resultado en fragmentos. Los dos valores de enteros siguientes especifican si se solicita información de resultado y coincidencia. Los dos últimos valores son valores de salida.
Consulte el Chapter 16, Función de búsqueda del procedimiento almacenado para obtener más detalles sobre los parámetros.
Nota |
---|
Si solicita conjuntos de resultados más grandes, necesitará un espacio de tabla de usuario. Si no hay ninguno disponible, cree un espacio de tabla. En el ejemplo siguiente se crea un espacio de tabla en una plataforma UNIX: db2 "create user temporary tablespace tempts managed by system using ('/work/tempts.ts')" En un entorno DB2 distribuido, debe especificar explícitamente un espacio de tabla para las tablas de administración en un solo nodo para el procedimiento almacenado y realizar llamadas explícitamente en este nodo. |
Utilice la función de valor de tabla SQL cuando implemente una interfaz pero no necesite que se devuelvan todos los resultados o no tenga toda la memoria real necesaria para utilizar la interfaz de procedimiento almacenado.
Hay dos funciones de valor de tabla SQL disponibles, las dos denominadas db2ext.textsearch. Una tiene parámetros adicionales para utilizarlos con la función db2ext.highlight. Consulte la sección Utilización de la función de resaltado para obtener más información.
La función de valor de tabla SQL le proporciona la misma interfaz de cursor que el procedimiento almacenado para obtener únicamente partes del resultado. Sin embargo, sigue siendo necesario unir los resultados con la tabla del usuario. Esto puede observarse en el ejemplo siguiente:
db2 "select docid , author, score from TABLE(db2ext.textsearch('\"libro\" ', 'DB2EXT','COMENTARIOS',3,2,cast(NULL as integer))) as t, db2ext.texttab u where u.docid = t.primkey"
Los valores siguientes los podría devolver una función de valor de tabla SQL:
--> primKey <tipo clave primaria única> la clave primaria --> score DOUBLE el valor del resultado del documento encontrado --> NbResults INTEGER el número total de resultados encontrados (el mismo valor para todas las filas) --> numberOfMatches INTEGER el número de coincidencias en el documento
Nota |
---|
Tenga en cuenta que sólo se permite una sola columna de clave primaria. Vea DB2EXT.TEXTSEARCH para obtener más detalles sobre los parámetros. |