2010-08-23 17 views
1

J'exécute une application web sur deux serveurs différents avec équilibrage de charge, et en utilisant Zend_Search_Lucene pour indexer des documents.Zend_Search_Lucene, comment partager un dossier de stockage d'index sur le réseau

Maintenant que je suis confronté à un problème d'indexation lorsqu'un utilisateur arrive sur le site via le serveur n ° 1 et stocke des informations, Zend_Search_Lucene stocke seulement le serveur n ° 1.

Ainsi, une fois qu'un autre utilisateur arrive sur le site via le serveur n ° 2 et effectue une recherche, seuls les index du serveur n ° 2 sont récupérés.

Est-il possible de partager un dossier de stockage d'index accessible aux deux serveurs? Ou est-il un moyen de stocker des index dans la base de données mysql, pas un système de fichiers?

Répondre

2

ok s'il vous plaît ne me blesse pas parce que je ne vais pas vous donner une réponse exacte à votre question, mais vous donner une alternative. S'il vous plaît ne pas utiliser zend pour cela, c'est très lent. Crois moi. C'est juste une mauvaise implémentation qui doit être entièrement chargée pour chaque requête de recherche. faites juste quelques repères et vous remarquerez.

Lucene ne supporte en effet sharding (distribution des index à plusieurs serveurs et combiner les résultats séparement récupérés)

il prend en charge aussi bien la réplication qui serait mieux aller pour vous

donc voilà le fait utile part:

consultez la section http://lucene.apache.org/solr/ sa configuration complète avec un exemple d'installation avec jetée inclus. vous n'avez pas raelly à rien faire plus que de personnaliser vos champs si vous n'utilisez des champs génériques et commencer à l'aide d'une fois que le serveur java -jar start.jar

est en cours d'exécution sur son port par défaut que j'ai oublié, vous avez un inderface auquel vous pouvez envoyer vos nouveaux documents en utilisant http post. vous pouvez le faire à partir de php de chacun de vos serveurs d'applications. Solr l'indexera ensuite et validera les modifications si vous avez inclus l'indicateur de validation.

Vous pouvez interroger votre index à l'aide de l'interface http et des paramètres de requête solr. alors vous obtenez un document de formatage net json ou xml. vous pouvez répliquer votre serveur si vous rencontrez des problèmes de charge.

mais votre serveur gèrera 1000 fois plus de requêtes que si vous le faites en utilisant zend car tout est opérationnel, lucene est chargé et les requêtes peuvent être immédiatement traitées.

il suffit de cocher cette étape par étape tutoriel et vous devriez être bien: http://lucene.apache.org/solr/tutorial.html

si vous ne aimez pas tout cela et voulez coller avec zend de toute façon:

base de données

n'est pas possible nature bei, mais vous pourriez écrire un emballage. ce serait cependant absurde. la meilleure chose à faire dans ce cas est de mettre en place un système de fichiers réseau!

des questions, nous savons. Ps: quand vous rencontrez le choix, suggérez d'utiliser dismax, dans la plupart des cas, c'est beaucoup plus rapide.

+0

Est-ce que Solr Java Lucene? J'ai une application utilisant actuellement PHP Lucene (bibliothèques Zend) et je prévois de mettre à jour Java Lucene et d'utiliser le pont Java. Pensées?! – allnightgrocery

+0

oui c'est 100% java lucene. les serveurs jetty en tant que serveur d'application (l'alternative serait tomcat ou quelque chose). l'exemple que vous pouvez télécharger tout de suite et commence juste comprend jetty comme un serveur par défaut, il est développé par apache ainsi que d'un projet de haut niveau et en étroite collaboration avec lucene. J'ai repensé une application d'entreprise de l'enquêteur de produit commercial à solr et je ne peux que le recommander. il fonctionne vite, fiable comme un charme et est extrêmement efficace mais aussi flexible et personnalisable. –