Introduction aux principales fonctionnalités du Framework Apache Solr

François-Xavier Barreiro
Expert Technologique chez Groupe T2I
–
Agenda
• Introduction
– Principales fonctionnalités de Solr
• Aspects Techniques
• Intégration de Solr dans nos projets
Introduction Apache Solr
«Open Source Entreprise Search Plateform»
– Ecrit en Java
– A partir du projet Apache Lucene (même socle commun qu’elasticsearch)
«Un moteur d’indexation et de recherche open source en java très très performant…»
«Taillé pour répondre aux défis du Big Data»
• Indexation et recherche plein texte sur les données et le contenu
• Filtres et Facettes
• Recalcul avec l’API Solr facettes (exemple du champ date)
• API Rest pour toutes les opérations (administration, indexation, recherches)
• Formats : Json, XML, CSV, …
• Indexation fulltext des documents
• Utilise la bibliothèque java «Tika»
• Fichiers Texte, PDF, Office, …
• Solr Cloud Cluster de serveurs Solr
• Optimisé pour des gros volumes
• Séparation de l’indexation et des recherches grâce à l’architecture distribuée qui garanti des temps de réponses constants au niveau des recherches
• Hautement évolutif (Scalable)
• Gère la réplication et distribution des données sur l’ensemble du cluster
Solr Cloud
• Construit sur Apache Zookeper
– Configuration centrale et coordination pour l’ensemble du cluster
(elasticsearch est autonome et ne nécessite pas Zookeper)
Solr Cloud
• Gestion de la montée en charge
• «Shards», distribution de l’index sur plusieurs machines (volume des index)
– Lorsque l’index approche les limitations de la machine
– Diviser l’index en deux nouvelles partitions Shard Splitting
• «Replicas», copies multiples «read-only» de l’index (charge + continuité d’exploitation)
– Pour adresser un grand volume de recherches (clients simultanés)
– Pour gérer un grand volume d’indexations qui pénalisent les recherches
• Séparer les recherches et l’indexation
– Pour effectuer des backup de l’index (gestion du failover)
Interface d’administration
• Tableau de bord, logs
• Etat des collections et des nœuds du cloud
Interface d’administration
• Administration des données (Schéma, tests, validation des requêtes)
Prise en main
• Simple et rapide (avec des exemples)
1. Téléchargement
2. De zipper l’archive
3. Démarrage : solr start –e techproducts
http://localhost:8983/solr/techproducts/browse
– Interface d’exemple «Velocity» illustrant les principales fonctionnalités
Aspects Techniques
Définition Indexation Requêtes des des de
données données recherche
Exemple de document à indexer dans solr :
{
"id": "1",
"category": "Informatique",
"title": "Apache Solr Entreprise Search Server",
"authors": "David Smiley and Eric Pugh"
}
Définition des données • Avec un fichier xml «Schema»
Définition des données
• L’analyse des champs texte est configurable
<field name=“fullText" type=“texte" indexed="true" stored=“false" />
Analyse champs texte
• Filtres de caractères (0-n)
• Enlever caractères html
• Tokenizer (1)
• Découpage des mots
• Filtres sur les mots (0-n)
• Lowercase, Stop words
Indexation des données
• L’indexation s’effectue dans une «Collection» Solr
• Indexation unitaires
» API Rest (flux json, xml, csv)
• Importation de masse
» DIH (Data Import Handler)
Indexation des données «Unitaire»
• API Rest ( Exemple au format json)
curl -X POST -H 'Content-Type: application/json’ ‘http://localhost:8983/solr/books/update’
[{
"id": "1",
"title": "Apache Solr Entreprise Search Server",
"authors": "David Smiley and Eric Pugh"
},
{
"id": "2",
"title": "Solr Cookbook",
"authors": "Rafael Kuc"
}]
Importation données de masse
• Data Import Handler
• Implémentation d’un processeur java customisé accédant à une source de donnée (fichier csv, base de donnée, …)
• Avec paramètre «Query» (q)
– Basiques
"title": "Apache Solr Entreprise Search Server"
"title": "Solr Cookbook"
• http://localhost:8983/solr/books/query?q=fullText: solr
– Phrases
• http://localhost:8983/solr/books/query?q=fullText: " solr entreprise "
"title": "Apache Solr Entreprise Search Server"
– Proximité, (~) suivi du nombre de positions
• …/query?q=fullText: " solr search "~1
– Wildcard (*) "title": "Apache Solr Entreprise Search Server"
• …/query?q=fullText: sol*
"title": "Apache Solr Entreprise Search Server"
"title": "Solr Cookbook"
• Boolean
– Par défaut l’opérateur OR
"title": "Apache Solr Entreprise Search Server"
• …/query?q=fullText:apache cookbook "title": "SolrCookbook"
– Autres opérateurs
• …/query?q=fullText: solr AND search NOT cookbook
"title": "Apache Solr Entreprise Search Server"
Intégration Solr dans nos projets
• Architecture
Intégration Solr dans nos projets
• Infrastructure
• 1 Serveur Linux (16 CPU, 24 GB RAM)
– Volumes
» Shard | Environ 50 millions de documents |
» 50 m. documents | Environ 50 GB d’Index sur disque |
– Performances (environ 750 utilisateurs, en dessous de la seconde)
» Requêtes de recherche 25 à 100 millisecondes
» Indexation (updates) 200 à 400 millisecondes
• Les updates pénalisent les recherches
• Recommandé d’effectuer des soft commit (intervalle de temps 1s, 5s,…) au lieu des hard commit (demande update instantanée)