Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
Bonjour,
Je fais actuellement un comparateur de prix et j'utilise pour mon moteur de recherche zend lucene. j'indexe donc 800 000 produits = un index d'environ 25 mo
Mon problème est le temps de mes recherches qui prend plusieurs seconde, sachant que je vise plusieurs dizaines de millions de produits, cela risque d'empirer très vite. Avez vous une idée de comment l'optimiser ? serait ce utile de faire plusieurs indexes plutot qu'un seul gros fichier ?
Voici mon code qui me permet d'indexer mes produits, j'ai normalement essayé de faire le plus simple possible pour que mon indexe soit efficace....
...
//stopword
$stopWords = array('le','la','et','à','alors','les','ou');
$stopWordsFilter =new Zend_Search_Lucene_Analysis_TokenFilter_StopWords($stopWords);
//shortword
$shortWordsFilter = new Zend_Search_Lucene_Analysis_TokenFilter_ShortWords();
//lowercase
$lowercase=new Zend_Search_Lucene_Analysis_TokenFilter_LowerCase();
//analyser
$analyzer =new Zend_Search_Lucene_Analysis_Analyzer_Common_Text();
$analyzer->addFilter($stopWordsFilter);
$analyzer->addFilter($shortWordsFilter);
$analyzer->addFilter($lowercase);
Zend_Search_Lucene_Analysis_Analyzer::setDefault($analyzer);
//indexage
$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::UnStored('name',$nom,'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::UnStored('merchantname',$merchantname,'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::UnIndexed('idpr', $id,'UTF-8'));
$doc->addField(Zend_Search_Lucene_Field::UnStored('marque', $marque,'UTF-8'));
$index->addDocument($doc);
$update=$produit_table->upadteindex("Model_Produit","id =$id and categorie_idcategorie=$idcat");
}
$index->commit();
$index->optimize();
Merci d'avance pour votre aide
Dernière modification par lupin78 (05-08-2011 00:04:54)
Hors ligne
Hum.. tu ne va pas aimer ma réponse... Je crois qu'on ne peut pas améliorer les perfs...
Zend_Search_Lucene est complètement inutilisable sur des bases importantes. (je suis déjà surpris que ça soit encore utilisable avec 800 000 références, tu dois avoir un serveur puissant )
Sur certains sites, j'ai basculé sur le produit "Solr", par contre il faut un serveur d'application JAVA pour le faire tourner...
A+, Philippe
Hors ligne
Ok merci pour ta réponse, je sens que je vais avoir du boulot pour avoir un bon moteur de recherche xD.
Tu penses que j'aurais des bonnes perfs avec solr sur une base importante ?
++, Arsène
Hors ligne
Oui, solr gère déjà des bases énormes sur certains sites. Tu ne devrais pas avoir de problèmes avec.
Sinon il y a d'autres systèmes que je n'ai pas testés mais pour lesquels j'ai eu de bons retours, notamment sphinx http://sphinxsearch.com/.
Mon conseil perso, c'est Solr, mais j'ai un pote qui ne jure que par Sphinx. Choisis ton camp camarade
A+, Philippe
Hors ligne
Je crois qu'il serait très intéressant d'avoir un vrai débat sérieux sur
Sphinx VS Solr VS Lucene VS ...
Hors ligne
Je crois qu'on ne peut pas améliorer les perfs...
Hors ligne
Pages: 1