Explicación del Buscador de {El Código}

 

1. La base de datos

Nuestra base de datos está constituida por un array, al que hemos llamado BaseDatos. Los elementos de este array son cadenas que deben contener la información necesaria para describir y localizar cada página de nuestro sitio que queramos sea localizable por el script de búsqueda. Por tanto, cada elemento del array debe almacenar:

  • La ruta física y nombre de la página.
  • El título que aparecerá en la pagina de resultados y que coincide con el título del documento.
  • La descripción del documento que aparecerá en la pagina de resultados.
  • Las palabras clave del documento.

Para que esta información sea interpretada por el script, definimos un formato para cada elemento del array. En nuestro formato, los 5 datos anteriores aparecen separados por el caracter ";". Además, para reducir el tamaño de la base de datos, la extensión de los nombres de las páginas no se incluye, y se presupondrá que es siempre .html. Un ejemplo de base de datos para 2 páginas sería:

var BaseDatos = new Array(
"tutoriales/javascript;Tutorial de JavaScript;Introducción al lenguaje JavaScript;tutoriales,manuales,documentacion",
"tiralineas/ventanas;Asistentes de creación de código de creación de ventanas;Asistente para la creación de ventanas con JavaScript;ventanas,windows;
)

Esta base de datos indexa 2 páginas:

  • La página javascript.html, que está en la carpeta tutoriales.
  • La página ventanas.html, que está en la carpeta tiralineas.

 

2. Implementación de la búsqueda

El script que implementa el buscador de {El Código} basa su capacidad de búsqueda en las funciones avanzadas que incorpora JavaScript para la manipulación de cadenas. Entre ellas se incluye el método search(), que permite buscar conicidencias con patrones basados en expresiones regulares dentro de una cadena. Este método es el que utilizamos en la función Buscaclave() para obtener el índice del elemento de un array que contiene la palabra clave de búsqueda:

for (x = desde; x < longitud; x++) {
        if ( (BaseDatos[x].search(clave1) != -1) || (BaseDatos[x].search(clave2) != -1) ) {
            index = x
            break
        }
    }

La función anterior sólo obtiene el índice de un elemento que contenga la clave. Pero un buscador debe obtener todas las páginas que contengan la información buscada. La lógica que permite obtener todos los índices se basa en un bucle do ... while que se repite hasta que no se encuentre coincidencia. En cada iteración, la búsqueda comienza en el índice siguiente al de la entrada encontrada en la iteración anterior:

var indice = -1
do {
        indice = Buscaclave(FormBusqueda, indice + 1)
        if (indice != -1) {
            CreaEntradas(indice)
            totales++
        }
    } while (indice != -1)

Como se observa, la función CreaEntradas() es la encargada de construir la página de resultados.

 

3. Construyendo la página de resultados

La función CreaEntradas() construye la página de resultados a partir de los datos obtenidos de los elementos de la bae de datos cuyo índice devuelve Buscaclave(). CreaEntradas() devuelve una variable de tipo cadena con la página.

La extracción de los datos de cada elemento de la base de datos se realiza utilizando otra de las funciones que incorpora JavaScript 1.2 para el manejo de cadenas: split(). Este método del objeto string permite dividir una cadena en partes según un separador. El resultado es una array de cadenas que contiene cada una de las partes:

CadenasEntrada = BaseDatos[indice].split(";")

CadenasEntrada[0] será el nombre de la página HTML (con la ruta y sin la extensión), CadenasEntrada[1] el título, y finalmente, CadenasEntrada[2] será la descripción. Cada documento localizado tendrá un código HTML construido de la siguiente forma:

Entradas += '<p><a href="' + CadenasEntrada[0] + '.html" target="_self">' + CadenasEntrada[1] + '</a><br>\n'
Entradas += CadenasEntrada[2] + '</p>\n'

Como se observa, es muy sencillo modificar el aspecto visual de la página de resultados, cambiando el código HTML de esta variable.

La página completa tendrá un encabezamiento y un pie de página, que se añadirán a esta variable Entradas para formar una variable que contendrá toda la página, y que se ha llamado Pagina.

 

4. Mostrando la página de resultados

El triple salto mortal de nuestro script lo realiza la función MuestraPagina(), encarda de cargar en la ventan del navegador la página que hemos alamacenado en la variable Pagina y que contiene la página de resultados:

function MuestraPagina(Pagina) {
    //muestra el contenido del display
    window.document.open()
    window.document.write(Pagina)
    window.document.close()
}

Esta función produce la sensación de la carga de una nueva página. Realmente lo que se tiene es una página resultado del procesamiento de un script JavaScript.

 

Scripts y código de ejemplo