Hay dos funciones de valor de tabla SQL disponibles, las dos denominadas db2ext.textsearch. Para utilizar la función db2ext.highlight, debe utilizar la función db2ext.textsearch con los parámetros numberOfHits y hitInformation adicionales.
En este ejemplo, se llama a la función db2ext.highlight para visualizar el documento entero sin resaltar ninguna de las coincidencias que la función db2ext.textsearch haya encontrado.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0 ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"superventas" | "paz" | "soldados" | "atención"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
El argumento de búsqueda devuelve el resultado siguiente:
DOCID HIGHLIGHT 2 Un superventas de New York Times sobre soldados en misión de paz denominados "Guardianes" que conciben un terrible plan para atraer la atención del mundo una vez finalizado su período de servicio. Se ha(n) seleccionado 1 registro(s).
Nota |
---|
En todos los ejemplos de db2ext.highlight, la función de tabla db2ext.textsearch busca cualquiera de los términos siguientes: "superventas", "paz", "soldados" o "atención". |
En este ejemplo, se llama a la función db2ext.highlight para visualizar el documento entero y resaltar todas las coincidencias que la función db2ext.textsearch haya encontrado.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 0, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"superventas" | "paz" | "soldados" | "atención"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
El argumento de búsqueda devuelve el resultado siguiente:
DOCID HIGHLIGHT 2 Un <bf>superventas</bf> de New York Times sobre <bf>soldados</bf> en <bf>misión de paz</bf> denominados "Guardianes" que conciben un terrible plan para atraer la <bf>atención</bf> del mundo una vez finalizado su período de servicio. Se ha(n) seleccionado 1 registro(s).
En este ejemplo, se llama a la función db2ext.highlight para visualizar un máximo de 10 partes (ventanas) del documento. El tamaño de cada ventana es 24, lo que representa aproximadamente 12 bytes de datos por cada parte de la coincidencia. Además, se resaltan las coincidencias que ha encontrado la función db2.textsearch.
select p.docid, db2ext.highlight(p.comment, t.hitinformation, ' WINDOW_NUMBER = 10, WINDOW_SIZE = 24, TAGS = ("<bf>", "</bf>" ) ') as highlight from DB2EXT.TEXTTAB p, table (db2ext.textsearch('"superventas" | "paz" | "soldados" | "atención"', 'DB2EXT', 'COMMENT', 0, 20, cast(NULL as INTEGER), 10)) t where p.docid = t.primkey and p.docid = 2
El argumento de búsqueda devuelve el resultado siguiente:
DOCID HIGHLIGHT 2 York Times <bf>superventas</bf> sobre <bf>soldados</bf> ... <bf>soldados</bf> en misión de <bf>paz</bf> denominado "Gua ... la <bf>atención</bf> del mundo una vez ... Se ha(n) seleccionado 1 registro(s).
La primera coincidencia encontrada es <bf>superventas</bf> y esta coincidencia determina la primera ventana. La segunda coincidencia, <bf>paz</bf> sólo está a 8 bytes de la primera coincidencia y se incluye totalmente en la primera ventana. La tercera coincidencia, <bf>soldados</bf>, queda fuera de la primera ventana y determina una ventana nueva. Puesto que la segunda coincidencia, <bf>paz</bf>, sólo está a 2 bytes de la parte izquierda de la coincidencia <bf>soldados</bf>, también se incluye en la segunda ventana y se resalta. La cuarta coincidencia, <bf>atención</bf>, queda fuera de la segunda ventana y, por lo tanto, determina una ventana nueva. Puesto que el tamaño de esta ventana no contiene ninguna coincidencia anterior ni adicional, la ventana sólo contiene los datos alrededor de la coincidencia.
Adicionalmente, como que no se ha especificado WINDOW_SEPARATOR, el separador de ventanas por omisión, " ... " se utiliza para separar las tres ventanas de documentos.
Nota |
---|
Para garantizar que el rendimiento sea alto al utilizar la función db2ext.highlight, el usuario debería limitar los resultados de la búsqueda en la función de valor de tabla db2ext.textsearch. |
Vea DB2EXT.HIGHLIGHT para obtener más detalles sobre los parámetros.
En aquellos casos en los que necesite crear un índice de texto en más de una columna, la manera más fácil de hacerlo es utilizando la función escalar de SQL y combinando las búsquedas en esas columnas. Esto puede observarse en el ejemplo siguiente:
SELECT AUTOR,TÍTULO FROM DB2EXT.TEXTTAB WHERE CONTAINS(COMENTARIOS, '"libro"')=1 and CONTAINS(AUTOR,'"Mike"')=1
Para una función de valor de tabla será más difícil ya que es posible que necesite una unión por razones de rendimiento. Otra posibilidad con la función de valor de tabla es utilizar una vista y combinar las columnas de tabla en una columna de vista para crear un índice de texto. De esta manera, evitará hacer dos llamadas diferentes de búsqueda de texto.
Es posible que la combinación de columnas de texto proporcione una mejora en el rendimiento. No obstante, también depende de manera muy importante de los requisitos de búsqueda individuales.
Para mejorar el rendimiento durante la búsqueda, tenga en cuenta las cuestiones siguientes:
Nota |
---|
Para obtener los consejos más recientes para mejorar el rendimiento, visite el sitio Web de DB2 Net Search Extender: www.ibm.com/software/data/db2/extenders/netsearch/index.html |
DB2 Net Search Extender permite indexar y realizar búsquedas en campos de texto o numéricos como, por ejemplo, el título, el autor o la descripción de un documento estructurado. Los documentos pueden estar en formato XML, Outside In o HTML o contener identificadores definidos por el usuario (GPP).
Utilice los identificadores de marcaje y sus nombres de campo en un modelo de documento para definir qué campos de los documentos están indexados y, por consiguiente, disponibles para realizar búsquedas. El nombre del campo (también conocido como nombre de sección) se puede utilizar en consultas sobre este campo.
Para poder realizar búsquedas en estos campos debe especificar un ARCHIVO DE MODELOS Y FORMATOS al crear el índice de texto que contenga los documentos. Vea CREATE INDEX para obtener más información.
Para obtener más información sobre la creación y definición de modelos de documento, vea el Chapter 17, Soporte de documentos estructurados.
Para conocer la sintaxis de los modelos de documento, consulte el Apéndice G, Consulta de modelos de documento.
Se puede ampliar una consulta buscando además del término de búsqueda específico, los términos relacionados con el mismo. Puede automatizar este proceso utilizando las funciones de Net Search Extender para buscar y extraer los términos de búsqueda relacionados de un diccionario tesauro.Un diccionario tesauro es un vocabulario controlado de términos relacionados semánticamente que suele cubrir el área de un tema determinado.
DB2 Net Search Extender permite expandir un término de búsqueda añadiendo términos adicionales de un diccionario tesauro que se haya creado anteriormente. Consulte el Chapter 14, Sintaxis de los argumentos de búsqueda para averiguar cómo utilizar la expansión del diccionario tesauro en una consulta.
Para crear un diccionario tesauro para su utilización en una aplicación de búsqueda se necesita un archivo de definiciones de diccionario tesauro que debe compilarse en un formato interno, el diccionario tesauro.
Este capítulo describe:
Un diccionario tesauro se estructura como una red de nodos enlazados entre sí mediante relaciones. Esta sección describe las relaciones predefinidas de Net Search Extender y cómo definir sus propias relaciones.
Ésta es una descripción de la sintaxis de un archivo de definición de diccionario tesauro y de las herramientas que se utilizan para compilarlo en un diccionario tesauro.
Un diccionario tesauro se estructura como una red de nodos enlazados entre sí mediante relaciones. Net Search Extender busca un término en un diccionario tesauro empezando por el término, después, sigue un recorrido a través de las relaciones del término y entrega los términos encontrados en el proceso.
Figura 28. Ejemplo de la estructura de un diccionario tesauro
Las entradas del diccionario tesauro se conectan mediante relaciones. Los nombres de relaciones, como BROADER, le permiten restringir una ampliación a ciertas líneas nombradas en la jerarquía de la relación. Algunas relaciones son bidireccionales, otras son unidireccionales; BROADER, por ejemplo, es el nombre de una relación unidireccional.