Post by SneakerEstoy interesado en desarrollar un buscador tipo "google" :) vamos que
funcione parecido ya que obviamente no llegaré a tanto :).
Puedes basarte en motores de bases de datos que implementen búsquedas
como los campos fulltext de mysql.
Post by SneakerHe estado viendo información por internet y no me ha quedado muy claro.
Quizá necesites conocimientos sobre árboles de búsqueda (o búsquedas
binarias) y bases de datos.
Post by SneakerEl proyecto lo quiero colgar en una máquina Linux por lo que entiendo que
el lenguaje a utilizar bien será en C o en Perl, así que agradecería si
alguien puede orientarme un poco.
Depende de la complejidad de tu "buscador" necesitarás:
* Spider: Es el encargado de visitar las webs y obtener el contenido y
los enlaces que seguir.
* Motor de base de datos: En ella se guarda la información contenida
en cada web de forma que se usan árboles o índices por palabras, etc
que faciliten luego la búsqueda por palabras.
* Motor de búsqueda: Una vez que tienes todo en la base de datos luego
tienes que hacer la búsqueda (agrupaciones por "", símbolos + y - para
que aparezcan o no ciertas palabras en los resultados, etc).
Tanto el motor de base de datos como el de búsqueda viene ya
implementado en mysql (por ejemplo) y te aconsejo que lo uses.
Si lo que realmente quieres es crearte el motor tú mismo entonces
deberías estudiar muuuucho mucho sobre el tema.
Un ejemplo de motor de base de datos:
Metemos dos documentos HTML en la base de datos:
doc1.html -> "Hola, esta es la página primera."
doc2.html -> "Hola, esta es la segunda página."
Al introducirlas creamos en la tabla "urls":
1 - http://www.miweb.com/doc1.html - Hola, esta es la página primera.
2 - http://www.miweb.com/doc2.html - Hola, esta es la segunda página.
Donde 1 y 2 son las claves primarias. Opcionalmente se pueden agrupar
por dominios para facilitar búsquedas por dominios (como la opción
site: de google).
en la tabla "palabras" tenemos:
1 - hola
2 - esta
3 - es
4 - la
5 - página
6 - primera
7 - segunda
Cada vez que encontramos una palabra que no tenemos en la base de
datos la añadimos.
Luego hace falta crear las referencias de cada palabra a cada
documento en una tabla llamada (por ejemplo) "palabrasxurl":
1 - 1 - 1
2 - 2 - 1
3 - 3 - 1
4 - 4 - 1
5 - 5 - 1
6 - 6 - 1
7 - 1 - 2
8 - 2 - 2
9 - 3 - 2
10 - 4 - 2
11 - 7 - 2
12 - 5 - 2
Donde la primera columna sería la clave primaria, la segunda sería la
referencia a la clave de la tabla "palabras" y la tercera sería la
referencia a la clave de la tabla "urls". De esta forma metemos una
referencia por cada palabra que aparece en cada url. Hacemos índice el
campo que hace referencia a las palabras para acelerar las posteriores
búsquedas de palabras.
Luego debes programarte el motor de búsqueda para que vaya buscando
las palabras y vaya puntuando las urls que las contienen (por cada
palabra que coincida le das una puntuación).
En buscadores reales como google las puntuaciones cambian si las
palabras son encontradas en un encabezado (h1, h2, etc), en el título
de la página, etc...
Un saludo y espero que esto arroje luz sobre el asunto y lo veas ahora
más claro.
--
Óscar Javier García Baudet
LinaresDigital
http://redstar.linaresdigital.com/