EStoy haciendo (itnentando por lo menos) hacer un buscador en php y mysql.
Bueno, es para uso didactico, asique por eso lo hago en php y mysql.
Una vez que he cogido el codigo html de una direccion, y lo he tratado (quitado "stop words", quitado las etiquetas, etc..), vamos, una vez que tenga ya las palabras para guardarlas en la base de datos...
como creeis que es la mejor forma, o como lo hacen los robot existentes por la red, para almacenar todas las palabras en la base de datos?
Yo he pensado varias posibles soluciones pero no me convencen mucho:
Cita:
Solucion 1:
Tener una tabla Direcciones como:
Id_d Direccion
23 http://www.unadir.com/doc.html
18 http://www.otradir.com/doc2.html
Otra tabla con palabras que se van encontrando tal que:
Id_p Palabra
45 "perro"
67 "vaca"
Y otra tabla con la relacion direcciones-palabras
Id_d Id_p Frecuencia
23 45 8
23 67 5
18 45 2
Tener una tabla Direcciones como:
Id_d Direccion
23 http://www.unadir.com/doc.html
18 http://www.otradir.com/doc2.html
Otra tabla con palabras que se van encontrando tal que:
Id_p Palabra
45 "perro"
67 "vaca"
Y otra tabla con la relacion direcciones-palabras
Id_d Id_p Frecuencia
23 45 8
23 67 5
18 45 2
Cita:
Otra solucion seria:
Tener una tabla Direcciones como:
Id_d Direccion
23 http://www.unadir.com/doc.html
18 http://www.otradir.com/doc2.html
Otra tabla con los identificadores de dir y las palabras que tiene:
Id_p Palabra
23 "perro:vaca:granga:comer:..."
18 "vaca:cantaba:foto:..."
Tener una tabla Direcciones como:
Id_d Direccion
23 http://www.unadir.com/doc.html
18 http://www.otradir.com/doc2.html
Otra tabla con los identificadores de dir y las palabras que tiene:
Id_p Palabra
23 "perro:vaca:granga:comer:..."
18 "vaca:cantaba:foto:..."
La primera soluicon tiene de bueno que si buscas "perro" directamente miras si en la tabla con las palabras existe "perro", si no es asi, no existen resultados y si existe obtienes el identificador y coges ya las direcciones en que el campo Id_p coincida con el id de perro.
Pero claro Si tieenes que crear una tupla por cada palabra aparecida en una web, si una web tiene 10000 palabras, tienes que crear 10000 direcciones, y eso, para las x numero de webs que quieras almacenar, es un poco de locura.
Tambien tiene de bueno, que al meter en la tabla con la relacion solo dos numeros integer, pues no ocuparia tanto espacio como puede ocupar todo el texto como en la segunda relacion
La otra solucion tiene el inconveniente, que meter en un campo 10000 palabras de una web...pues puede salir un campo demasiaddo pesado como para estar cogiendo en cada consulta cada campo de cada registro que haya para hacer el LIKE...
¿Como creeis que se deberia almacenar? ¿o sabeis si alguna de estas posibillidades se pueden llevar a cabo? ¿como lo hacen los buscadores ya creados?
Estoy algo perdido, asique si me podeis decir lo que sea os lo agradeceria.
Ah, sabeis cuantas tuplas se pueden insertar en una tabla en mysql como maximo si es que hay maximo?