Recientemente me solicitaron el desarrollo de una busqueda en ASP – vbscript sobre una base de datos.
Criterio: Lo usuarios introducirán el nombre de la persona que buscan.
Base de datos: El nombre se encuentra almacenado completo en un campo (nombres y apellidos).
De forma básica lo que se hace es tomar el texto que introduce el usuario para realizar la busqueda y compararla con el campo en que esta almacenado el nombre utilizando una condición de tipo “LIKE”. Esto funcionaría perfectamente si el usuario introduce una sola palabra como criterio de búsqueda, sin embargo, si se utilizan 2 o más palabras funcionará adecuadamente solo si se introducen en el orden correcto.
Por ejemplo, supongamos que tenemos en nuestra base de datos el nombre Juan Alberto Perez Rivera.
Si un usuario busca Juan Alberto, Alberto Perez o Perez Rivera, va a obtener el resultado esperado, pero si el usuario busca Juan Perez, el resultado no nos mostrará a Juan Alberto Perez Rivera.
Si esto es correcto o incorrecto es una cuestión de que tan exacto queremos el resultado y cómo es más probable que los usuarios realicen sus busquedas. En este caso y en mi experiencia es muy común que sepamos el primer nombre y el apellido paterno de la persona que buscamos, por esto, mi objetivo fue realizar la búsqueda utilizando cada una de las palabras que el usuario introdujera como criterio para la busqueda.
Para lo anterior requerí dividir el texto que el usuario introduce en palabras para lo cual se utiliza la función “split” cuya sintaxis es:
split(texto,”delimitador”, repeticiones,tipo_comparación)
donde:
- texto es lo que queremos dividir
- delimitador es el caracter(es) que servirá para dividir las palabras en mi caso es el espacio ” “
- repeticiones es las veces que se va a dividir el texto, en mi caso son las veces que sea necesario para lo cual se utiliza -1
- tipo_comparación pues ser 0 ó 1. 0 es para una comparación binaria y 1 para una comparación de texto, en mi caso utilice 1, para que no importe sin introducen minusculas o mayusculas.
La función split nos regresa un arreglo con el número de elementos correspondiente a las palabras en que se dividió el texto, el arreglo inicia con el indice 0.
Bien, ahora ya tenemos las palabras separadas, pero ¿cuántas fueron? para esto necesitamos saber el tamaño del arreglo para lo que utilizamos la función “UBound(arreglo)“.
donde arreglo es el nombre del arreglo.
Ojo si la función nos regresa “1″ el arreglo tiene 2 elementos ya que recordemos que el indice del arreglo empieza en 0.
Con esto ya tenemos los datos necesarios para conformar la condición del query que enviaremos a la base de datos, en el cual compararemos cada elemento del arreglo con el campo de la base de datos.
Con esto encontraremos a Juan Alberto Perez Rivera sin importar si lo buscan con una, dos, tres o las cuatro palabras que conforman el nombre, ni el orden en que introduzcan las palabras.
Espero esta experiencia les sea de utilidad









Twitter Updates
Written by Luis Ortega
Topics: Programación