Cuando un argumento de búsqueda encuentra demasiadas apariciones, a menudo es útil reducir o redefinir la búsqueda combinando el argumento de búsqueda inicial con un segundo argumento de búsqueda en una relación AND booleana.
Puede redefinir los resultados de la búsqueda sin utilizar la función REFINE, almacenando los resultados en una tabla y realizando una nueva búsqueda en esa tabla. Sin embargo, dependiendo del número de términos calificados, este método es menos eficaz que almacenar el último argumento de búsqueda y utilizar REFINE.
Los pasos siguientes muestran cómo se realiza una búsqueda y, después, se redefine utilizando la función REFINE. La función REFINE devuelve un argumento de búsqueda que es una combinación de AND booleano y sus dos parámetros de entrada. El argumento de búsqueda combinada devuelto por REFINE es un valor de tipo LONG VARCHAR.
Cree la tabla PREVIOUS_SEARCHES para que contenga los argumentos de las búsquedas que ya se han realizado.
db2=>CREATE TABLE PREVIOUS_SEARCHES (step INT, searchargument LONG VARCHAR)
![]() |
Busque la palabra "compress" en la tabla de ejemplo.
db2=>SELECT COMMENT FROM DB2TX.SAMPLE WHERE DB2TX.CONTAINS (COMMENTHANDLE, '"compress"') = 1
Inserte el argumento de búsqueda en la tabla PREVIOUS_SEARCHES para utilizarlo en pasos posteriores.
db2=>INSERT INTO PREVIOUS_SEARCHES VALUES (1, '"compress"')
![]() |
Suponiendo que la búsqueda devuelva demasiados documentos de texto, redefina la búsqueda combinando el término que ha buscado anteriormente con la palabra "compiler" utilizando la función REFINE.
db2=>WITH LAST_STEP(STEP_MAX) AS (SELECT MAX(STEP) FROM PREVIOUS_SEARCHES), LAST_SEARCH(LAST_SEARCH) AS (SELECT SEARCHARGUMENT FROM PREVIOUS_SEARCHES,LAST_STEP WHERE STEP = STEP_MAX) SELECT COMMENT FROM DB2TX.SAMPLE, LAST_SEARCH WHERE DB2TX.CONTAINS(COMMENTHANDLE, DB2TX.REFINE(LAST_SEARCH, '"compiler"')) = 1
Inserte el argumento de búsqueda redefinido en la tabla PREVIOUS_SEARCHES para utilizarlo en pasos posteriores.
db2=>INSERT INTO PREVIOUS_SEARCHES WITH LAST_STEP(STEP_MAX) AS (SELECT MAX(STEP) FROM PREVIOUS_SEARCHES) SELECT STEP_MAX+1, DB2TX.REFINE(SEARCHARGUMENT, '"compiler"') FROM PREVIOUS_SEARCHES, LAST_STEP
![]() |
Puede repetir este paso hasta que el número de documentos de texto encontrados sea lo suficientemente pequeño.