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
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
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!
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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