| |

Crear un buscador simple para tu página mediante PHP

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

Similar Posts