Algo fundamental para una página web es el uso de un buscador para acceder al contenido deseado de forma sencilla. Hace tiempo que andaba buscando este artÃculo y gracias a dzone lo he encontrado.
Se trata de crear un script en PHP para crear un buscador en nuestro sitio web. Para ello primero tendremos que crear un estructura en la base de datos para almacenar la relación entre palabras y páginas. Se crearán tres tablas, una para almacenar las páginas, otra para almacenar las palabras y otra para almacenar la relación entre páginas y palabras.
En segundo lugar deberemos indexar las páginas, usando un script que pasándole una URL, se la baje, le elimine todas las etiquetas HTML, la separe en palabras y guarde todos los datos en las tablas.
Por último crear una página para realizar la búsqueda, un sencillo formulario y una consulta a la BD nos devolverá una lista de páginas que contiene dicha palabra.
La verdad es que más simple no puede ser, y lógicamente no parece muy óptimo. Se le podrÃan hacer varios ajustes al script, como por ejemplo crear una lista de palabras “tabú”, las cuales no indexará (preposiciones, artÃculos). También en la tabla de relaciones entre páginas-palabras se le podrÃa incluir la posición de la palabra, asà si queremos buscar dos palabras seguidas, poder localizar mejor estos casos. Otra opción serÃa localizar las etiquetas HTML de cabeceras (h1, h2, …) de la página, las etiquetas para resaltar texto (strong, em, b, i, u) y darle una mayor importancia o prioridad a esas palabras en la tabla de relaciones, asà los resultados que nos devuelva la consulta, los podemos ordenar por prioridad, y no tener que encontrarnos entre los primeros resultados páginas que poco tienen que ver con lo que buscamos simplemente porque contienen la palabra. Y por último, se me ocurre que en la tabla de páginas se le podrÃa añadir un campo que indicara el número de visitas que recibe, priorizando las busquedas en páginas más visitadas.
Este método no creo que sea el mejor, y seguro que hay algoritmos más optimos, pero creo que motores de búsqueda implementados en algunos CMS como por ejemplo WordPress son peores aún. Por ejemplo WordPress busca la palabra en cada post escrito y almacenado en la BD. Y si el CMS ya usa expresiones regulares peor aún, porque aún lo mucho que me gustan, si que es cierto que consumen muchos recursos. Asà les ha podido pasar a algunos blogs que han tenido que usar la búsqueda mediante Google en vez de la que incluye su CMS.
Algo que también estarÃa muy bien serÃa dotar al motor de la capacidad de ignorar acentos, asà si buscamos “cancion” nos deberÃa devolver los mismos resultados que si buscamos “canción”. Con el método explicado serÃa relativamente sencillo, ya que solo habrÃa que almacenar las palabras en la tabla de palabras sin acento y luego al ser enviada por el buscador, quitarle los acentos para que se busque sin ellos.
Building a Simple Search Engine with PHP
VÃa / dzone