sql >> Base de Datos >  >> RDS >> Mysql

¿Puedo predecir qué tan grande será mi índice de Zend Framework? (y algunas preguntas rápidas)

SOLR es básicamente un contenedor de Apache Tomcat que implementa una interfaz REST para consultar un índice de Apache Lucene. Sí, debe poder ejecutar una aplicación Java en su servidor web. Este es un problema que debe resolver con su proveedor de alojamiento.

Los clientes que usan su aplicación web no necesitan ejecutar Java. Su aplicación PHP podría realizar una consulta REST al servicio SOLR y formatear los resultados en HTML. Un cliente solo ve la salida HTML; nunca necesita saber que los datos provienen de un servicio implementado en Java.

Zend_Search_Lucene es una implementación de PHP puro que se supone que funciona de manera idéntica a Apache Lucene. La solución Zend incluso usa un formato de archivo de índice idéntico. Entonces, en cuanto al almacenamiento, deberían ser iguales.

Usé Java Lucene para indexar el volcado de datos de StackOverflow (octubre de 2009). Indexé 1,5 millones de filas, incluido aproximadamente 1 giga de datos de texto. El índice de Lucene ocupaba 1323 MB, mientras que el índice MySQL FULLTEXT de los mismos datos ocupaba solo 466 MB.

Usando SQL LIKE predicados en lugar de cualquier solución de indexación de texto completo no requiere espacio, por supuesto, porque de todos modos no puede hacer uso de un índice convencional. Pero en mis pruebas usando LIKE era unas 200 veces más lento que Java Lucene, que a su vez era un 40 % más lento que un índice MySQL FULLTEXT sobre los mismos datos.

Vea mi presentación reciente sobre soluciones de indexación de texto completo con MySQL:

http://www.slideshare.net/billkarwin /práctica-búsqueda-de-texto-completo-con-my-sql

No sorprende que no pueda igualar el rendimiento y la escalabilidad de la tecnología Java Lucene. La ventaja de PHP como lenguaje es aumentar la eficiencia del desarrollo, no la eficiencia del tiempo de ejecución.

actualización: Acabo de intentar crear un índice usando Zend_Search_Lucene . Crear un índice es mucho más lento con PHP que con la tecnología Java Lucene, por lo que solo indexé 10 000 documentos. Esto llevó casi 15 minutos, lo que haría que se necesitaran unas 36 horas para indexar toda la colección. Compare esto con Java Lucene, que en mi prueba indexó la colección completa de 1,5 millones de documentos en menos de 7 minutos.

El tamaño del índice que creé con Zend_Search_Lucene es de 8,75 MB. Extrapolando este 150x, estimo que el índice completo sería de 1312,5 MB. Así que concluyo que Zend_Search_Lucene crea un índice de aproximadamente el mismo tamaño que el índice producido por Java Lucene. Esto es como se esperaba.