...
Cita:
... 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 búsquedas en páginas más visitadas.
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 búsquedas en páginas más visitadas.