SlideShare une entreprise Scribd logo
1  sur  142
Télécharger pour lire hors ligne
Apache SolrGeneva JUG 
Aurélien MAZOYER 
Olivier TAVARD 
04/11/14
Introduction 
A propos : 
Cofondateur de la société France Labs 
Développeur (principalement Java) 
Formateur Solr 
A propos de France Labs: 
Startup créée en 2011 
Partenaire officiel de LucidWorkspour la France
Introduction 
Domaine: 
Moteurs de recherche d'entreprise Open Source 
2 activités: 
Consulting/support/formation sur Lucene/Solr/LucidWorks/Datafari 
R&D (algorithmes de ranking, connecteurs, réseaux sociaux)
Pourquoi Lucene/Solr? 
Besoins d'entreprise : avoir une bonne solution logicielle, avec un support fiable 
Par conséquent notre choix de Lucene/Solr: 
Large communauté autour de Lucene/Solr 
Schémas de support professionnel pour Lucene/Solr 
Solr4 pensé pour le BigData 
Utilisé par Twitter, Linkedin, eBay, Salesforce, IBM, Apple
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
La recherche est un oignon!
La recherche est un oignon!
La recherche est un oignon matriciel!
Lucene
Lucene 
Crééen 2000 par Doug Cutting. Version Actuelle: Lucenev. 4.10.2 (Octobre2014) 
ProjetOpen Source, Apache depuis2001 
Librairiede recherche“full-text” 
Rapide, stable, performant, modulable 
100% Java (pas de dépendances)
Lucene 
Un outil qui permet: 
De créer un index à partir de documents 
INDEX
Index
Document 
Field 
Term 
Document, fields, terms 
Document: unité d’indexation 
Field: partied’un document, contientles données 
Term: unitéatomiqued’un champ 
Si on veutindexer un livre, on aura: 
•Title: Lucenein Action 
•Author: Erik Hatcher, Otis Gospodnetić 
•Description: Luceneis a gem in the open-source... 
•Content: … 
•…
Lucene 
Un outil qui permet: 
De créer un index à partir de documents 
D’effectuer des recherches dans cet index 
INDEX
Lucene 
Différence avec une base de données : 
Optimisé pour récupérer un doc à partir de son contenu 
Résultats scorés 
Non relationnelle, structure non fixe 
Champs qui peuvent contenir plusieurs valeurs
Lucene 
Indexation -Architecture 
Crawler 
Luceneanalyzer 
Indexer 
INDEX
Lucene 
Requêtage-Architecture 
QueryParser 
Luceneanalyzer 
Index Searcher 
type:voituresAND prix:[3000 TO 5000] 
INDEX
Analyzer 
Index 
coquilles 
saint 
Jacques 
…. 
Document Requête 
coquilles 
saint 
jacques 
Coquilles saint-jacques 
coquilles 
saint 
jacques 
Coquilles SaintJacques 
Luceneanalyzer 
Luceneanalyzer 
Indexation 
Requête 
Match!
Luceneest une simple bibliothèque 
Besoin d’une couche serveur… 
Lucene
Solr
Solrpar rapport à Lucene 
Lucene«embarqué» dans une webapp 
Créé en 2004 par YonikSeeleyà CENT Networks 
In 2006, Solrdevient open-source et été cédé à la Apache Software Foundation 
En 2010, fusion des projets Luceneet Solr 
Version Actuelle : Solr4.10.2 (Octobre 2014)
Solrpar rapport à Lucene 
APIs XML/HTTP de type REST 
Configuration par fichiers XML 
Mécanisme de Cache, Réplication 
Interface adminweb
Solrpar rapport à Lucene 
Interfaces HTTP pour : 
ajouter des documents (POST) 
•http://localhost:8983/solr/update 
effectuer des recherches (GET) 
•http://localhost:8983/solr/select
© www,oblady,com 
IntéractionSolr/ Monde extérieur 
Solr 
Update Handler 
SearchHandler 
Lucene
© www,oblady,com 
Architecture(Virtual) MachineOSJava Virtual MachineConteneur de servlet (Jetty, Tomcat) Solrfaceting, replication, caching, distributed search, admin, Lucenebest practicesLuceneJavacore search, analysis tools, hit highlighting, spell checking
Surcouche
Surcouche 
Besoin (parfois) d’une surcouche: 
Interface WEB pour le client 
Crawl des documents sur les différents systèmes 
Gestion de la sécurité 
Statistiques 
Exemples de solutions «clé en main» : 
Constellio 
LucidWorks 
Datafari
Des questions???
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
Scoring
Récupérerles bonsrésultats… 
… et seulementceuxlà 
Precision 
Pourcentagede docs pertinentssurles docs retournés 
Matchscorrects/total retourné 
Recall 
Pourcentagede docs pertinentsretournéssurle total des docs pertinents 
Matches corrects/(matchscorrects+matchsmanqués) 
Trouverun bon compromis… 
Documents Pertinents 
Document Retournés 
Docs retournés 
et pertinents 
Recherche pertinente
Scoringen Lucene 
Formuleparamètrable 
Combinaisonde 
Boolean Model (Match) 
Vector Space Model (Scoring) 
•TermFrequency 
•Inverse Document Frequency… 
Boosts…
TF-IDF 
Term Frequency (TF) : 
Fréquence d’un Terme dans un document 
France Labs 
BienvenuesurlesitedeFranceLabs. Crééeen2011,FranceLabsestunesociétécomposéed'expertsengestiondel'information.Quecesoitpourdel'expertise,pournosproduitsoupournossolutionsmétiers,nousfaisonsensortequevousaugmentiezvotreefficacitéparunemeilleureexploitationdevosdonnées. 
FranceLabs,spécialistedesoutilsderechercheopensource,proposedespluginsinnovantsetdesservicesdeconseil,intégrationetmaintenance,surLucene,SolretConstellio.Europe,noussommeslepartenairedeConstellio,solutioncomplètederecherche.
TF-IDF 
Inverse Document Frequency (IDF): 
Rareté du terme dans l’ensemble de l’index 
Expertise Lucene 
Souhaitantintervenirplusenamontdanslaviedel’entreprise,pourvousproposertoujoursplusdeconseilsàpartirdenosexpertises,Expertise& ConseilacrééFormation&Conseil: unestructuredeformationdestinéeauxacteursdeperformancedel’entreprise. 
ApacheLucene,lafameusetechnologiepourl’indexation,larechercheetl’analysedutexteestlabasedeplusieursserveursOpenSource.LaprésentationdétailleraSolretElasticSearchsouslaforme« ToolsinAction»-démonstrationsendirectdesdifférentsoutils.
TF-IDF 
Norms : 
Taille des champs 
Solr 
Titre:Lesmoteursderecherche 
Content: 
ApacheSolrestunelibrairiederecherchefulltextenopensource. ElleproposedesAPIREST,desmécanismesdecache,réplicationetmiseàl’échelle. 
Titre:Encyclopédie 
Content: 
Solrestunemoteurderechercheopensource.ElasticSearchestunmoteurderechercheopensource(maisquandmêmeunpeumoinsbien) 
…. 
…. 
….Lechatestuneanimaldecompagnieavecdesoreilles.
Boosts: 
Privilégierun doc en particulier… 
Privilégierun champ par rapport à un autre… 
Privilégierles phrases exactes… 
Privilégierles docs qui matchentunerequête… 
Privilégierles docs par rapport au résultatd’unefonction… 
Privilégierles docs géolocaliséles plus proches…. 
Boosts
Boosts 
Boosts: 
Boostsur le Titre 
Fonctionnalités 
Titre:Fonctionnalités 
Content: 
Interfaced'administrationenHTML, Réplication,Miseencache 
Recherchedistribuée,Rechercheàfacettes,Recherchegéospatiale,APIHTTP/XML,JSONetbibliothèquespourleslangagesdescriptPythonetRuby,Intégrationdesbasesdedonnées 
Titre:Highlighter 
Content: 
Cettefonctionnalitépermetdemettreensurbrillancelestermesrecherchés. Ceprincipeestlemêmequelespages"encache"deGoogleoùlestermesrecherchésapparaissentsurlignésenjaune. C'estunefonctionnalitépuissanteetpratique.
Scoringen Lucene
Des questions???
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
Le crawlingde documents n’est PAS le job de Solr 
Mais il existe de nombreux outils pour cela : 
DIH 
Nutch 
Aperture 
Manifold CF 
Google Connectors 
Crawling
Préparer les documents 
Convertir en XML, JSON, CSV (ou document riche avec Tika) 
Peut contenir plusieurs Docs 
Indexation
Poster les documents par HTTP 
Avec cURL(linux) 
•Ex : curlhttp://localhost:8983/solr/collection1/update -H "Content-type:text/xml" --data-binary@mem.xml 
Post.jar et Post.sh 
•Ex : java -jar post.jar *.xml 
Indexation
Avec des clients spécifiques: 
SolrJ 
•Client le plus évolué 
SolrNet 
rsolr 
SolPython 
SolPerl 
Solarium 
scalikesolr 
… 
Clients
Documents visibles une fois commités 
Possibilité d’utiliser le «soft-commit» 
Pour avoir du NRT 
Latence d’indexation
Pour la configuration de Solr 
Pour la configuration de Solr 
(Presque) tout se passe dans 2 fichiers: 
Schema.xml 
•Décrit les données à indexer 
SolrConfig.xml 
•Comportement interne du serveur et interactions avec le monde extérieur
Schema 
Déclaration des champs fixes: 
Ou dynamiques:
Schema 
Et des types de champs: 
Entier 
Date 
String 
•Un seul morceau 
Text 
•Textdécoupé et normalisé 
•Avec un analyzerspécifique
Analyzer 
Coquilles SaintJacques 
WordDelimiter 
Coquilles 
Saint 
Jacques 
Document Analysis 
coquilles 
saint 
jacques 
LowerCaseFilter 
WhitespaceTokenizer 
Coquilles 
SaintJacques 
Coquilles saint-jacques 
WordDelimiter 
Coquilles 
saint 
jacques 
QueryAnalysis 
coquilles 
saint 
jacques 
LowerCaseFilter 
WhitespaceTokenizer 
Coquilles 
saint-jacques
Schema: Analyzer
Analyzers 
Beaucoup d’analyzersprédéfinis 
Spécifiquesau langage 
Maismodulables: beaucoup de composantsdisponibles: 
Ajoutde synonymes 
Stemming 
•manger, mangera=> mang 
Phonétique 
…
Des questions???
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
Première requête 
URL : 
http://localhost:8983/solr/collection1/select... 
HTTP GET request 
Web browser 
Curl 
SolrJ 
…
Structure de la requête 
http://localhost:8983/solr/collection1/select 
?q=*:*&start=0&rows=10&fl=description 
/solr/: contexte de l’application web où Solrest installé 
/collection1: Collection (ou index) de Solr 
select: requesthandler 
Après le ?=> paramètres non ordonnés
Exemple de retour
Type de requêtes 
Type 
But 
Exemple 
TermQuery 
Simple terme 
Peutêtrespécifiqueà un champ 
Tarte 
Type:Dessert 
PhraseQuery 
Match de plusieurstermesdansl’ordre 
«tarte aux pommes" 
RangeQuery 
Fourchette 
[A TO Z] {A TO Z} 
WildcardQuery 
Lettres manquantes 
j*v? f??bar 
PrefixQuery 
Tousles termesqui commencentpar X. 
cheese* 
FuzzyQuery 
Distancede Levenshtein 
manger~ 
BooleanQuery 
Agrégationde plusieursqueries 
manger ANDcheese* -cheesecake
Requêtage 
L’utilisateur peut donc faire des requêtes complexes :
Requêtage 
Mais fera plutôt des requêtes de ce type: 
A nous de faire avec… 
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
Spellchecker
Autocomplete
Facettes 
Facettes
Géolocalisation
Autres fonctionnalités 
More Like This 
Obtenirdes documents similairesà un document 
Similaritétextuelle 
Highlighting
Fonctionnalité 
Joining 
Possibilitéde faire unejointure surplusieursindexes (cléprimaire-> clésecondaire) 
Maisà éviter 
Préférerla dénormalisation
Aplatir les données 
Dénormalisation
Données redondantes 
Recherche rapide sur un seul index (pas de join)
Et les vôtres… 
Solresttrèsorientéplugin 
Possibilitéde surchargerquasimenttout…
Configuration de Solr 
Pour la configuration de Solr 
(Presque) tout se passe dans 2 fichiers: 
Schema.xml 
•Décrit les données à indexer 
SolrConfig.xml 
•Comportement interne du serveur et interaction avec le monde extérieur
Exemple: 
Solrconfig.xml permet le paramètrage: 
RequestHandler 
Composants associés (autocomplete, highlighting) 
Caches, Fréquences de commitsetc… 
Bref, presque tout le reste…
Des questions???
Demo 
Démo !
Présentation de Solr 
Architecture SOLR 
Scoring 
Indexation 
Requêtage 
Fonctionnalités 
SolrCloud 
Solret son écosystème
SolrCloud 
Nouvelle architecture de Solrpour gérer la scalabilité 
Nouveau système de mise à l’échelle de Solr 
Pack 2 en 1 
•Distribution 
-Volumétrie élevée 
•Réplication 
-Répartition de la charge 
-Haute dispo 
Architecture flexible
Zookeeper 
Logiciel de gestion de configurations pour système distribués 
Contient les configsdes indexsde SolrCloud 
Les Solrs’enregistrent et se désenregistrentauprès du Zookeeper 
Statuts des shardsenregistrés
Nouvelles notions 
Sharding 
Un Shardest un morceau d’index 
Une recherche distribuée se fait sur tous les shards(iesur tout l’index) 
Utile pour gérer une grosse volumétrie de document 
Shard3 
Requêtes 
Shard1 
Shard2 
Résultats 
Aggrégés 
Sous-Requêtes
Nouvelles notions 
Leader et Replicapour la réplication 
On n’a pas de maître/esclave mais des leader/replica 
•Un replicapeut devenir leader si son leader tombe 
Le leader et le replicacontiennent le même shard 
Utile pour répartir la charge/assurer une haute dispo 
Leader Shard1 
Replica2 Shard2 
Replica1 Shard1 
LoadBalancer 
Requêtes 
Requêtes 
Requêtes
1 index-2 shards–2 replicas 
Un exemple! 
On veut un index, réparti sur 2 shards 
(ie: coupé en 2) 
Chaque shardsera répliqué 1 fois 
Donc 4 machines 
INDEX
On démarre la première machine, envoie la configuration et spécifie le nombre de shardsvoulus 
SolrCloud 
Zookeeper 
ConfigIndex1 
Leader Shard1
On démarre la deuxième machine, sans lui spécifier de configuration mais en pointant sur le Zookeeper 
SolrCloud 
Zookeeper 
Leader Shard2 
Leader Shard1
On démarre la 3èmemachine, sans lui spécifier de configuration mais en pointant sur le Zookeeper 
SolrCloud 
Zookeeper 
Leader Shard2 
ReplicaShard1 
Leader Shard1
ReplicaShard1 
On démarre la 4èmemachine, sans lui spécifier de configuration mais en pointant sur le Zookeeper 
SolrCloud 
Zookeeper 
Leader Shard2 
ReplicaShard2 
Leader Shard1
Indexation 
Distribution automatique des updates 
Comment? 
On envoie les docs à n’importe quelle machine 
Solrse charge de les transmettre à la bonne machine
Leader 1 
Leader 2 
Replica1 
Replica2 
SolrCloud 
Indexer
Recherche 
Distribution des recherches automatiques 
Hors SolrJ: 
On registre les shardsdans le loadbalancer 
Avec SolrJ: 
On utilise un objet CloudSolrServer 
•Pointé sur Zookeeper 
•Gère le loadbalancing
Leader 1 
Leader 2 
Replica1 
Replica2 
SolrCloud 
Search 
Search
Avantages 
Architecture très flexible 
En cas d’augmentation de charge 
•Ajout de machines qui pointent sur Zookeeper 
•Si pas de client intelligent 
-Enregistrement des machines dans le LoadBalancer 
En cas de diminution de charge 
•Eteindre des machines 
Zookeeper 
Gestion centralisée des configurations 
Visualisation du statut des shards
Avantages 
Réplication 
Automatique et fiable 
Support du NRT 
Distribution automatique des MAJs 
Distribution automatique des recherches
Des questions???
Demo 
Démo !
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Hadoop
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Hadoop
Solrne crawle PAS les données 
Besoin d’un crawler pour : 
Connectionau système externe à crawler 
Récupération des données 
Gestions des autorisations 
Role
Mode Push ou Pull 
Crawlingnormal ou incrémental 
Réglage de l’impact sur le système crawlé 
Throttling 
Scheduling 
En cas de documents riches (Pdf, Word): 
Extraction du contenu 
Role
Apache Tika 
Contribution de Solr 
Détection du Mime-type 
Embarque des librairies pour: 
•Lire le contenu 
•Extraire les meta-données 
Extension supportés: 
•XHTML 
•MS Office (OLE2 and OOXML) 
•OpenDocument 
•PDF 
•RTF 
•Zip 
•Audio/Video/Image files 
Extraction de contenu
Les crawlers 
DifferentsCrawlers 
Nutch 
•Crawler web distribué 
DIH 
•Contribde Solr 
•Crawl DB, XML 
Aperture 
•File, Web 
Et Framework 
Google Enterprise Connector 
Manifold CF
Manifold CF 
Basé sur «ConnectorFramework» développé par Karl Wright pour la MetaCartaAppliance 
Donné à l’Apache Software Foundationen 2009 (première version 2011) 
Mai 2012 : sortie d’incubation 
Version actuelle 1.7.1 (Septembre 2014)
Manifold CF 
Crawlingincrémental 
Gère les autorisations 
Configuration par UI et API 
Créé pour Solr 
Architecture en mode plugin
Differentsconnecteurs pour : 
Content Repositories: 
•SharePoint 
•Windows Share 
•CMIS (Alfresco) 
•DB 
•RSS 
•Wiki 
Authorities: 
•AD 
•LDAP 
Output repositories: 
•Solr 
•ElasticSearch 
Manifold CF
2 composants principaux: 
Pull agent: 
•Contient les connecteurs (repositoryet output connectors) 
•Récupère les données à partir des différents repositories 
•Et les push avec leurs ACLsaux output connectors 
Manifold CF 
Pull Agent
2 composants principaux: 
Authorityservice: 
•Contient les authorityconnectors 
•Liste de tous les tokenspour l’utilisateur courant 
Manifold CF
Intégration avec Solr 
Exemple : crawl de fichiers avec autorisation 
•Environnement : 
-File ShareWindows 
-Active Directory 
•Indexer les fichiers et respecter les droits à la requête 
Manifold CF
Configuration côté Manifold CF 
Configuration du connecteur Samba 
Configuration du connecteur AD 
Configuration du connecteur Solr 
Manifold CF
Modification du schéma Solr 
Ajout de champs pour indexer les ACLs 
•AllowFile, DenyFile, AllowDirectory, DenyDirectory… 
Ajout d’un plugin à Solr(MCF SearchPlugin) pour interroger Manifold CF pour obtenir les infos d’utilisateur 
Manifold CF
Manifold CF 
AD 
Manifold CF pull Agent 
Connecteur 
JCIFS 
Connecteur Solr 
Docs and 
accesstokens 
GetUser 
accesstoken 
Repositories 
Authorities 
Manifold CF 
Output 
Solr 
MCF SearchPlugin 
Indexation 
Manifold CF authorityservice 
Connecteur AD 
Windows Share
Manifold CF 
AD 
Manifold CF pull Agent 
Connecteur 
JCIFS 
Connecteur Solr 
Docs and 
accesstokens 
GetUser 
accesstoken 
Repositories 
Authorities 
Manifold CF 
Output 
Windows Share 
Solr 
MCF SearchPlugin 
Requête 
Manifold CF authorityservice 
Connecteur AD 
Front End 
Searchauthentifié 
Filtre les docs suivant leur ACLset les infos d’utilisateur 
Résultats autorisés
Des questions???
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Hadoop
AjaxFranceLabs 
Inspiré de AjaxSolr 
Client Javascript/Ajax 
Fournit plusieurs composants: 
Un Manager 
•Gère la connexion avec le serveur 
Et des widgets 
•Composant graphique et logique
AjaxFranceLabs 
Manager 
SearchBarWidget 
ResultWidget 
FacetWidget
Demo 
Démo !
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Hadoop
Le sémantique n‘est pas le travail de Solr 
Fait seulement de la recherche full-text(mais le fait bien ) 
Solr 
Il existe des plugins pour cela 
•UIMA 
•GATE 
•OpenNLP 
Sémantique
Sémantique 
UIMA (UnstructuredInformation Management Architecture) 
Framework Apache 
Plugin Solr 
Côté indexation 
Contient un pipeline d’Annotators 
•Open Calais 
•AlchemyAPI 
•OpenNLP 
•… 
Chaque annotatorva rajouter des métadonnées au document
UIMA 
Ex : OpenNLP 
Part of speech 
•Verbe nom… 
Extraction d’entités 
•Lieu 
•Personne
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Analytics 
Hadoop
LogStashfor Solr+ Solr+ Banana 
Banana
Présentation de Solr 
Solret son écosystème 
Crawlingdes données 
Exemple de UI 
Outils sémantiques 
Hadoop
Hadoop 
Créé par Doug Cutting 
Framework open source 
Inspiré par les papiers sur Google MapReduceet Google File System
Hadoop 
1999 
2002 
2004 
2010 
2005
Hadoop 
ScénariosBig Data 
Text mining 
Créationet analysede graphes 
Reconnaissance de patterns 
Moteursde recommandations, ciblagepublicité 
Analysede menaces, surveillances de marchés
Hadoop 
Traiterdes grandsvolumes de donnéesen un minimum de temps 
Stocker des immenses volumes de données 
Fonctionne sur machines de configuration faible et peu coûteuses
Hadoop 
Architecture (très) simplifiée de Hadoop 
Noeud 1 
Noeud 3 
Noeud 2 
Noeud 4 
Couche Traitement (MapReduce) 
Couche Stockage (HDFS)
Hadoop 
Couche stockage (HDFS) 
Système de fichier distribué 
Utilise les disques «normaux» de chacun des noeuds… 
…pour donner l’impression de n’utiliser 
qu’un seul énorme disque 
Fiable (données répliquées 3 fois)
Hadoop 
Couche traitement (MapReduce) 
Hadoopexécute des jobs MapReduce 
Notre algodoit donc implémenter: 
•Un mapper 
•Un reducer 
Pour être executéde manière distribuée par Hadoopen tant que job
Clé1 : Val1 
Clé2 : Val2 
Clé3 : Val3 
Clé4 : Val4 
Hadoop 
Mapper 
Prend des données en entrée 
Et les transforme en paire de clé valeur 
Mapper
Clé 1 : Val1 
Clé 2 : Val2 
Clé 1 : Val3 
Clé 2 : Val4 
Reducer 
Combine les valeurs ayant la même clé 
Clé1 : Val5 
Clé2 : Val6 
Reducer 
Hadoop
Hadoop 
Un exemple simple? 
On a en entrée plusieurs textes 
On veut compter le nombre d’occurrences des mots 
De manière distribuée 
En utilisant un job MapReduce 
Datafari 
Datafariest notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le frameworkde connecteurs Apache ManifoldCF. 
Solr 
Apache Solrest une couche web open source basée sur la librairie de recherche Apache Lucene. Elle ajoute des fonctionnalités de serveur web, du faceting. 
Lucene 
Apache Luceneest un moteur de recherche et d'indexation, en open source.
Apache : 4 
Solr: 2 
Lucene: 3 
… 
Apache : 1 
Apache : 1 
Solr: 1 
Lucene: 1 
… 
Apache : 1 
Solr: 1 
Lucene: 1 
… 
Apache : 1 
Lucene: 1 
… 
Hadoop 
Datafari 
Datafariest notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le frameworkde connecteurs Apache ManifoldCF. 
Solr 
Apache Solrest une couche web open source basée sur la librairie de recherche Apache Lucene. Elle ajoute des fonctionnalités de serveur web, du faceting. 
Lucene 
Apache Luceneest un moteur de recherche et d'indexation, en open source. 
Reducer 
Mapper 
Mapper 
Mapper
Hadoop 
Distribution du l’algoen MapReduce 
Apache : 13 
Apache : 44 
Apache : 2 
Lucene: 10 
Open : 19 
Solr: 10 
Solr: 10 
Manifold : 1 
Noeud 1 
Noeud 3 
Noeud 2 
Noeud 4
Opération Mapsur les documents sur chacun des noeuds 
Hadoop 
Apache : 1 
Apache : 1 
Apache : 1 
Apache : 1 
Lucene: 1 
Open : 1 
Solr: 1 
Solr: 1 
Solr: 1 
Manifold : 1 
Source : 1 
Source : 1 
Noeud 1 
Noeud 3 
Noeud 2 
Noeud 4 
Map 
Map 
Map 
Map
Hadoop 
Echange des données entre les noeud (shuffle) 
Noeud 1 
Noeud 3 
Noeud 2 
Noeud 4 
Apache : 1 
Apache : 1 
Apache : 1 
Apache : 1 
Lucene: 1 
Open : 1 
Solr: 1 
Solr: 1 
Solr: 1 
Manifold : 1 
Source : 1 
Source : 1
Lucene: 1 
Manifold : 1 
Open : 1 
Opération de Reducesur chacun des noeuds 
Hadoop 
Apache : 1 
Apache : 1 
Apache : 1 
Apache : 1 
Lucene: 1 
Open : 1 
Solr: 1 
Solr: 1 
Solr: 1 
Manifold : 1 
Source : 1 
Source : 1 
Apache : 4 
Solr: 3 
Source : 2 
Noeud 4 
Reduce 
Noeud 3 
Reduce 
Noeud 1 
Reduce 
Noeud 2 
Reduce
Créé par Doug Cutting 
Crawler Web 
Permet de crawler un large volume de données 
Basé sur Hadoop 
Nutch
Projet Apache 
Surcouche d’Hadoop 
Permet de déployer sur Hadoopdes traitements tel que: 
Identification de language 
Extraction de contenu (Tika) 
Pipeline UIMA 
Avant l’ingestion dans Solr 
Behemoth
Possibilité de stocker l’index de Solrsur HDFS 
Stockage de gros volume de donnée 
Gestion de la réplication 
Utilisation d’un cluster Hadoopexistant 
A venir: Possibilité de créer l’index à l’aide de job MapReduce 
Augmentation performance d’indexation sur de gros volumes de données 
Solrdirectement couplé avec Hadoop
Des questions???
Merci!!!
Site web : www.francelabs.com 
Email : olivier.tavard@francelabs.com 
Twitter: Francelabs

Contenu connexe

En vedette

Plannning for the GSA Sunsetting feat. Coveo
Plannning for the GSA Sunsetting feat. CoveoPlannning for the GSA Sunsetting feat. Coveo
Plannning for the GSA Sunsetting feat. CoveoMC+A
 
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick Bauer
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick BauerSitecore Dev User Group Meetup in Milwaukee - Perficient - Rick Bauer
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick BauerRick Bauer
 
Coveo Search - Product Overview
Coveo Search - Product OverviewCoveo Search - Product Overview
Coveo Search - Product OverviewAmplexor
 
T3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopT3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopPaul Blondiaux
 
Coveo_Intelligent_Workplace_eBook
Coveo_Intelligent_Workplace_eBookCoveo_Intelligent_Workplace_eBook
Coveo_Intelligent_Workplace_eBookStephen Alfano
 
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...Lucidworks
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solrfrancelabs
 
Netflix Global Search - Lucene Revolution
Netflix Global Search - Lucene RevolutionNetflix Global Search - Lucene Revolution
Netflix Global Search - Lucene Revolutionivan provalov
 
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...Lucidworks
 
L’echange..
L’echange..L’echange..
L’echange..Armelle
 
Slideshare lesaudacieux
Slideshare lesaudacieuxSlideshare lesaudacieux
Slideshare lesaudacieuxpaulinelabbe
 
Média Numérique et Web Social
Média Numérique et Web SocialMédia Numérique et Web Social
Média Numérique et Web SocialSylvain Carle
 
Session d'information - Programme ICCF @ HEC Paris
Session d'information - Programme ICCF @ HEC ParisSession d'information - Programme ICCF @ HEC Paris
Session d'information - Programme ICCF @ HEC ParisFirst_Finance
 
Formation Plateformeclassepresse
Formation PlateformeclassepresseFormation Plateformeclassepresse
Formation PlateformeclassepresseJacques KERNEIS
 
Initiation au Web Marketing Adulte
Initiation au Web Marketing AdulteInitiation au Web Marketing Adulte
Initiation au Web Marketing Adultewebxdn
 
Propuesta planificac. educativa
Propuesta planificac. educativaPropuesta planificac. educativa
Propuesta planificac. educativaNinoska Piña
 
D. sciamma 24-09
D. sciamma 24-09D. sciamma 24-09
D. sciamma 24-09IRI
 

En vedette (20)

Plannning for the GSA Sunsetting feat. Coveo
Plannning for the GSA Sunsetting feat. CoveoPlannning for the GSA Sunsetting feat. Coveo
Plannning for the GSA Sunsetting feat. Coveo
 
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick Bauer
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick BauerSitecore Dev User Group Meetup in Milwaukee - Perficient - Rick Bauer
Sitecore Dev User Group Meetup in Milwaukee - Perficient - Rick Bauer
 
Coveo Search - Product Overview
Coveo Search - Product OverviewCoveo Search - Product Overview
Coveo Search - Product Overview
 
T3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopT3UNI12 : SOLR workshop
T3UNI12 : SOLR workshop
 
Coveo_Intelligent_Workplace_eBook
Coveo_Intelligent_Workplace_eBookCoveo_Intelligent_Workplace_eBook
Coveo_Intelligent_Workplace_eBook
 
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...
Rebalance API for SolrCloud: Presented by Nitin Sharma, Netflix & Suruchi Sha...
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
 
Netflix Global Search - Lucene Revolution
Netflix Global Search - Lucene RevolutionNetflix Global Search - Lucene Revolution
Netflix Global Search - Lucene Revolution
 
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...
Galene - LinkedIn's Search Architecture: Presented by Diego Buthay & Sriram S...
 
L’echange..
L’echange..L’echange..
L’echange..
 
Juego Bird Runner
Juego Bird RunnerJuego Bird Runner
Juego Bird Runner
 
Archives de lorraine1
Archives de lorraine1Archives de lorraine1
Archives de lorraine1
 
Slideshare lesaudacieux
Slideshare lesaudacieuxSlideshare lesaudacieux
Slideshare lesaudacieux
 
Parte 2
Parte 2Parte 2
Parte 2
 
Média Numérique et Web Social
Média Numérique et Web SocialMédia Numérique et Web Social
Média Numérique et Web Social
 
Session d'information - Programme ICCF @ HEC Paris
Session d'information - Programme ICCF @ HEC ParisSession d'information - Programme ICCF @ HEC Paris
Session d'information - Programme ICCF @ HEC Paris
 
Formation Plateformeclassepresse
Formation PlateformeclassepresseFormation Plateformeclassepresse
Formation Plateformeclassepresse
 
Initiation au Web Marketing Adulte
Initiation au Web Marketing AdulteInitiation au Web Marketing Adulte
Initiation au Web Marketing Adulte
 
Propuesta planificac. educativa
Propuesta planificac. educativaPropuesta planificac. educativa
Propuesta planificac. educativa
 
D. sciamma 24-09
D. sciamma 24-09D. sciamma 24-09
D. sciamma 24-09
 

Similaire à Geneva jug Lucene Solr

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014francelabs
 
Marseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France LabsMarseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France Labsfrancelabs
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Datafrancelabs
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08Loïc Descotte
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABESABES
 
Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Marc Maisonneuve
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Véronique Gambier
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Véronique Gambier
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformersbahija babzine
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012David Pilato
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchRobert Viseur
 
Alphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communautéMickaël Rémond
 
SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019Maxime Lefrançois
 
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"ABES
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3DublinCore2b
 
Spire : l'archive ouverte de Sciences Po
Spire : l'archive ouverte de Sciences PoSpire : l'archive ouverte de Sciences Po
Spire : l'archive ouverte de Sciences PoJean-François Lutz
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)Neo4j
 

Similaire à Geneva jug Lucene Solr (20)

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
 
Marseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France LabsMarseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France Labs
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Data
 
Apache solr andré bois-crettez 08
Apache solr   andré bois-crettez 08Apache solr   andré bois-crettez 08
Apache solr andré bois-crettez 08
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2Panorama de l'offre de logiciels libres pour bibliothèque v2
Panorama de l'offre de logiciels libres pour bibliothèque v2
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
 
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
Panoramadeloffredelogicielslibrespourbibliothque 150123082251-conversion-gate...
 
Bidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from TransformersBidirectional Encoder Representations from Transformers
Bidirectional Encoder Representations from Transformers
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012Elasticsearch - Devoxx France 2012
Elasticsearch - Devoxx France 2012
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
 
Alphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentauxAlphorm.com Formation Splunk : Maitriser les fondamentaux
Alphorm.com Formation Splunk : Maitriser les fondamentaux
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté
 
SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019SPARQL-Generate, présentation SemWeb.Pro 2019
SPARQL-Generate, présentation SemWeb.Pro 2019
 
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"
Jabes 2011 - Actualités et projets de l'Abes "Les API Sudoc, le Sudoc autrement"
 
Presentation dublincore l3
Presentation dublincore l3Presentation dublincore l3
Presentation dublincore l3
 
Spire : l'archive ouverte de Sciences Po
Spire : l'archive ouverte de Sciences PoSpire : l'archive ouverte de Sciences Po
Spire : l'archive ouverte de Sciences Po
 
GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)GraphTour - Workday: Tracking activity with Neo4j (French version)
GraphTour - Workday: Tracking activity with Neo4j (French version)
 

Geneva jug Lucene Solr

  • 1. Apache SolrGeneva JUG Aurélien MAZOYER Olivier TAVARD 04/11/14
  • 2. Introduction A propos : Cofondateur de la société France Labs Développeur (principalement Java) Formateur Solr A propos de France Labs: Startup créée en 2011 Partenaire officiel de LucidWorkspour la France
  • 3. Introduction Domaine: Moteurs de recherche d'entreprise Open Source 2 activités: Consulting/support/formation sur Lucene/Solr/LucidWorks/Datafari R&D (algorithmes de ranking, connecteurs, réseaux sociaux)
  • 4. Pourquoi Lucene/Solr? Besoins d'entreprise : avoir une bonne solution logicielle, avec un support fiable Par conséquent notre choix de Lucene/Solr: Large communauté autour de Lucene/Solr Schémas de support professionnel pour Lucene/Solr Solr4 pensé pour le BigData Utilisé par Twitter, Linkedin, eBay, Salesforce, IBM, Apple
  • 5. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 6. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 7. La recherche est un oignon!
  • 8. La recherche est un oignon!
  • 9. La recherche est un oignon matriciel!
  • 11. Lucene Crééen 2000 par Doug Cutting. Version Actuelle: Lucenev. 4.10.2 (Octobre2014) ProjetOpen Source, Apache depuis2001 Librairiede recherche“full-text” Rapide, stable, performant, modulable 100% Java (pas de dépendances)
  • 12. Lucene Un outil qui permet: De créer un index à partir de documents INDEX
  • 13. Index
  • 14. Document Field Term Document, fields, terms Document: unité d’indexation Field: partied’un document, contientles données Term: unitéatomiqued’un champ Si on veutindexer un livre, on aura: •Title: Lucenein Action •Author: Erik Hatcher, Otis Gospodnetić •Description: Luceneis a gem in the open-source... •Content: … •…
  • 15. Lucene Un outil qui permet: De créer un index à partir de documents D’effectuer des recherches dans cet index INDEX
  • 16. Lucene Différence avec une base de données : Optimisé pour récupérer un doc à partir de son contenu Résultats scorés Non relationnelle, structure non fixe Champs qui peuvent contenir plusieurs valeurs
  • 17. Lucene Indexation -Architecture Crawler Luceneanalyzer Indexer INDEX
  • 18. Lucene Requêtage-Architecture QueryParser Luceneanalyzer Index Searcher type:voituresAND prix:[3000 TO 5000] INDEX
  • 19. Analyzer Index coquilles saint Jacques …. Document Requête coquilles saint jacques Coquilles saint-jacques coquilles saint jacques Coquilles SaintJacques Luceneanalyzer Luceneanalyzer Indexation Requête Match!
  • 20. Luceneest une simple bibliothèque Besoin d’une couche serveur… Lucene
  • 21. Solr
  • 22. Solrpar rapport à Lucene Lucene«embarqué» dans une webapp Créé en 2004 par YonikSeeleyà CENT Networks In 2006, Solrdevient open-source et été cédé à la Apache Software Foundation En 2010, fusion des projets Luceneet Solr Version Actuelle : Solr4.10.2 (Octobre 2014)
  • 23. Solrpar rapport à Lucene APIs XML/HTTP de type REST Configuration par fichiers XML Mécanisme de Cache, Réplication Interface adminweb
  • 24. Solrpar rapport à Lucene Interfaces HTTP pour : ajouter des documents (POST) •http://localhost:8983/solr/update effectuer des recherches (GET) •http://localhost:8983/solr/select
  • 25. © www,oblady,com IntéractionSolr/ Monde extérieur Solr Update Handler SearchHandler Lucene
  • 26. © www,oblady,com Architecture(Virtual) MachineOSJava Virtual MachineConteneur de servlet (Jetty, Tomcat) Solrfaceting, replication, caching, distributed search, admin, Lucenebest practicesLuceneJavacore search, analysis tools, hit highlighting, spell checking
  • 28. Surcouche Besoin (parfois) d’une surcouche: Interface WEB pour le client Crawl des documents sur les différents systèmes Gestion de la sécurité Statistiques Exemples de solutions «clé en main» : Constellio LucidWorks Datafari
  • 30. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 32. Récupérerles bonsrésultats… … et seulementceuxlà Precision Pourcentagede docs pertinentssurles docs retournés Matchscorrects/total retourné Recall Pourcentagede docs pertinentsretournéssurle total des docs pertinents Matches corrects/(matchscorrects+matchsmanqués) Trouverun bon compromis… Documents Pertinents Document Retournés Docs retournés et pertinents Recherche pertinente
  • 33. Scoringen Lucene Formuleparamètrable Combinaisonde Boolean Model (Match) Vector Space Model (Scoring) •TermFrequency •Inverse Document Frequency… Boosts…
  • 34. TF-IDF Term Frequency (TF) : Fréquence d’un Terme dans un document France Labs BienvenuesurlesitedeFranceLabs. Crééeen2011,FranceLabsestunesociétécomposéed'expertsengestiondel'information.Quecesoitpourdel'expertise,pournosproduitsoupournossolutionsmétiers,nousfaisonsensortequevousaugmentiezvotreefficacitéparunemeilleureexploitationdevosdonnées. FranceLabs,spécialistedesoutilsderechercheopensource,proposedespluginsinnovantsetdesservicesdeconseil,intégrationetmaintenance,surLucene,SolretConstellio.Europe,noussommeslepartenairedeConstellio,solutioncomplètederecherche.
  • 35. TF-IDF Inverse Document Frequency (IDF): Rareté du terme dans l’ensemble de l’index Expertise Lucene Souhaitantintervenirplusenamontdanslaviedel’entreprise,pourvousproposertoujoursplusdeconseilsàpartirdenosexpertises,Expertise& ConseilacrééFormation&Conseil: unestructuredeformationdestinéeauxacteursdeperformancedel’entreprise. ApacheLucene,lafameusetechnologiepourl’indexation,larechercheetl’analysedutexteestlabasedeplusieursserveursOpenSource.LaprésentationdétailleraSolretElasticSearchsouslaforme« ToolsinAction»-démonstrationsendirectdesdifférentsoutils.
  • 36. TF-IDF Norms : Taille des champs Solr Titre:Lesmoteursderecherche Content: ApacheSolrestunelibrairiederecherchefulltextenopensource. ElleproposedesAPIREST,desmécanismesdecache,réplicationetmiseàl’échelle. Titre:Encyclopédie Content: Solrestunemoteurderechercheopensource.ElasticSearchestunmoteurderechercheopensource(maisquandmêmeunpeumoinsbien) …. …. ….Lechatestuneanimaldecompagnieavecdesoreilles.
  • 37. Boosts: Privilégierun doc en particulier… Privilégierun champ par rapport à un autre… Privilégierles phrases exactes… Privilégierles docs qui matchentunerequête… Privilégierles docs par rapport au résultatd’unefonction… Privilégierles docs géolocaliséles plus proches…. Boosts
  • 38. Boosts Boosts: Boostsur le Titre Fonctionnalités Titre:Fonctionnalités Content: Interfaced'administrationenHTML, Réplication,Miseencache Recherchedistribuée,Rechercheàfacettes,Recherchegéospatiale,APIHTTP/XML,JSONetbibliothèquespourleslangagesdescriptPythonetRuby,Intégrationdesbasesdedonnées Titre:Highlighter Content: Cettefonctionnalitépermetdemettreensurbrillancelestermesrecherchés. Ceprincipeestlemêmequelespages"encache"deGoogleoùlestermesrecherchésapparaissentsurlignésenjaune. C'estunefonctionnalitépuissanteetpratique.
  • 41. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 42. Le crawlingde documents n’est PAS le job de Solr Mais il existe de nombreux outils pour cela : DIH Nutch Aperture Manifold CF Google Connectors Crawling
  • 43. Préparer les documents Convertir en XML, JSON, CSV (ou document riche avec Tika) Peut contenir plusieurs Docs Indexation
  • 44. Poster les documents par HTTP Avec cURL(linux) •Ex : curlhttp://localhost:8983/solr/collection1/update -H "Content-type:text/xml" --data-binary@mem.xml Post.jar et Post.sh •Ex : java -jar post.jar *.xml Indexation
  • 45. Avec des clients spécifiques: SolrJ •Client le plus évolué SolrNet rsolr SolPython SolPerl Solarium scalikesolr … Clients
  • 46. Documents visibles une fois commités Possibilité d’utiliser le «soft-commit» Pour avoir du NRT Latence d’indexation
  • 47. Pour la configuration de Solr Pour la configuration de Solr (Presque) tout se passe dans 2 fichiers: Schema.xml •Décrit les données à indexer SolrConfig.xml •Comportement interne du serveur et interactions avec le monde extérieur
  • 48. Schema Déclaration des champs fixes: Ou dynamiques:
  • 49. Schema Et des types de champs: Entier Date String •Un seul morceau Text •Textdécoupé et normalisé •Avec un analyzerspécifique
  • 50. Analyzer Coquilles SaintJacques WordDelimiter Coquilles Saint Jacques Document Analysis coquilles saint jacques LowerCaseFilter WhitespaceTokenizer Coquilles SaintJacques Coquilles saint-jacques WordDelimiter Coquilles saint jacques QueryAnalysis coquilles saint jacques LowerCaseFilter WhitespaceTokenizer Coquilles saint-jacques
  • 52. Analyzers Beaucoup d’analyzersprédéfinis Spécifiquesau langage Maismodulables: beaucoup de composantsdisponibles: Ajoutde synonymes Stemming •manger, mangera=> mang Phonétique …
  • 54. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 55. Première requête URL : http://localhost:8983/solr/collection1/select... HTTP GET request Web browser Curl SolrJ …
  • 56. Structure de la requête http://localhost:8983/solr/collection1/select ?q=*:*&start=0&rows=10&fl=description /solr/: contexte de l’application web où Solrest installé /collection1: Collection (ou index) de Solr select: requesthandler Après le ?=> paramètres non ordonnés
  • 58. Type de requêtes Type But Exemple TermQuery Simple terme Peutêtrespécifiqueà un champ Tarte Type:Dessert PhraseQuery Match de plusieurstermesdansl’ordre «tarte aux pommes" RangeQuery Fourchette [A TO Z] {A TO Z} WildcardQuery Lettres manquantes j*v? f??bar PrefixQuery Tousles termesqui commencentpar X. cheese* FuzzyQuery Distancede Levenshtein manger~ BooleanQuery Agrégationde plusieursqueries manger ANDcheese* -cheesecake
  • 59. Requêtage L’utilisateur peut donc faire des requêtes complexes :
  • 60. Requêtage Mais fera plutôt des requêtes de ce type: A nous de faire avec… 
  • 61. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 66. Autres fonctionnalités More Like This Obtenirdes documents similairesà un document Similaritétextuelle Highlighting
  • 67. Fonctionnalité Joining Possibilitéde faire unejointure surplusieursindexes (cléprimaire-> clésecondaire) Maisà éviter Préférerla dénormalisation
  • 68. Aplatir les données Dénormalisation
  • 69. Données redondantes Recherche rapide sur un seul index (pas de join)
  • 70. Et les vôtres… Solresttrèsorientéplugin Possibilitéde surchargerquasimenttout…
  • 71. Configuration de Solr Pour la configuration de Solr (Presque) tout se passe dans 2 fichiers: Schema.xml •Décrit les données à indexer SolrConfig.xml •Comportement interne du serveur et interaction avec le monde extérieur
  • 72. Exemple: Solrconfig.xml permet le paramètrage: RequestHandler Composants associés (autocomplete, highlighting) Caches, Fréquences de commitsetc… Bref, presque tout le reste…
  • 75. Présentation de Solr Architecture SOLR Scoring Indexation Requêtage Fonctionnalités SolrCloud Solret son écosystème
  • 76. SolrCloud Nouvelle architecture de Solrpour gérer la scalabilité Nouveau système de mise à l’échelle de Solr Pack 2 en 1 •Distribution -Volumétrie élevée •Réplication -Répartition de la charge -Haute dispo Architecture flexible
  • 77. Zookeeper Logiciel de gestion de configurations pour système distribués Contient les configsdes indexsde SolrCloud Les Solrs’enregistrent et se désenregistrentauprès du Zookeeper Statuts des shardsenregistrés
  • 78. Nouvelles notions Sharding Un Shardest un morceau d’index Une recherche distribuée se fait sur tous les shards(iesur tout l’index) Utile pour gérer une grosse volumétrie de document Shard3 Requêtes Shard1 Shard2 Résultats Aggrégés Sous-Requêtes
  • 79. Nouvelles notions Leader et Replicapour la réplication On n’a pas de maître/esclave mais des leader/replica •Un replicapeut devenir leader si son leader tombe Le leader et le replicacontiennent le même shard Utile pour répartir la charge/assurer une haute dispo Leader Shard1 Replica2 Shard2 Replica1 Shard1 LoadBalancer Requêtes Requêtes Requêtes
  • 80. 1 index-2 shards–2 replicas Un exemple! On veut un index, réparti sur 2 shards (ie: coupé en 2) Chaque shardsera répliqué 1 fois Donc 4 machines INDEX
  • 81. On démarre la première machine, envoie la configuration et spécifie le nombre de shardsvoulus SolrCloud Zookeeper ConfigIndex1 Leader Shard1
  • 82. On démarre la deuxième machine, sans lui spécifier de configuration mais en pointant sur le Zookeeper SolrCloud Zookeeper Leader Shard2 Leader Shard1
  • 83. On démarre la 3èmemachine, sans lui spécifier de configuration mais en pointant sur le Zookeeper SolrCloud Zookeeper Leader Shard2 ReplicaShard1 Leader Shard1
  • 84. ReplicaShard1 On démarre la 4èmemachine, sans lui spécifier de configuration mais en pointant sur le Zookeeper SolrCloud Zookeeper Leader Shard2 ReplicaShard2 Leader Shard1
  • 85. Indexation Distribution automatique des updates Comment? On envoie les docs à n’importe quelle machine Solrse charge de les transmettre à la bonne machine
  • 86. Leader 1 Leader 2 Replica1 Replica2 SolrCloud Indexer
  • 87. Recherche Distribution des recherches automatiques Hors SolrJ: On registre les shardsdans le loadbalancer Avec SolrJ: On utilise un objet CloudSolrServer •Pointé sur Zookeeper •Gère le loadbalancing
  • 88. Leader 1 Leader 2 Replica1 Replica2 SolrCloud Search Search
  • 89. Avantages Architecture très flexible En cas d’augmentation de charge •Ajout de machines qui pointent sur Zookeeper •Si pas de client intelligent -Enregistrement des machines dans le LoadBalancer En cas de diminution de charge •Eteindre des machines Zookeeper Gestion centralisée des configurations Visualisation du statut des shards
  • 90. Avantages Réplication Automatique et fiable Support du NRT Distribution automatique des MAJs Distribution automatique des recherches
  • 93.
  • 94. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Hadoop
  • 95. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Hadoop
  • 96. Solrne crawle PAS les données Besoin d’un crawler pour : Connectionau système externe à crawler Récupération des données Gestions des autorisations Role
  • 97. Mode Push ou Pull Crawlingnormal ou incrémental Réglage de l’impact sur le système crawlé Throttling Scheduling En cas de documents riches (Pdf, Word): Extraction du contenu Role
  • 98. Apache Tika Contribution de Solr Détection du Mime-type Embarque des librairies pour: •Lire le contenu •Extraire les meta-données Extension supportés: •XHTML •MS Office (OLE2 and OOXML) •OpenDocument •PDF •RTF •Zip •Audio/Video/Image files Extraction de contenu
  • 99. Les crawlers DifferentsCrawlers Nutch •Crawler web distribué DIH •Contribde Solr •Crawl DB, XML Aperture •File, Web Et Framework Google Enterprise Connector Manifold CF
  • 100. Manifold CF Basé sur «ConnectorFramework» développé par Karl Wright pour la MetaCartaAppliance Donné à l’Apache Software Foundationen 2009 (première version 2011) Mai 2012 : sortie d’incubation Version actuelle 1.7.1 (Septembre 2014)
  • 101. Manifold CF Crawlingincrémental Gère les autorisations Configuration par UI et API Créé pour Solr Architecture en mode plugin
  • 102. Differentsconnecteurs pour : Content Repositories: •SharePoint •Windows Share •CMIS (Alfresco) •DB •RSS •Wiki Authorities: •AD •LDAP Output repositories: •Solr •ElasticSearch Manifold CF
  • 103. 2 composants principaux: Pull agent: •Contient les connecteurs (repositoryet output connectors) •Récupère les données à partir des différents repositories •Et les push avec leurs ACLsaux output connectors Manifold CF Pull Agent
  • 104. 2 composants principaux: Authorityservice: •Contient les authorityconnectors •Liste de tous les tokenspour l’utilisateur courant Manifold CF
  • 105. Intégration avec Solr Exemple : crawl de fichiers avec autorisation •Environnement : -File ShareWindows -Active Directory •Indexer les fichiers et respecter les droits à la requête Manifold CF
  • 106. Configuration côté Manifold CF Configuration du connecteur Samba Configuration du connecteur AD Configuration du connecteur Solr Manifold CF
  • 107. Modification du schéma Solr Ajout de champs pour indexer les ACLs •AllowFile, DenyFile, AllowDirectory, DenyDirectory… Ajout d’un plugin à Solr(MCF SearchPlugin) pour interroger Manifold CF pour obtenir les infos d’utilisateur Manifold CF
  • 108. Manifold CF AD Manifold CF pull Agent Connecteur JCIFS Connecteur Solr Docs and accesstokens GetUser accesstoken Repositories Authorities Manifold CF Output Solr MCF SearchPlugin Indexation Manifold CF authorityservice Connecteur AD Windows Share
  • 109. Manifold CF AD Manifold CF pull Agent Connecteur JCIFS Connecteur Solr Docs and accesstokens GetUser accesstoken Repositories Authorities Manifold CF Output Windows Share Solr MCF SearchPlugin Requête Manifold CF authorityservice Connecteur AD Front End Searchauthentifié Filtre les docs suivant leur ACLset les infos d’utilisateur Résultats autorisés
  • 111. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Hadoop
  • 112. AjaxFranceLabs Inspiré de AjaxSolr Client Javascript/Ajax Fournit plusieurs composants: Un Manager •Gère la connexion avec le serveur Et des widgets •Composant graphique et logique
  • 113. AjaxFranceLabs Manager SearchBarWidget ResultWidget FacetWidget
  • 115. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Hadoop
  • 116. Le sémantique n‘est pas le travail de Solr Fait seulement de la recherche full-text(mais le fait bien ) Solr Il existe des plugins pour cela •UIMA •GATE •OpenNLP Sémantique
  • 117. Sémantique UIMA (UnstructuredInformation Management Architecture) Framework Apache Plugin Solr Côté indexation Contient un pipeline d’Annotators •Open Calais •AlchemyAPI •OpenNLP •… Chaque annotatorva rajouter des métadonnées au document
  • 118. UIMA Ex : OpenNLP Part of speech •Verbe nom… Extraction d’entités •Lieu •Personne
  • 119. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Analytics Hadoop
  • 120. LogStashfor Solr+ Solr+ Banana Banana
  • 121. Présentation de Solr Solret son écosystème Crawlingdes données Exemple de UI Outils sémantiques Hadoop
  • 122. Hadoop Créé par Doug Cutting Framework open source Inspiré par les papiers sur Google MapReduceet Google File System
  • 123. Hadoop 1999 2002 2004 2010 2005
  • 124. Hadoop ScénariosBig Data Text mining Créationet analysede graphes Reconnaissance de patterns Moteursde recommandations, ciblagepublicité Analysede menaces, surveillances de marchés
  • 125. Hadoop Traiterdes grandsvolumes de donnéesen un minimum de temps Stocker des immenses volumes de données Fonctionne sur machines de configuration faible et peu coûteuses
  • 126. Hadoop Architecture (très) simplifiée de Hadoop Noeud 1 Noeud 3 Noeud 2 Noeud 4 Couche Traitement (MapReduce) Couche Stockage (HDFS)
  • 127. Hadoop Couche stockage (HDFS) Système de fichier distribué Utilise les disques «normaux» de chacun des noeuds… …pour donner l’impression de n’utiliser qu’un seul énorme disque Fiable (données répliquées 3 fois)
  • 128. Hadoop Couche traitement (MapReduce) Hadoopexécute des jobs MapReduce Notre algodoit donc implémenter: •Un mapper •Un reducer Pour être executéde manière distribuée par Hadoopen tant que job
  • 129. Clé1 : Val1 Clé2 : Val2 Clé3 : Val3 Clé4 : Val4 Hadoop Mapper Prend des données en entrée Et les transforme en paire de clé valeur Mapper
  • 130. Clé 1 : Val1 Clé 2 : Val2 Clé 1 : Val3 Clé 2 : Val4 Reducer Combine les valeurs ayant la même clé Clé1 : Val5 Clé2 : Val6 Reducer Hadoop
  • 131. Hadoop Un exemple simple? On a en entrée plusieurs textes On veut compter le nombre d’occurrences des mots De manière distribuée En utilisant un job MapReduce Datafari Datafariest notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le frameworkde connecteurs Apache ManifoldCF. Solr Apache Solrest une couche web open source basée sur la librairie de recherche Apache Lucene. Elle ajoute des fonctionnalités de serveur web, du faceting. Lucene Apache Luceneest un moteur de recherche et d'indexation, en open source.
  • 132. Apache : 4 Solr: 2 Lucene: 3 … Apache : 1 Apache : 1 Solr: 1 Lucene: 1 … Apache : 1 Solr: 1 Lucene: 1 … Apache : 1 Lucene: 1 … Hadoop Datafari Datafariest notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le frameworkde connecteurs Apache ManifoldCF. Solr Apache Solrest une couche web open source basée sur la librairie de recherche Apache Lucene. Elle ajoute des fonctionnalités de serveur web, du faceting. Lucene Apache Luceneest un moteur de recherche et d'indexation, en open source. Reducer Mapper Mapper Mapper
  • 133. Hadoop Distribution du l’algoen MapReduce Apache : 13 Apache : 44 Apache : 2 Lucene: 10 Open : 19 Solr: 10 Solr: 10 Manifold : 1 Noeud 1 Noeud 3 Noeud 2 Noeud 4
  • 134. Opération Mapsur les documents sur chacun des noeuds Hadoop Apache : 1 Apache : 1 Apache : 1 Apache : 1 Lucene: 1 Open : 1 Solr: 1 Solr: 1 Solr: 1 Manifold : 1 Source : 1 Source : 1 Noeud 1 Noeud 3 Noeud 2 Noeud 4 Map Map Map Map
  • 135. Hadoop Echange des données entre les noeud (shuffle) Noeud 1 Noeud 3 Noeud 2 Noeud 4 Apache : 1 Apache : 1 Apache : 1 Apache : 1 Lucene: 1 Open : 1 Solr: 1 Solr: 1 Solr: 1 Manifold : 1 Source : 1 Source : 1
  • 136. Lucene: 1 Manifold : 1 Open : 1 Opération de Reducesur chacun des noeuds Hadoop Apache : 1 Apache : 1 Apache : 1 Apache : 1 Lucene: 1 Open : 1 Solr: 1 Solr: 1 Solr: 1 Manifold : 1 Source : 1 Source : 1 Apache : 4 Solr: 3 Source : 2 Noeud 4 Reduce Noeud 3 Reduce Noeud 1 Reduce Noeud 2 Reduce
  • 137. Créé par Doug Cutting Crawler Web Permet de crawler un large volume de données Basé sur Hadoop Nutch
  • 138. Projet Apache Surcouche d’Hadoop Permet de déployer sur Hadoopdes traitements tel que: Identification de language Extraction de contenu (Tika) Pipeline UIMA Avant l’ingestion dans Solr Behemoth
  • 139. Possibilité de stocker l’index de Solrsur HDFS Stockage de gros volume de donnée Gestion de la réplication Utilisation d’un cluster Hadoopexistant A venir: Possibilité de créer l’index à l’aide de job MapReduce Augmentation performance d’indexation sur de gros volumes de données Solrdirectement couplé avec Hadoop
  • 142. Site web : www.francelabs.com Email : olivier.tavard@francelabs.com Twitter: Francelabs