Si encuentras algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes aplicar el código al trabajo final.
Solución:
Tenga en cuenta que tampoco base64
ni encryption
fue diseñado para la reducción de string longitud. Lo que deberías mirar es la compresión y creo que deberías mirar gzcompress
y gzdeflate
Ejemplo usando la versión decodificada de su texto
$original = "In other cases, some countries have gradually learned to produce the same products and services that previously only the U.S. and a few other countries could produce. Real income growth in the U.S. has slowed." ; $base64 = base64_encode($original); $compressed = base64_encode(gzcompress($original, 9)); $deflate = base64_encode(gzdeflate($original, 9)); $encode = base64_encode(gzencode($original, 9)); $base64Length = strlen($base64); $compressedLength = strlen($compressed) ; $deflateLength = strlen($deflate) ; $encodeLength = strlen($encode) ; echo "
"; echo "Using GZ Compress = " , 100 - number_format(($compressedLength / $base64Length ) * 100 , 2) , "% of Improvement", PHP_EOL; echo "Using Deflate = " , 100 - number_format(($deflateLength / $base64Length ) * 100 , 2) , "% of Improvement", PHP_EOL; echo "";
Producción
Using GZ Compress = 32.86% Improvement Using Deflate = 35.71% Improvement
Base64 no es compresión ni encriptación, es codificación. Puede pasar datos de texto a través del algoritmo de compresión gzip (http://php.net/manual/en/function.gzcompress.php) antes de almacenarlos en la base de datos, pero eso básicamente hará que los datos no se puedan buscar a través de consultas MySQL.
Bien, ¡es realmente desafiante! (¡al menos para mí!) … ¡tiene 10 TB de texto y desea cargarlo en su base de datos MySQL y realizar una búsqueda de texto completo en las tablas!
Tal vez algunos métodos de agrupamiento o algunas formas complicadas de rendimiento en un buen hardware funcionen para usted, pero si ese no es el caso, puede que le resulte interesante.
Primero, necesita una secuencia de comandos para cargar estos 50 mil millones de fragmentos de texto uno tras otro, dividirlos en algunos
words
y tratarlos como una palabra clave, eso significa darles una identificación numérica y luego guardarlos en una tabla. por ciertoI am piece of large text.
seria algo como esto:[1: piece][2: large][3: text]
y
I'm the next large part!
sería:[4: next][2: large][5: part]
por cierto palabras
I, am, of, I'm, the
más., !
ha sido eliminado porque no hacen nada por lo general en unkeyword-based
búsqueda. Sin embargo, también puede mantenerlos en sus palabras clave. arraysi lo desea.Dale al texto original una identificación única. Puedes calcular el
md5
del texto original o simplemente dando una identificación numérica. guardar estoid
en algún lugar entonces.Necesitará tener una tabla para mantener las relaciones entre
texts
ykeywords
. Sería unmany-to-many
estructura como esta:[text_id][text] 1 -> I am piece of large text. 2 -> I'm the next large part! [keyword_id] 1 -> piece 2 -> large 3 -> text 4 -> next 5 -> part [keyword_id][text_id] 1 -> 1 2 -> 1 3 -> 1 4 -> 2 2 -> 2 5 -> 2
Ahora, imagine cuánto sería más fácil (¡especialmente para MySQL!) si alguien buscara
large text
!Por lo que encontré en la red, se trataría de
50,000
o60,000
de palabras como palabras clave o máximo600,000
–700,000
palabras, si mantiene todo como una palabra clave. Entonces, simplemente puede adivinar que 50,000 palabras serían mucho menos que10 TB
de datos basados en texto.¡Espero que te ayude, y si necesitas, puedo explicarte más o ayudarte a que funcione de alguna manera! 🙂
Eres capaz de confirmar nuestro ensayo dejando un comentario y dejando una puntuación te estamos agradecidos.
¡Haz clic para puntuar esta entrada!(Votos: 0 Promedio: 0)Utiliza Nuestro Buscador