Zend_Lucene ve Zend_Paginator kullanarak DB kayıtların çok sayıda indeksleme optimize etmek için nasıl

1 Cevap php

Endeks daha sonra sitenin ön ucu için ve destekli operasyon olarak hem kullanılan - Yani dağıtılan ve bir ana ve endeksler bir veritabanı tablosundaki tüm kayıtları üzerinde Cron kullanarak koştu bu cron komut dosyası var.

Ameliyattan sonra, endeks yaklaşık 3-4 MB.

Ve makineyi yavaşlatır: Sorun bu kaynakların çok (30 + ve bellek iyi bir yığın CPU) sürer. Benim soru aşağıda anlatılan işlemi optimize etmek için nasıl hakkında:

First there is a select query built using the Zend Framework API, this query is then passed to a Paginator factory that returns a paginator which I am using to balance the current number of items being indexed and not iterate over too much items. The script is iterating over the current items in the paginator object using a foreach loop until reaching the end and then it starts from the beginning after getting items for the next page.

Ben bu havai Zend_Lucene ancak bu geliştirilebilir nasıl hiçbir fikri neden olur şüphelenen.

1 Cevap

Can I predict how large my Zend Framework index will be? benim cevaba bakınız

Apache Lucene (Java versiyonu) karşı Zend_Search_Lucene test. Benim testte, Java ürün PHP üründen daha hızlı 300x yaklaşık 1.5 milyon belge endeksli.

Sen Apache SOLR (Apache Lucene için Tomcat konteyner) kullanarak çok daha mutlu olacağım. Solr JDBC veri kaynağından verileri doğrudan berbat DataImportHandler adlı bir araç içerir.

PHP Solr ile iletişim kurmak için PECL Solr uzantısı kullanın. Bunu PHP uzantısı yüklemek yapamıyorsanız, PHP varsayılan kurulumlarda kullanılabilir olmalıdır Curl kullanın.