2. Introduction
A propos de moi :
Cofondateur de la société France Labs
Développeur
Formateur
A propos de France Labs :
Startup créée en 2011
Unique Partenaire officiel de LucidWorks et de Constellio
pour la France
3. Introduction
Domaine: Moteurs de recherche d'entreprise Open
Source
2 activités:
Consulting/support/training sur
Lucene/Solr/Constellio/LucidWorks
R&D (algorithmes de ranking, connecteurs,
réseaux sociaux)
4. Pourquoi les technologies 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
Solr 4 pensé pour le calcul distribué
Utilisé par Twitter, Linkedin, eBay, Salesforce, IBM, Apple
9. Lucene
Créé en 2000 par Doug Cutting. Version
Actuelle : Lucene v. 4.6 (Novembre 2013)
Projet Open Source, Apache depuis 2001
Librairie de recherche “full-text”
Rapide, stable, performant, modulable
100% Java (pas de dépendances)
10. Lucene
Différence avec une base de données
Plus rapide 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
11. Lucene
Un outil qui permet:
De créer un index à partir
de documents
D’effectuer des
recherches dans cet index
INDEX
15. Lucene
Scoring
Term Frequency (TF) :
Fréquence d’un Terme dans un document
France Labs
Bienvenue sur le site de France
Labs. Créée en 2011, France
Labs est une société composée
d'experts
en
gestion
de
l'information. Que ce soit pour de
l'expertise, pour nos produits ou
pour nos solutions métiers, nous
faisons en sorte que vous
augmentiez votre efficacité par
une meilleure exploitation de vos
données.
France Labs, spécialiste des
outils de recherche open source,
propose des plugins innovants et
des
services
de
conseil,
intégration et maintenance, sur
Lucene, Solr et Constellio.
Europe,
nous
sommes
le
partenaire de Constellio, solution
complète de recherche.
16. Lucene
Scoring
Inverse Document Frequency (IDF):
Rareté du terme dans l’ensemble du corpus
Expertise Lucene
Souhaitant intervenir plus en
amont dans la vie de l’entreprise,
pour vous proposer toujours plus
de conseils à partir de nos
expertises, Expertise & Conseil a
créé Formation & Conseil : une
structure de formation destinée
aux acteurs de performance de
l’entreprise.
Apache Lucene, la fameuse
technologie pour l’indexation, la
recherche et l’analyse du texte
est la base de plusieurs serveurs
Open Source. La présentation
détaillera Solr et ElasticSearch
sous la forme « Tools in Action »
- démonstrations en direct des
différents outils.
17. Lucene
Document
Document : unité d’indexation
Field : partie d’un document, contient les
données
Term : unité atomique d’un champ
Si on veut indexer un livre, on aura:
Title : Lucene in Action
• Author : Erik Hatcher, Otis Gospodnetid
• Description : Lucene is a gem in the open-source...
• Content : …
Term
Field
• …
•
Document
18. Lucene
Scoring
Boosts:
Modifie le score d’un document
Si Boost > 1
•
Score du doc plus élevé
A l’indexation:
•
Peut se faire sur les champs:
- Field Boost
•
Sur un document en entier:
- Document Boost
20. Lucene
Scoring
Boosts:
Boost sur le Titre
Fonctionnalités
Titre : Fonctionnalités
Content :
Interface
d'administration
en
HTML, Réplication, Mise en cache
Recherche distribuée, Recherche
à facettes, Recherche géospatiale
,API
HTTP/XML,
JSON
et
bibliothèques pour les langages
de script Python et Ruby,
Intégration des bases de données
Titre : Highlighter
Content :
Cette fonctionnalité permet de
mettre en surbrillance les termes
recherchés. Ce principe est le
même que les pages "en cache" de
Google où les termes recherchés
apparaissent surlignés en jaune.
C'est une fonctionnalité puissante
et pratique.
21. Lucene
Recherche pertinente
Récupérer les bons résultats…
… et seulement ceux là
Precision
Pourcentage de docs pertinents sur
les docs retournés
Recall
Pourcentage de docs pertinents
retournés sur le total des docs
pertinents
Trouver un bon compromis…
Documents
Pertinents
Docs retournés
et pertinents
Document
Retournés
27. Lucene
Requêtes – Comment les créer
Créées programmatiquement à partir
d’une interface
Lucene
Query
Créées à partir d’une chaîne de
caractères parsée par un “Query Parser”
Lucene
Query
type:voitures AND prix:[3000 TO 5000]
Query
Parser
28. Lucene
Match
Document Analysis
Query Analysis
Coquilles SaintJacques
Coquilles saint-jacques
WhitespaceTokenizer
WhitespaceTokenizer
Coquilles
SaintJacques
Coquilles
WordDelimiter
Coquilles
Saint
WordDelimiter
Jacques
Coquilles
LowerCaseFilter
coquilles
saint
saint-jacques
saint
jacques
LowerCaseFilter
jacques
coquilles
Match
saint
jacques
33. Solr
Lucene « embarqué » dans une webapp
Créé en 2004 par Yonik Seeley à CENT
Networks
In 2006, Solr devient open-source et été cédé
à la Apache Software Foundation
En 2010, fusion des projets Lucene et Solr
Version Actuelle : Sorl 4.6 (Novembre 2013)
34. Solr
APIs XML/HTTP de type REST
Configuration par fichiers XML
Mécanisme de Cache, Réplication
Interface admin web
35. Solr
Interfaces
Interfaces HTTP pour :
ajouter des documents (POST)
•
http://localhost:8983/solr/update
effectuer des recherches (GET)
•
http://localhost:8983/solr/select
37. Installer SOLR
Installer et tester Solr en 1 minute
Télécharger le dernier binaire (V.4.6 11/13)
http://lucene.apache.org/solr/
Extraire le zip
Lancer java –jar start.jar dans
apache-solr-4.4.0/example/
http://localhost:8983/solr
46. Indexer des documents
Indexer des documents
Récupérer les documents
Apache ManifoldCF
Google Connectors
Nutch
Aperture
Préparer les documents
Convertir en XML ou JSON
Respecter le schema.xml
Peut contenir plusieurs
Docs
47. Indexer des documents
Indexer des documents
Poster les documents par HTTP
Avec cURL (linux)
•
Ex : curl http://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
48. Indexer des documents
Indexer des documents
Mise à jour:
Document en entier
Depuis Solr 4.0:
Modifier la valeur d’un field
49. Construire son schéma
Schema.xml
Décrit les données :
Contient les champs d’un document
Et la façon de les traiter (Analyzer):
Au moment de l’indexation d’un document
Au moment de la requête
50. Construire son schéma
Schema.xml
Types des champs des documents à indexer
Liste des champs des documents
Text, String, Date….
Id, author, type….
Clé unique par document
Manuel
UUID
53. Configurer Solr
SolrConfig.xml
Principal fichier de configuration
de Solr
Lié à une collection
Définit les interactions avec les
clients (requêtes)
•
Ajout de fonctionnalités
Comportement interne du serveur
60. Interroger Solr
Structure de l’URL
http://localhost:8983/solr/formation/select?
q=*:*&start=0&rows=10&fl=description
/solr/ : contexte de l’application web où Solr est
installé
/formation : Core de Solr
Select : request handler
Après le ? => paramètres non ordonnés
61. SolrJ
Définition
SolrJ (aussi connu sous le nom de SolJava) :
API pour communiquer avec Solr au travers
d'applications Java
Package apache.solr.client.solrj :
ResponseParser
SolrQuery
SolrRequest
SolrResponse
SolrServer
StreamingResponseCallback
63. SolrJ
Communication avec le Solr server
Connexion HTTP
Les données sont envoyées en javabin par défaut :
gain de rapidité
Utilisation de la librairie Apache HttpComponents
Client
•
•
HttpSolrServer solr = new HttpSolrServer("serverUrl");
ConcurrentUpdateSolrServer solr = new
ConcurrentUpdateSolrServer(solrServerUrl, queueSize,
threadCount)
65. SolrJ
Exemple complet
Communication avec Solr en HTTP
String serverUrl =
"http://localhost:8983/solr/collection1";
HttpSolrServer server = new
HttpSolrServer(serverUrl);
69. SolrJ
Exemple complet
Réponse
On obtient dans la console :
INFO: Creating new http client,
config:maxConnections=128&maxConnectionsPerH
ost=32&followRedirects=false
id : 1 text : hello SolrJ
id : 2 text : coucou
70. Solr
Quizz anti-sommeil III
SolrJ est le 2eme nom de DJ McSolaar ?
Solr permet d’analyser graphiquement les
statistiques d’usages?
Solr tourne sous Tomcat ou sous Jetty ?
71. Solr
Performances
Scaling
1 serveur Solr peut gérer
•
•
Des millions de documents
À peu près 1000 queries /seconde
Nous devons "scaler" si…
Le volume de données augmente
• Le volume de queries augmente
• Haute disponibilité
•
74. Solr Cloud
Solr Cloud
Nouvelle architecture pour la scalabilité
En développement
Nouveau système de mise à l’échelle de Solr
Pack 2 en 1
•
•
Distribution
Réplication
Architecture flexible
75. Solr Cloud
Zookeeper
Logiciel de gestion de configurations
pour système distribués
Contient les configs des collections
pour Solr Cloud
Sauf solr.xml
Les machines s’enregistrent et se
désenregistrent
Statuts des shards enregistrés
80. Solr Cloud
1 collection - 2 shards – 2 replicas
Pas de Maître/Esclave
Mais Leaders et réplicas
1 Leader par shard
0 à N replicas
Elu automatiquement
Comme un replica mais avec en bonus une logique
de coordination
81. Solr Cloud
1 collection - 2 shards – 2 replicas
Comment sont assignées les instances de
Solr?
Automatiquement lors du démarrage!
Tant que numShard non atteint
•
•
Ajout du shard N+1
Désignation comme leader
Quand numShard atteint
•
•
On peut commencer à indexer/chercher
Ajout de replica au shard en possèdant le moins
82. Solr Cloud
Indexation
On utilise un CloudSolrServer en SolrJ
Pointé sur Zookeeper
•
•
Transfert au shard concerné
Indexation des docs sur le shard et ses replicas
83. Solr Cloud
Indexation
On envoie les docs à n’importe quelle machine
Si la machine est une replica
•
Envoie les docs à son leader
Si la machine est un leader
•
Si les docs concernent ce shard
- Indexation des docs sur le shard et ses replicas
•
Sinon
- Transmet les docs au shard concerné
84. Solr Cloud
Recherche
Recherche sur n’importe quelle machine
Near Real Time
Peut avoir un délai
•
Suivant que l’update arrive sur le bon shard ou non
86. Solr Cloud
Avantages
Architecture très flexible
En cas d’augmentation de charge
•
En cas de diminution de charge
•
Ajout de machines qui pointent sur Zookeeper
Eteindre des machines
Zookeeper
Gestion centralisée des configurations
Visualisation du statut des shards
88. Solr Cloud
Désavantages
Indexation plus lente
Transmissions des docs entre shards
Nouvel environnement
Certaines fonctionnalités non implémentées
Susceptible d’évoluer
90. Crawler
Role
Se connecter à un système externe
Crawler les données
Autorisations des données
crawlées
Early Binding
Late Binding
91. Crawler
Role
Mode push ou pull
Extraire le contenu
Crawling normal ou delta
Minimiser l'impact sur le système
crawlé
Charge
Programmation heure
92. Crawler
Crawlers
Beaucoup de Crawlers open source
Aperture
•
Nutch
•
File
DIH
•
File, Web
DB, XML
Et des Framework
Google Enterprise Connector
Apache Manifold CF
93. DIH
Définition
DIH : Data Import handler
Contribution à Solr (répertoire contrib)
Permet de traiter et d'importer des données :
•
•
•
•
•
Base de données (supporte le delta)
Fichiers
Emails
Documents riches
XML (XLST transformations et Xpath extractions)
95. SolrCell
Définition
Extraction Request Handler aka Solr Cell
Indexation de documents riches (PDF, Office,
images, etc…)
Basé sur Tika :
•
•
•
Upload des fichiers à Solr par le request handler
Extraction du texte par Tika
Indexation du contenu dans Solr
96. Apache Tika
Extraction de contenu :
Détection du Mime-type
Librairies embarquées
•
•
Lecture du contenu
Extraction des metadonnées
Extensions de fichier supportées:
•
•
•
•
•
•
•
XHTML
MS Office (OLE2 et OOXML)
OpenDocument
PDF
RTF
Zip
Fichiers Audio/Video/Image
97. Crawler
Google Connector Manager
Google Connector Manager
Pas créé pour Solr
Créé par Google pour le Google Search
Appliance
Google Connector Manager et
connectors en license Apache V.2
Intégré par Constellio
Late et early binding
Delta crawling
99. Crawler
Manifold CF
Basé sur le « Connector Framework »
developpé by Karl Wright pour l’appliance
MetaCarta
Donné à la fondation Apache Software en
2009 (première version en 2011)
Sortie d’incubation en mai 2012
Version actuelle 1.4.1
(novembre 2013)
102. Crawler
Manifold CF
Manifold CF
Windows
Share
Conn. 1
Conn. 1
AD
Sharepoint
Conn. 2
Conn. 1
OpenLDAP
Repositories
Conn. N
Conn. N
Get User
access token
Docs and
access tokens
Extracting
Handler
Solr
MCF
Search
Plugin
…
…
Repository N
Manifold CF
authority
service
Manifold CF
pull Agent
Authority N
Authorities
103. Ajaxfrancelabs: Ajax framework
Pour Solr et Constellio
Inspiré par AjaxSolr
Côté client
Javascript + ajax
Fournit un ensemble de widgets préconfigurés
Possibilité d’étendre les widgets
107. Hadoop
Avantages
Traiter des grands volumes de données en un
minimum de temps
Stocker des immenses volumes de données :
plusieurs To ou même Po
Fonctionne sur machines de configuration
faible et peu coûteuses
108. Problématiques adressées
Définition
Framework open source pour écrire et
exécuter des applications distribuées qui
traitent de très larges volumes de données :
Accessible
Hadoop fonctionne sur de très larges clusters ou sur
le cloud comme avec Amazon EC2
Robuste
Hadoop est architecturé de telle façon que les
pannes matérielles peuvent arriver et peut les gérer
109. Problématiques adressées
Définition
Mise à l'échelle
Mise à l'échelle linéaire pour gérer de larges
volumes de données en ajoutant des nodes
supplémentaires au cluster
Simple
Hadoop permet d'écrire facilement du code
111. Architecture de Hadoop
Les utilisateurs peuvent soumettre des jobs :
•
•
S'exécutent sur l'execution layer
Lecture/Ecriture des données à partir du storage layer
112. Architecture de Hadoop
Storage layer :
Hadoop Distributed File System (HDFS)
• S'exécute au dessus du système de fichier régulier de
l'OS, Linux ext3 très souvent
• Le processus gère le stockage local sur chaque node
• Le processus sur le master gère les métadonnées
•
113. Architecture de Hadoop
Execution layer :
Hadoop Map-Reduce
• Responsable de lancer un job en parallèle sur plusieurs
serveurs
• Gère les "retry" d'une tâche en cas d'échec et valide les
résultats complets
• Les jobs consistent en opérations spéciales : "map" et
"reduce"
•
115. Architecture de Hadoop
Fiable :
•
•
•
•
Chaque bloc est répliqué, généralement 3 fois
Chaque bloc fait l'objet d'une vérification de checksum
Chaque tâche doit réussir ou le job échoue
Toutes les copies de données intermédiaires sont
validées
116. Architecture de Hadoop
Tolérant aux pannes :
•
•
•
Toutes les tâches échouées sont automatiquement
réessayées
Les transferts de données échoués sont
automatiquement réessayés
Les serveurs peuvent joindre et quitter le cluster à tout
moment
118. Architecture de Hadoop
Cluster Hadoop typique:
•
A un serveur maître
- Processus qui gère le système de fichiers
- Processus qui gère les jobs
•
A plusieurs serveurs esclaves
- Processus qui gère les données sur les disques locaux
- Processus qui exécutent des taches sur le serveur
•
Utilise un réseau de haute vitesse entre les serveurs
120. Hadoop
Map/Reduce
Map : données sous forme clés/valeurs
Reduce : fusion par clé pour former résultat
fichier d’entrée
découpage
map
tri
reduce
résultat
http://blog.inovia-conseil.fr/?p=46
122. Démonstration par l’exemple
Big Search dans la vraie vie
Exemples d’entreprises utilisant différentes
technologies pour différents scénarios BIIIIG
Hadoop
Hadoop / Solr
MapReduce / Search
Solr
123. Démonstration du big data par l’exemple
Google
1 000 000 000 000 d’URLS uniques (2008)
Pagerank : le ranking d’une page est estimé
par sa popularité plutôt que par son contenu
126. Démonstration par l’exemple
1er cas : Hadoop pur pour les recommandations
Voldemort
(Linkedin
filesystem)
Hadoop
(pour le calcul)
Web Server
(pour l’affichage)
Données brutes
Calcul distribué
des recommandations
Injection des recommandations
par utilisateur
Lecture des données utilisateur et
leur recommandations
127. Démonstration par l’exemple
2e cas : Lucene pur pour la recherche d’utilisateurs
Voldemort
(Linkedin
filesystem)
Lucene
(pour le search)
Web Server (pour
l’affichage)
Données brutes
Indexation des utilisateurs
Recherche d’utilisateurs
Lecture des données utilisateur spécifique
132. Démonstration par l’exemple
Behemoth et Solr
Behemoth et Solr
Ex: SolrCloud, Behemoth, Solr
•
•
Extraction de contenu de documents PDF/Word sur
Hadoop par Behemoth
Envoi à Solr pour indexation (SolrCloud)
134. Démonstration Hadoop/Solr
Objectif
rechercher n’importe quel mot dans Solr et
pouvoir trouver toutes les expressions de 2
mots contenant ce mot et de savoir de quelle
œuvre cette expression provient (basé sur
Lucid Imagination)
136. Démonstration Hadoop/Solr
Map/Reduce
Mapper
Découpage des phrases en un ensemble de 2
mots associé au livre
Exemple d’un extrait de la Terre à la Lune :
« Pendant la guerre fédérale » sera découpé comme
ceci par le mapper :
pendant la
De la Terre à la Lune.txt
la guerre
De la Terre à la Lune.txt
guerre fédérale
De la Terre à la Lune.txt
137. Démonstration Hadoop/Solr
Map/Reduce
Reducer
Le reducer va se charger de grouper les
expressions ayant plusieurs livres en commun.
Pour l'expression « cet homme », le résultat du
reducer sera :
cet homme
De la Terre à la Lune, Autour
du Monde en 80 jours
139. Démonstration Hadoop/Solr
Etapes
‘De la Terre
à la Lune’:
‘...on se
conduit en
héros, et,
deux ans,
trois ans
plus tard…’
‘De la Terre à
la Lune’:
‘...on se
conduit en
héros, et,
deux ans,
trois ans plus
tard…’
‘Le tour du
Monde en
80 jours’:
‘Mais,
depuis deux
ans, celui-ci
n'habitait
plus la
Chine…’
‘Le tour du
Monde en 80
jours’:
‘Mais, depuis
deux ans,
celui-ci
n'habitait plus
la Chine…’
Fichiers d’entrée
Découpage
‘deux ans’:
‘De la Terre
à la Lune’
‘ans trois’:
‘De la Terre
à la Lune’
‘deux ans’:
‘Le tour du
Monde en
80 jours‘
‘ans celui’:
‘Le tour du
Monde en
80 jours’
map
‘deux ans’:
‘De la Terre à
la Lune’, ‘Le
tour du
Monde en 80
jours‘
‘ans trois’ :
‘De la Terre à
la Lune’
‘ans celui’ : ‘Le
tour du
Monde en 80
jours’
reduce
‘deux ans’:
‘De la Terre
à la Lune’,
‘Le tour du
Monde en
80 jours‘
‘ans trois’:
‘De la Terre
à la Lune’
‘ans celui’:
‘Le tour du
Monde en
80 jours’
résultat
Solr Field:
Phrase,
indexed,
stored
‘deux ans’
Solr Field: Doc,
indexed,
stored,
multivalued
‘De la Terre à la
Lune’, ‘Le tour
du Monde en
80 jours‘
‘ans trois’
‘De la Terre à la
Lune’
‘ans celui’
‘Le tour du
Monde en 80
jours’
….
….
Index de Solr