Importante duda sobre Consulta SQL AVANZADA
Skeletron:
Cita de: isseu
Y para que es este 'HASH'?
Por que no usas MD5 o SHA1?.. y te evitas tanto lio..ademas para procesar una cantidad asi de informacion, comparando bloque por bloque con cada registro... :silbar:...espero que tu servidor tenga el ordenador de la NASA o sino.. :xD
Si decis para que quieres usar le HASH se te puede ayudar mejor, o dar un enfoque diferente y mas viable a tu problema ;)
Saludos
Estoy dando un enfoque diferente...
Disminuiré MUCHO ese "500".. tal vez lo deje en menos de 250, y luego con otra tecnica capaz que a la mitad de 250...
Mira.. imagina que tengo un archivo .txt con gran cantidad de texto... de éste archivo, tomo cada X% una "muestra" de su texto de 8 letras (supongamos 8)... es como "tomar muestras" del interior del archivo... y guardo en MySQL el nombre del archivo (o si posicion en el disco duro) y luego a su derecha, escribo en diferentes campos, esos valores tomados por muestra...
Ahora supon que ya analicé tod mi Disco Duro y tengo en mi base de datos, todos los nombres de mis archivos con sus fragmentos de muestra..
En una aplicacion, creada por mi, le ingreso un archivo .txt de mucho tamaño tambien... la aplicacion hace EL MISMO SISTEMA DE MUESTREO a éste archivo.. cada exactamente el mismo PORCENTAJE con que hacía al DIsco Duro la muestra, tomará las muestras de éste ingresado....
Ahora tendras el CODIGO de éste archivo.. las x cantidad de muestras tomadas...
Y ahora tienes que COmparar los pedasos de muestra esos de tu archivo, con los pedasos de muestra que estan en la base de datos...
Aquellos archivos de la base de datos que coincidan en el 50% con el del archivo ingresado, se tienen que mostrar...
De paso agrego otra pregunta:
A esas 8 letras que tomaré como muestra muchas veces, las tengo que guardar en un sistema que me ocupe poco espacio.. el hexadecimal es el mejor?
Skeletron:
Cita de: isseu en 4 Agosto 2009, 23:38 pm
Si usas un long text (LONGTEXT), y cada tramo esta separado de ; y luego los separas (con php o lo que uses)
es decir:
noel=12345678;12345678;12345678;12345678......
y luego en tu codigo php (por ejemplo)
$array = split(':', $tramosunidos);
Eso implicaría "traer" a php todas las lineas de la abse de datos, y analizarlas... no sería MUYYYYYYYYYYYYY DEMASIADOOO LENTO?!?!?!?!?!?!
No hay una manera, o una query con un poco de logica, que me devuelva ya los resultados.. o sea.. que el propio SQL mire cuales coinciden en un X porcentaje..??
[u]nsigned:
Si el 'codigo' a guardar es igual o menor a 255 caracteres, podés usar la función levenshtein de PHP para obtener la diferencia entre ambas, ejemplo:
Código
<?
$p1 = "5d4f5A";
$p2 = "5A4F6a";
echo levenshtein($p1, $p2);//4
?>
En este ejemplo obtenemos 4, esta funcion es sensible a mayúsculas y minúsculas(CASE SENSITIVE). Función devuelve la cantidad de caracteres que hay que que sustituir, insertar o borrar para que $p1 se convierta en $p2, a esto se le llama distancia Levenshtein. Dicho de otra forma, esta cadena compara caracter por caracter, y si son diferentes aumentan la cuenta en 1 del resultado de dicha función.
Saludos
P.D.:Advertencia - mientras estabas escribiendo, una nueva respuesta fue publicada. Probablemente desees revisar tu mensaje.
[u]nsigned:
Cita de: Skeletron en 4 Agosto 2009, 23:45 pm
ay una manera, o una query con un poco de logica, que me devuelva ya los resultados.. o sea.. que el propio SQL mire cuales coinciden en un X porcentaje..??
No. A lo sumo con regexp podes obtener cadenas similares, pero no calcular la diferencia como con levenshtein de PHP. Y si ves que la cantidad de registros a analizares MUY extensa, podes ir haciendolo de a tramos con AJAX. Pero de cuantos estamos hablando?
Y por otro lado no veo la útilidad o proposito de esto.. :silbar: :)
Saludos
Skeletron:
Cita de: [u]nsigned en 4 Agosto 2009, 23:58 pm
Y por otro lado no veo la útilidad o proposito de esto.. :silbar: :)
Me parece que lo dejé claro en el inicio:
Citar
Señores.. les voy a comentar algo...
Para poder entender lo que les diga, tienen que calibrar su cerebro a NO DISCUTIR EL "PORQUE" DE LA INCOHERENCIA QUE VOY A HACER...
Y la tecnica de arriba no es lo que busco.. porque esas 8 letras tienen que ser EXACTAMENTE IGUALES para poder sumar 1 punto mas de "fragmentos" iguales..
Navegación
[#] Página Siguiente
[*] Página Anterior