Saltar al contenido

¿Alguna forma de reducir el tamaño de los textos?

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 cierto I 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 un keyword-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 esto id en algún lugar entonces.

Necesitará tener una tabla para mantener las relaciones entre texts y keywords. Sería un many-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 o 60,000 de palabras como palabras clave o máximo 600,000700,000 palabras, si mantiene todo como una palabra clave. Entonces, simplemente puede adivinar que 50,000 palabras serían mucho menos que 10 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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *