Benim Zend Framework endeksi ne kadar büyük olacağını tahmin edebilirsiniz?

1 Cevap php

I each row has about 8 fields. bir mysql tabloda, etrafında 100thousand satırlar var

Sonunda bir mysql tablosundan Zend Lucene endeksi ve arama verilere nasıl kullanılacağı üzerinde tutmak var.

Ben tam web siteme bu funcionality uygulamadan önce, bazı sorularım var:

1 - önceden bir dizin boyutunu belirlemek mümkün mü? Bunun nedeni Zend kılavuzda bir endeksin maksimum boyutu 2GB olduğunu söylüyor. Ben hemen benim tablo için yeterli değildir düşünüyorum!

2 - Onlar Zend Lucene arama dakikaya kadar, büyük endekslerinde çok yavaş olduğunu söylüyorlar nerede mesajları okudum! Bu mysql yerine Zend (SELECT, GİBİ vb) doğrudan komutları kullanmak daha hızlı mı?

3 - en az these işlevleri vardır ilanlar için bir arama motoru oluşturmak için benim soruna başka bir çözüm var mı, ve tam metin mysql dizinleri (alanlar) gerektirmez.

Teşekkürler

1 Cevap

SOLR temelde bir Apache Lucene indeksi sorgulamak için REST arabirimi uygulayan bir Apache Tomcat konteyner olduğunu. Evet, web sunucusu üzerinde bir Java uygulamasını çalıştırmak gerekiyor. Bu barındırma sağlayıcı ile çalışmak için bir konudur.

Web uygulamasını kullanarak Müşteriler Java çalıştırmak gerekmez. PHP uygulaması SOLR hizmetine REST sorgu yapmak ve HTML sonuçlarını biçimlendirmek olabilir. Müşteri sadece HTML çıkış görür; Bu veri Java uygulanan bir hizmetle geldiğini bilmek gerekir asla.

Zend_Search_Lucene Apache Lucene için aynı çalışmak gerekiyordu saf-PHP uygulamasıdır. Zend çözüm bile özdeş bir dizin dosya biçimini kullanır. Böylece depolama-bilge eşit olmalıdır.

Ben endeksi StackOverflow veri dökümü (Ekim 2009) Java lucene kullanılır. Ben metin verilerinin yaklaşık 1 konser dahil olmak üzere 1,5 milyon satır, endeksli. Aynı verilerin MySQL FULLTEXT indeksi sadece 466 MB iken Lucene endeksi, 1323 MB oldu.

Yine geleneksel bir dizin kullanımı yapamazsınız, çünkü SQL kullanarak LIKE herhangi bir tam metin indeksleme çözümün yerine yüklemler, elbette hiçbir boşluk gerektirir. Ama kullanarak benim testlerde LIKE aynı veriler üzerinde MySQL FULLTEXT endeksi yaklaşık% 40 daha yavaş açmak oldu Java Lucene, yaklaşık 200 kat daha yavaş oldu.

MySQL ile tam metin indeksleme çözümleri hakkında benim son sunum bakınız:

http://www.slideshare.net/billkarwin/practical-full-text-search-with-my-sql

Bu Java Lucene teknolojisinin performans ve ölçeklenebilirlik maç olamaz şaşırtıcı değil. Bir dil olarak PHP'nin avantajı verimliliği runtime, geliştirme verimliliğini değil artmaktadır.


update: I just tried creating an index using Zend_Search_Lucene. Bir dizin oluşturma Java Lucene teknolojisi ile daha PHP ile çok daha yavaş olduğunu, bu yüzden ben sadece 10.000 belgeleri endeksli. Bu endeksi yaklaşık 36 saat bütün toplama almak kılacak neredeyse 15 dakika sürdü. Benim test 7 dakikanın altında 1,5 milyon belgelerin tam koleksiyonu endeksli Java Lucene ile karşılaştırın.

Ben ile oluşturulan dizin boyutu Zend_Search_Lucene 8.75 MB. Bu 150x götürdüğümüzde, ben tam endeksi 1.312,5 MB olacağını tahmin ediyoruz. Bu yüzden Zend_Search_Lucene Java Lucene tarafından üretilen dizin olarak yaklaşık aynı boyutta bir dizin oluşturur sonucuna varıldı. Beklendiği gibi olmasıdır.