2009-03-21 7 views
23

Quelles sont les différentes manières d'optimiser les performances de Lucene? Dois-je utiliser l'API de mise en cache pour stocker ma requête de recherche lucene de manière à économiser sur le temps de construction de la requête?Optimisation des performances de Lucene

Répondre

4

Cheat. Utilisez RAMDirectory pour charger l'index entier dans le bélier. Ensuite, tout s'éclaire rapidement. :)

3

J'ai trouvé que la meilleure réponse à une question de performance est de la profiler. Les directives sont excellentes, mais il y a tellement de variables qui peuvent affecter les performances telles que la taille de votre jeu de données, les types de requêtes, les types de données, etc.

Obtenez le Netbeans profiler ou quelque chose de similaire et essayez-le de différentes manières . Utilisez les articles liés à Mitch, mais assurez-vous de tester ce qui aide et ce qui (souvent étonnamment) fait mal.

Il y a également de bonnes chances que les différences de performances que vous pouvez obtenir de Lucene soient mineures par rapport aux améliorations de performances dans votre code. Le profileur le soulignera également.

11

Conseils:

  • Conserver la taille de l'indice faible. Éliminer les normes, vecteurs de terme si non nécessaire. Définir le drapeau Store pour un champ uniquement s'il est obligatoire.
  • Erreur évidente, mais souvent répétée. Créez une seule instance de Searcher et réutilisez-la.
  • Conserver dans l'index sur les disques rapides. RAM, si vous êtes paranoïaque.