Estimado Juan:No se como lo hara Google, que tengo entendido tienen un sistema de indexado de contenidos especialmente desarrollados por ellos, que por supuesto no podes instrumentarlo con tablas dbf.Trabajo en el desarrollo de sitios web, utilizando mySQL (podría ser postgress, sql server, oracle, etc.). Estos motores de datos tienen un tipo de index que en el caso de mysql se llaman fulltext, este indice puede abarcar varios camposEn este indice, que indexa palabras, puede hacer una busqueda con un comando especial (función mas bien) dentro del where, y además el motor tiene la capacidad de indicarte (con otra función) que tan acertado es la selección.Ademas permite hacer busquedas por palabras parciales, incluir palabras, excluirlas, obligarlas, etc. tal o parecido a lo que hace google.
Hola, no creo que google tenga cientos y cientos de tablas para la busqueda de paginas, yo creo que solo debe tener "una principal", donde estan indexadas (ver mi significado de indexadas mas adelante :P ) y alli apuntan a la url de la pagina que contiene la busqueda.
Es lo mismo que pensaba
, no se mucho del tema, si tienes enlaces para buscar dentro de la web para informarme mas del tema, te agradeceria
De como manejarlo por medio de palabras asi como tu estructura propuesta "cPalabra C(64), cTabla C(32), cClavePrimaria c(15)" es practicamente lo primero que se me vino a la cabeza. El problema es que solo manejaria busquedas a nivel de 1 palabra
Entonces pensando un poquito mas se me vino a la mente manejar tablas como:
cPalabra C(64), cPalabra02 C(64), cPalabra03 C(64), cPalabra04 C(64), cTabla C(32), cClavePrimaria c(15)
Para busquedas de mas de una palabra, pero el diccionario seria enorme
Entonces se me ocurre una tabla algo asi:
PALABRAS: cClave(10), cPalabra C(64)
Y la otra
ENLACES : cClave(10), cClave02(10), cClave03(10), cClave04(10), cClave05(10), cClave06(10), cTabla C(32), cClavePrimaria c(15)
En donde podria combinar hasta busquedas por 6 palabras dentro de un registro
El campo cClave seria un correlativo de palabras a procesar (solo con el fin de abreviar las 64 letras y posteriormente hacer busquedas, pueden ser menos caracteres aunque 10 caracteres llegas facil a 9mil millones de palabras)
El indice CDX aguanta hasta aproximadamente 250 caracteres, osea 25 palabras usando a 10 caracteres, o 4 palabras a 60 caracteres, me conformaria con 6 palabras a 10 caracteres.
Antes de grabar en la tabla ENLACES, las 6 palabras las ordenaria segun su cClave para que cuando haga las busquedas no importe el orden que haya puesto las palabras a buscar, siempre encuentre los mismos enlaces y los agrupe de una manera adecuada.
Y teniendo estas 2 tablitas haria lo siguiente:
- Separar las palabras a buscar
- Buscar su cClave, en caso que no este en la tabla PALABRAS Crearlas, ikgualmente obtener su cClave
- Ordenar las 6 palabras en m.cClave, m.cClave02, m.cClave03, m.cClave04, m.cClave05, m.cClave06
- Hacer un SEEK concatenando las 6 palabras y obtener los 10 primeros o usar un SET KEY
Me encantan estos comandos porque son rapidos, y directo a lo que necesito, cualquier query demora mas, cuando hablamos de tablas grandes
Y cuando te refieres a:
"O sea que lo que importa aca es como creas el diccionario (no creo que te afecte mucho el tiempo de inserción, actualización de registros, puede que tarde un monton, la creación inicial, sobre todo si ya tenes muchos registros)."
Si tienes razon, tambien lo habia pensado, por eso mi ejemplo se basaba en una sola tabla, la idea es ponerla a funcionar y despues aplicarla a todo el sistema, obviamente generar una rutina en donde le das las tablas a procesar y se encarga de armar las tablas de palabras, que demorarian regular. Pero una vez armada, la busqueda seria rapida.
Si tienes mas info para buscar en la web seria de ayuda, a veces me aburro programando, pero cuando se me vienen cositas asi a la cabeza, me entretendo haciendolas, o muriendo en el intento
Saludos.
Juan Moreyra
Subject: [Mundo Visual FoxPro] Re: Busqueda en Visual Foxpro Tipo Google Alguien lo ha hecho?