Buscador simple en ASP mejorado

  • Por
Artículo que comenta como implementar una serie de mejoras en el buscador simple para ASP para que acepte criterios de búsqueda con palabras independientes y operadores para relacionarlas.
El buscador que se explica en el manual Buscador Simple para ASP se puede mejorar, como creo que ya comentamos, utilizando el script del artculo Crea tu propio buscador, que implementaba un sistema para que el sistema de bsqueda utilizase varias palabras clave y algunos operadores para relacionarlas, como el operador + o el operador espacio, que quieren decir que han de relacionarse las distintas palabras clave con la funcin lgica AND y OR respectivamente.

El objetivo de este artculo es realizar esa integracin de un sistema con el otro y la publicacin del script resultante, comentado en la medida de lo posible. Lo primero sera tener claros las dos fuentes de informacin con las que estamos trabajando, para lo que aconsejamos necesariamente su lectura comprensiva. Unimos los dos scripts

La pgina del buscador simple que tendremos que editar se llama buscar.asp. Para empezar, vamos a colocar las funciones que hay en el ejercicio Crea tu propio buscador en cualquier parte de buscar.asp, aunque preferiblemente en la parte de arriba. Estas funciones, por si alguien no las identifica, son:

function Sacar(cadena,campos)
Extrae cada uno de los campos del criterio de bsqueda introducido y los va relacionando segn los operadores que se han utilizado. Todo esto lo va volcando en una sentencia en lenguaje SQL.

function GeneraSql(cadena,tabla,campos)
Crea la sentencia SQL definitiva.

Las descripciones completas de estas funciones y la explicacin de sus acciones est, ms o menos realizada en el artculo Crea tu propio buscador.

Editamos el script de buscar.asp para construir una sentencia SQL mejorada

La lnea donde antes se construa la sentencia SQL (variable Temp.) la comentamos y la volvemos a hacer de otra manera.

Primero debemos crear un array con los campos de la tabla donde vamos a realizar las bsquedas. El array debe tener una posicin ms de las necesarias, porque si no nos fallar el ejemplo. Vamos a buscar en los campos "Des" y "pal" de la tabla, que contienen las descripciones y palabras clave de cada uno de los registros.

dim campos(3) 'el tamano del array debe superar en uno al numero de campos
campos(1)="Des"
campos(2)="pal"

Luego extraemos la cadena de bsqueda del formulario que estamos recibiendo
cadena=Request.form("palabra")

Creamos una variable con el nombre de la tabla de la base de datos donde hay que buscar.

tabla_bbdd="Tabla1"

Finalmente creamos la sentencia SQL realizando una llamada a la funcin GeneraSql comentada antes. Guardamos la sentencia SQL en la variable Temp, que era la variable donde antes se haba guardado la sentencia del script buscar.asp original.

Temp=GeneraSql(cadena,tabla_bbdd,campos)

Nota: He decidido no cambiar los nombres de las variables para que el ejemplo de buscar.asp siga funcionando sin problemas.

Ya est todo

Con los cambios indicados hasta ahora ya tenemos el ejercicio terminado. Ahora las bsquedas sern mucho ms complejas porque la sentencia SQL es mucho ms avanzada. Las posibilidades de este script se han multiplicado.

El resto del cdigo se deja como estaba. Al ejecutar la sentencia SQL guardada en la misma variable Temp, pero que ahora es ms avanzada se produce un recordset cuyo recorrido se realiza de la misma manera que antes.

He dejado la sentencia SQL a la vista, imprimindola en la pgina, para que cualquiera que ejecute el script pueda ver qu sentencia se est generando.

Para terminar, os ofrecemos la posibilidad de que descarguis el archivo buscar.asp modificado.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

Domi

25/9/2003
Muchísimas gracias, me ha funcionado de maravilla. Tengo sólo una pregunta, la tabla de mi base de datostiene 18.900 registros, la búsqueda se demora y es necesario realizar una búsqueda más rápida, ya organicé alfabéticamente la base, y si mejoró un poco, tal vez usteden saben otro truquito!! Saludos y sigan así :)

JOSE

28/2/2005
Funciona perfercto el buscador. Muchisimas gracias. Solo una consulta:
Cuando le digo que haga una busqueda de una palabra y le pongo un espacio antes o despues de esta, me da un error.
¿Existe alguna manera de solucionar esto?

Muchas gracias !!!

Carlos

01/7/2005
El buscador esta bien pero a mi parecer tiene una pequeña pega. Las busquedas que se obtienen con este metodo son del tipo:

SELECT * FROM busquedas WHERE( apartado1 Like '%palabra1%' OR apartado2 Like '%palabra1%' OR apartado3 Like '%palabra1%') AND ( apartado1 Like '%palabra2%' OR apartado2 Like '%palabra2%' OR apartado3 Like '%palabra2%')

Lo realmente interesante seria que buscar asi:

SELECT * FROM busquedas WHERE( apartado1 Like '%palabra1%' AND apartado1 Like '%palabra2%' AND apartado1 Like '%palabra3%') OR ( apartado2 Like '%palabra1%' AND apartado2 Like '%palabra2%' AND apartado2 Like '%palabra3%') OR ( apartado3 Like '%palabra1%' AND apartado3 Like '%palabra2%' AND apartado3 Like '%palabra3%');

¿Como seria el codigo para este tipo de busquedas?

bryan

11/1/2010
ami no me funciona
La verdad en que le buscador si me funciono pero cuando le agregue l scrip para mejorar lo me da un error asi """"" Script error detected at line 60.
Source line: Temp=GeneraSQL(cadena,base,campos)
Description: Type mismatch: 'GeneraSQL'
alguieb sabe como puedo corregirlo

bryan_campos

11/1/2010
ami nO me funciona
La verdad en que le buscador si me funciono pero cuando le agregue l scrip para mejorar lo me da un error asi """"" Script error detected at line 60.
Source line: Temp=GeneraSQL(cadena,base,campos)
Description: Type mismatch: 'GeneraSQL'
alguieb sabe como puedo corregirlo

bryan_campos

28/1/2010
NO se descarga el ARCHIVO
NO SE PUEDE DESCARGAR EL ARCHIVO DE L SCRIPT MEJORADO ,LO PODRIAN PONER PORFAVOR

guitarpendix

21/4/2010
No comienza la descarga
Intente descargar el buscador pero cuando estoy en la pagina de descarga, doy click en el enlace "descarga ya" y no ocurre nada