Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Posso prever o tamanho do meu índice Zend Framework? (e algumas perguntas rápidas:s)


SOLR é basicamente um contêiner Apache Tomcat que implementa uma interface REST para consultar um índice Apache Lucene. Sim, você precisa ser capaz de executar um aplicativo Java em seu servidor web. Este é um problema para você resolver com seu provedor de hospedagem.

Os clientes que usam seu aplicativo Web não precisam executar Java. Seu aplicativo PHP pode fazer uma consulta REST ao serviço SOLR e formatar os resultados em HTML. Um cliente vê apenas a saída HTML; ele nunca precisa saber que os dados vieram de um serviço implementado em Java.

Zend_Search_Lucene é uma implementação de PHP puro que deve funcionar de forma idêntica ao Apache Lucene. A solução Zend ainda usa um formato de arquivo de índice idêntico. Portanto, em termos de armazenamento, eles devem ser iguais.

Usei o Java Lucene para indexar o dump de dados do StackOverflow (outubro de 2009). Indexei 1,5 milhão de linhas, incluindo cerca de 1 giga de dados de texto. O índice Lucene era de 1323 MB, enquanto o índice MySQL FULLTEXT dos mesmos dados era de apenas 466 MB.

Usando SQL LIKE predicados em vez de qualquer solução de indexação de texto completo não requer espaço, é claro, porque não pode fazer uso de um índice convencional de qualquer maneira. Mas nos meus testes usando LIKE foi cerca de 200 vezes mais lento que o Java Lucene, que por sua vez foi cerca de 40% mais lento que um índice MySQL FULLTEXT nos mesmos dados.

Veja minha apresentação recente sobre soluções de indexação de texto completo com MySQL:

http://www.slideshare.net/billkarwin /pesquisa-de-texto-completo-prático-com-meu-sql

Não é de surpreender que ele não consiga igualar o desempenho e a escalabilidade da tecnologia Java Lucene. A vantagem do PHP como linguagem é aumentar a eficiência do desenvolvimento, não a eficiência do tempo de execução.

atualização: Acabei de tentar criar um índice usando Zend_Search_Lucene . Criar um índice é muito mais lento com PHP do que com a tecnologia Java Lucene, então indexei apenas 10.000 documentos. Isso levou quase 15 minutos, o que levaria cerca de 36 horas para indexar toda a coleção. Compare isso com o Java Lucene, que no meu teste indexou a coleção completa de 1,5 milhão de documentos em menos de 7 minutos.

O tamanho do índice que criei com Zend_Search_Lucene é de 8,75 MB. Extrapolando esse 150x, estimo que o índice completo seria 1312,5 MB. Concluo que Zend_Search_Lucene cria um índice com aproximadamente o mesmo tamanho do índice produzido pelo Java Lucene. Isto é como esperado.