Apache solr andré bois-crettez 08

1,732 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,732
On SlideShare
0
From Embeds
0
Number of Embeds
604
Actions
Shares
0
Downloads
25
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Apache solr andré bois-crettez 08

  1. 1. Apache Solr Moteur de recherche utilisant Apache Lucene, implémenté dans un serveur WebAlpesJug | 19 février 2013 André Bois-Crettez | Kelkoo
  2. 2. Présentations ...● André Bois-Crettez – R&D : le moteur de recherche de Kelkoo ● Basé sur Lucene il y a … longtemps ● Puis intégration dun moteur interne Yahoo ● Yahoo ayant vendu Kelkoo, plus aucun support ● Besoin dévolution, il y a un an choix dApache Solr après comparaison avec des prototypes implémentés sur 4 moteurs payants
  3. 3. … présentations– Les raisons de votre présence ce soir ... ● Simple curiosité ? ● Besoin dimplémenter de la recherche ? ● Vous perfectionner sur le sujet ?– Déjà utilisé Lucene ou Solr ou Elasticsearch ? – Ou une autre techno de recherche ?– Sujets qui vous intéressent : ● Performance ? – Ex : plus de 10 million de documents, ou mise à jour de lindex toutes les X secondes, trafic > 20 requêtes par seconde ● Fonctionnalités utilisateur ? – Synonymes, singulier pluriel, suggestion de correction orthographe, fuzzy matching, différentes langues, recherche géospatiale
  4. 4. Historique● 2004 : créé par Yonik Seeley chez CNET Networks● 2006 : le code source de Solr est donné par CNET à la fondation Apache● 2010 : Lucene et Solr sont intégrés dans le même cycle de release et ont les mêmes développeurs● Janvier 2013 : Solr 4.1 avec Lucene 4.1
  5. 5. Les bases● Découpage en termes (tokens), index inversé Doc1 : "maison bleue" "arbre" doc2 "bleue" doc1 Doc2 : "arbre vert" Indexation "maison" doc1 Doc3 : "volet vert" "vert" doc2, doc3 "volet" doc3● TF.IDF (term frequency x inverse documents frequency) – TF : Plus un terme est fréquent dans le document considéré, plus il est important – IDF : Plus un terme est fréquent dans lensemble des documents de lindex, moins il a dimportance
  6. 6. ArchitectureCC by www.cominvent.com
  7. 7. Démarrage rapide● http://lucene.apache.org/solr/tutorial.html● Télécharger et extraire solr-4.1.0.zip● Dans le répertoire solr-4.1.0/example : java -jar start.jar Administration : http://localhost:8983/solr/ ! o●● Indexation : é m java -jar post.jar *.xml D● Recherche : http://localhost:8983/solr/collection1/browse/
  8. 8. Fonctionnalités 1/2● Mécanisme de synonymes, et mots vides (stopwords) – Une liste de stopwords est dispo pour le français● Stemming pour de nombreuses langues – Choix de différents algos : enlèvement de suffixes plus ou moins aggressifs – vert <-> verts ou plus extrême consti <-> constitutionel● DataImportHandlers (DIH) pour indexer directement : – Databases – XML/HTTP – MS Office, PDF, multimédia, etc avec Apache Tika● Recherche géospatiale – Distance autour dun point de recherche, tri par distance – Recherche par polygone
  9. 9. Fonctionnalités 2/2● Filtres et facettes complexes – Hiérarchiques : tree, pivot faceting – Calculés dynamiquement par une fonction – Date et temps● Boost functions pour modifier le ranking – En fonction du prix, note, distance, etc et formules mathematiques● Extended DisMax – boost si les mots sont rapprochés – Recherche multi-champs automatique – Min-should-match : minimum number of token that should match● DirectSolrSpellChecker, suggest, recherche àpro aproximative fuzzy match~2
  10. 10. Extensions et besoins spécifiques● Système modulaire de filtres, plugins, RequestHandler – Simple dinjecter son code métier (en Java) sans devoir patcher Solr● Beaucoup de cas et dexemples sur le Web – Souvent on découvre quil suffit dun peu de conf, sans développement supplémentaire● Si vraiment nécessaire, un support payant est facilement possible
  11. 11. SolrCloud● Conçu pour la scalabilité facile (concurrence avec Elasticsearch)● On définit en combien de tranches lindex est découpé, puis chaque instance Solr démarrée participe automatiquement● Failover automatique, si suffisamment dinstances Shard1 : Shard2 : Shard3 :● Indexation & recherche inst1 inst2 inst3 – Distribuées automatiquement inst4 inst5 inst6● Haute disponibilité inst7 inst8 ...● NRT : near real time search ... Lancien système basé sur une architecture master-slave + sharding explicite est aussi disponible. Moins automatique, mais robuste depuis des années et possibilité de finement contrôler les détails.
  12. 12. Performance et scalabilité Java6:● RAM : assez peu de mémoire nécessaire à la JVM, par contre en laisser un -Xms4096M max pour le cache disque de lOS. -Xmx8192M -XX:NewRatio=1● I/O, au choix : -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled – Cheap : beaucoup de RAM, et disques classiques – La classe : SDD mais plus coûteux● CPU : dépend beaucoup du type de requêtes● Index sharding : pour gros volumes dindex (ex >10M docs) malgré surcoût de combiner les résultats● Replicas : pour gros volumes de requêtes et haute dispo● Benchmark ! – Solrmeter : simple à utiliser, proche de Solr (vue des caches), bien pour explorer – Gatling-tool : dans une prochaine présentation AlpesJug !
  13. 13. Solr vs Elasticsearch● SolrCloud assez jeune et basique – Si besoin particulier, faire « à la main » avec le mode master- slave et le sharding personalisé● Suggest / did you mean est livré avec Solr● Facilité de mettre son propre code à différents endroits du moteur● Fonctionalités de Lucene 4 disponibles
  14. 14. Apache Solr : conclusion● Coût dentrée faible● Large communauté de devs et utilisateurs● Utilisé tant en intranet, que pour des sites eCommerce à fort trafic● Implémenter une solution de recherche, ce nest pas seulement déployer une solution, cest aussi étudier les logs de requêtes pour laméliorer – Top recherches, top mots – Top recherches sans résultats Top recherches sans clic sur les résultats ? ? rch – S ea – Position dans la page de résultats du document cliqué t ant e Ins o gl – Étude de sessions de recherches successives Go
  15. 15. Liens et référenceshttp://lucene.apache.org/solr/4_1_0/tutorial.htmlhttp://wiki.apache.org/solr/SolrCloudhttp://blog.sematext.com/2012/08/23/solr-vs-elasticsearch-part-1-overview/ (et tout le blog)http://lucidworks.lucidimagination.com/display/solr/Apache+Solr+Reference+Guidehttp://refcardz.dzone.com/refcardz/solr-essentials#refcard-download-social-buttons-displayhttp://www.lucenerevolution.org/past_eventshttp://searchhub.org/blog/http://solr.pl/en/ … vos questions ?

×