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.