sql >> Database teknologi >  >> RDS >> Mysql

Kan jeg forudsige, hvor stort mit Zend Framework-indeks vil være? (og nogle hurtige spørgsmål)

SOLR er dybest set en Apache Tomcat-beholder, der implementerer en REST-grænseflade til at forespørge på et Apache Lucene-indeks. Ja, du skal kunne køre en Java-applikation på din webserver. Dette er et problem for dig at finde ud af med din hostingudbyder.

Klienter, der bruger din webapp, behøver ikke at køre Java. Din PHP-app kunne lave en REST-forespørgsel til SOLR-tjenesten og formatere resultaterne i HTML. En klient ser kun HTML-outputtet; det behøver aldrig at vide, at dataene kom fra en tjeneste implementeret i Java.

Zend_Search_Lucene er en ren PHP-implementering, der formodes at fungere identisk med Apache Lucene. Zend-løsningen bruger endda et identisk indeksfilformat. Så opbevaringsmæssigt burde de være ens.

Jeg brugte Java Lucene til at indeksere StackOverflow-datadumpet (oktober 2009). Jeg indekserede 1,5 millioner rækker, inklusive omkring 1 gig tekstdata. Lucene-indekset var 1323 MB, hvorimod MySQL FULLTEXT-indekset for de samme data kun var 466 MB.

Bruger SQL LIKE prædikater i stedet for enhver fuldtekst-indekseringsløsning kræver selvfølgelig ingen plads, fordi den alligevel ikke kan gøre brug af et konventionelt indeks. Men i mine tests med LIKE var omkring 200 gange langsommere end Java Lucene, som igen var omkring 40 % langsommere end et MySQL FULLTEXT-indeks på de samme data.

Se min seneste præsentation om fuldtekstindekseringsløsninger med MySQL:

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

Det er ikke overraskende, at det ikke kan matche ydeevnen og skalerbarheden af ​​Java Lucene-teknologien. PHP's fordel som sprog er at øge udviklingseffektiviteten, ikke køretidseffektiviteten.

opdatering: Jeg har lige prøvet at oprette et indeks ved hjælp af Zend_Search_Lucene . Oprettelse af et indeks er langt langsommere med PHP end med Java Lucene-teknologien, så jeg indekserede kun 10.000 dokumenter. Dette tog næsten 15 minutter, hvilket ville tage omkring 36 timer at indeksere hele samlingen. Sammenlign dette med Java Lucene, som i min test indekserede hele samlingen af ​​1,5 millioner dokumenter på under 7 minutter.

Størrelsen på det indeks, jeg oprettede med Zend_Search_Lucene er 8,75 MB. Hvis jeg ekstrapolerer disse 150x, anslår jeg, at det fulde indeks ville være 1312,5 MB. Så jeg konkluderer, at Zend_Search_Lucene opretter et indeks af omtrent samme størrelse som indekset produceret af Java Lucene. Dette er som forventet.




  1. Skift adgangskoden til et SQL Server-login

  2. Kan ikke opdatere række i Sqlite i Android, men giver ingen fejl

  3. Sådan bruges Udfør øjeblikkelig med INTO-klausul i Oracle-databasen

  4. Patchhistoriktabeller i Oracle Apps (11i/R12.1/R12.2)