Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Kann ich vorhersagen, wie groß mein Zend Framework-Index sein wird? (und ein paar kurze Q:s)

SOLR ist im Grunde ein Apache-Tomcat-Container, der eine REST-Schnittstelle implementiert, um einen Apache-Lucene-Index abzufragen. Ja, Sie müssen in der Lage sein, eine Java-Anwendung auf Ihrem Webserver auszuführen. Dieses Problem müssen Sie mit Ihrem Hosting-Provider klären.

Clients, die Ihre Web-App verwenden, müssen Java nicht ausführen. Ihre PHP-App könnte eine REST-Abfrage an den SOLR-Dienst senden und die Ergebnisse in HTML formatieren. Ein Client sieht nur die HTML-Ausgabe; es muss nie wissen, dass die Daten von einem in Java implementierten Dienst stammen.

Zend_Search_Lucene ist eine reine PHP-Implementierung, die identisch zu Apache Lucene funktionieren soll. Die Zend-Lösung verwendet sogar ein identisches Indexdateiformat. In Bezug auf die Speicherung sollten sie also gleich sein.

Ich habe Java Lucene verwendet, um den StackOverflow-Datendump (Oktober 2009) zu indizieren. Ich habe 1,5 Millionen Zeilen indiziert, darunter etwa 1 GB Textdaten. Der Lucene-Index war 1323 MB groß, während der MySQL-FULLTEXT-Index derselben Daten nur 466 MB groß war.

Verwendung von SQL LIKE Prädikate anstelle irgendeiner Volltext-Indizierungslösung benötigen natürlich keinen Platz, weil sie sowieso nicht auf einen herkömmlichen Index zurückgreifen können. Aber in meinen Tests mit LIKE war etwa 200-mal langsamer als Java Lucene, das wiederum etwa 40 % langsamer war als ein MySQL-FULLTEXT-Index auf denselben Daten.

Sehen Sie sich meine aktuelle Präsentation über Volltext-Indizierungslösungen mit MySQL an:

http://www.slideshare.net/billkarwin /praktische-volltextsuche-mit-meinem-sql

Es überrascht nicht, dass es nicht mit der Leistung und Skalierbarkeit der Java-Lucene-Technologie mithalten kann. Der Vorteil von PHP als Sprache ist die Steigerung der Entwicklungseffizienz, nicht der Laufzeiteffizienz.

Aktualisierung: Ich habe gerade versucht, einen Index mit Zend_Search_Lucene zu erstellen . Das Erstellen eines Indexes ist mit PHP viel langsamer als mit der Java-Lucene-Technologie, daher habe ich nur 10.000 Dokumente indiziert. Dies dauerte fast 15 Minuten, wodurch es ungefähr 36 Stunden dauern würde, die gesamte Sammlung zu indexieren. Vergleichen Sie dies mit Java Lucene, das in meinem Test die gesamte Sammlung von 1,5 Millionen Dokumenten in weniger als 7 Minuten indiziert hat.

Die Größe des Indexes, den ich mit Zend_Search_Lucene erstellt habe beträgt 8,75 MB. Wenn ich dieses 150-fache extrapoliere, schätze ich, dass der vollständige Index 1312,5 MB betragen würde. Daraus schließe ich, dass Zend_Search_Lucene erstellt einen Index von ungefähr der gleichen Größe wie der von Java Lucene erstellte Index. Dies ist wie erwartet.