Soirée Search Lucene/Solr
Découvrez les outils open source de Search qui ont déjà convaincu de nombreuses entreprises, et qui est proposé par la fondation Apache: Lucene / Solr.
Dans la première partie de soirée, histoire de savoir de quoi on parle, Olivier vous présentera les projets Lucene et Solr, leurs composants, leur architecture, leurs features, et on saupoudrera tout ça de scalabilité avec SolrCloud (avec démo).
En deuxième partie de soirée, Olivier vous présentera l’écosystème (ou du moins une partie) qui gravite autour de Lucene /Solr: ManifoldCF qui permet de gérer les connexions aux sources de données (avec démo d’indexation de contenu et recherche en live grâce à Datafari) et Hadoop, car il faut bien parler de Big Data, et parce que Solr devient un des outils de référence pour faire du search sur Hadoop.
Avec tout ça vous aurez dans vos bagages de quoi gérer des Big projets avec du Big search dedans.
www.francelabs.com
www.datafari.com
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 LucidWorks pour la France
3. Introduction
Domaine:
Moteurs de recherche d'entreprise Open Source
2 activités:
Consulting/support/formation sur
Lucene/Solr/ElastiSearch/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
Solr 4 pensé pour le Big Data
Utilisé par Twitter, Linkedin, eBay, Salesforce, IBM, Apple
5. Présentation de Solr
Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud
Solr et son écosystème
6. Présentation de Solr
Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud
Solr et son écosystème
11. Lucene
Créé en 2000 par Doug Cutting. Version Actuelle :
Lucene v. 4.10.3 Décembre 2014)
Projet Open Source, Apache depuis 2001
Librairie de recherche “full-text”
Rapide, stable, performant, modulable
100% Java (pas de dépendances)
14. Document
FieldTerm
Document, fields, terms
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 Gospodnetić
• Description : Lucene is 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
22. Solr par rapport à Lucene
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 : Solr 4.10.3 (Décembre 2014)
23. Solr par rapport à Lucene
APIs XML/HTTP de type REST
Configuration par fichiers XML
Mécanisme de Cache, Réplication
Interface admin web
24. Solr par 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érer les bons résultats…
… et seulement ceux là
Precision
Pourcentage de docs pertinents sur les
docs retournés
Matchs corrects/total retourné
Recall
Pourcentage de docs pertinents
retournés sur le total des docs pertinents
Matches corrects/(matchs
corrects+matchs manqués)
Trouver un bon compromis…
Documents
Pertinents
Document
Retournés
Documents
Pertinents
Docs retournés
et pertinents
Recherche pertinente
33. Scoring en Lucene
Formule paramètrable
Combinaison de
Boolean Model (Match)
Vector Space Model (Scoring)
• Term Frequency
• Inverse Document Frequency…
Boosts…
34. TF-IDF
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.
35. TF-IDF
Inverse Document Frequency (IDF):
Rareté du terme dans l’ensemble de l’index
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.
36. TF-IDF
Norms :
Taille des champs
Solr
Titre : Les moteurs de recherche
Content :
Apache Solr est une librairie de
recherche full text en open source.
Elle propose des API REST, des
mécanismes de cache, réplication et
mise à l’échelle.
Titre : Encyclopédie
Content :
Solr est une moteur de recherche
open source. Elastic Search est un
moteur de recherche open source
(mais quand même un peu moins
bien)
….
….
…. Le chat est une animal de
compagnie avec des oreilles.
37. Boosts:
Privilégier un doc en particulier…
Privilégier un champ par rapport à un autre…
Privilégier les phrases exactes…
Privilégier les docs qui matchent une requête…
Privilégier les docs par rapport au résultat d’une fonction …
Privilégier les docs géolocalisés les plus proches….
Boosts
38. Boosts
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.
41. Présentation de Solr
Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud
Solr et son écosystème
42. Le crawling de 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 : 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
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
• Text découpé et normalisé
• Avec un analyzer spé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
Query Analysis
coquilles saint jacques
LowerCaseFilter
WhitespaceTokenizer
Coquilles saint-jacques
54. Présentation de Solr
Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud
Solr et 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ù Solr est installé
/collection1: Collection (ou index) de Solr
select : request handler
Après le ? => paramètres non ordonnés
58. Type de requêtes
Type But Exemple
TermQuery
Simple terme
Peut être spécifique à un
champ
Tarte
Type:Dessert
PhraseQuery
Match de plusieurs
termes dans l’ordre
« tarte aux pommes"
RangeQuery Fourchette
[A TO Z]
{A TO Z}
WildcardQuery Lettres manquantes
j*v?
f??bar
PrefixQuery
Tous les termes qui
commencent par X.
cheese*
FuzzyQuery Distance de Levenshtein manger~
BooleanQuery
Agrégation de plusieurs
queries
manger AND
cheese* -cheesecake
67. Fonctionnalité
Joining
Possibilité de faire une jointure sur plusieurs
indexes (clé primaire -> clé secondaire)
Mais à éviter
Préférer la dénormalisation
70. Et les vôtres…
Solr est très orienté plugin
Possibilité de surcharger quasiment tout…
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 :
Request Handler
Composants associés (autocomplete, highlighting)
Caches, Fréquences de commits etc…
Bref, presque tout le reste…
75. Présentation de Solr
Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud
Solr et son écosystème
76. Solr Cloud
Nouvelle architecture de Solr pour 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 configs des indexs de Solr
Cloud
Les Solr s’enregistrent et se désenregistrent
auprès du Zookeeper
Statuts des shards enregistrés
78. Nouvelles notions
Sharding
Un Shard est un morceau d’index
Une recherche distribuée se fait sur tous les shards (ie sur
tout l’index)
Utile pour gérer une grosse volumétrie de documents
Shard3
Requêtes
Shard1 Shard2
Résultats
Aggrégés
Sous-Requêtes
79. Nouvelles notions
Leader et Replica pour la réplication
On n’a pas de maître/esclave mais des leader/replica
• Un replica peut devenir leader si son leader tombe
Le leader et le replica contiennent le même shard
Utile pour répartir la charge/assurer une haute dispo
Leader
Shard 1
Replica 2
Shard 2
Replica 1
Shard 1
Load Balancer
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 shard sera 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 shards voulus
Solr Cloud
Zookeeper
ConfigIndex1
Leader Shard1
82. On démarre la deuxième machine, sans lui spécifier
de configuration mais en pointant sur le Zookeeper
Solr Cloud
Zookeeper
Leader Shard2Leader Shard1
83. On démarre la 3ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Solr Cloud
Zookeeper
Leader Shard2
Replica Shard1
Leader Shard1
84. Replica Shard1
On démarre la 4ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Solr Cloud
Zookeeper
Leader Shard2
Replica Shard2
Leader Shard1
85. Indexation
Distribution automatique des updates
Comment?
On envoie les docs à n’importe quelle machine
Solr se charge de les transmettre à la bonne machine
87. Recherche
Distribution des recherches automatiques
Hors SolrJ :
On registre les shards dans le load balancer
Avec SolrJ :
On utilise un objet CloudSolrServer
• Pointé sur Zookeeper
• Gère le load balancing
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 Load Balancer
En cas de diminution de charge
• Eteindre des machines
Zookeeper
Gestion centralisée des configurations
Visualisation du statut des shards
93. Solr 5
Sortie imminente
Plus un WAR mais une application
Nouvelles fonctionnalités :
IDF distribué
Stats component amélioré
Solr 4 : apport de SolrCloud
Solr 5 : maturité, simplification à l’usage
95. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
96. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
97. Solr ne crawle PAS les données
Besoin d’un crawler pour :
Connexion au système externe à crawler
Récupération des données
Gestions des autorisations
Role
98. Mode Push ou Pull
Crawling normal 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
99. 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
100. Les crawlers
Differents Crawlers
Nutch
• Crawler web distribué
DIH
• Contrib de Solr
• Crawl DB, XML
Aperture
• File, Web
Et Framework
Google Enterprise Connector
Manifold CF
101. Manifold CF
Basé sur « Connector Framework » développé par
Karl Wright pour la MetaCarta Appliance
Donné à l’Apache Software Foundation en 2009
(première version 2011)
Mai 2012 : sortie d’incubation
Version actuelle 1.8.1 (Février 2015)
103. Differents connecteurs pour :
Content Repositories :
• SharePoint
• Windows Share
• CMIS (Alfresco)
• DB
• RSS
• Wiki
Authorities:
• AD
• LDAP
Output repositories :
• Solr
• Elastic Search
Manifold CF
104. 2 composants principaux:
Pull agent:
• Contient les connecteurs (repository et output connectors)
• Récupère les données à partir des différents repositories
• Et les push avec leurs ACLs aux output connectors
Manifold CF
Pull Agent
105. 2 composants principaux:
Authority service:
• Contient les authority connectors
• Liste de tous les tokens pour l’utilisateur courant
Manifold CF
106. Intégration avec Solr
Exemple : crawl de fichiers avec autorisation
• Environnement :
- File Share Windows
- Active Directory
• Indexer les fichiers et respecter les droits à la requête
Manifold CF
107. Configuration côté Manifold CF
Configuration du connecteur Samba
Configuration du connecteur AD
Configuration du connecteur Solr
Manifold CF
108. Modification du schéma Solr
Ajout de champs pour indexer les ACLs
• AllowFile, DenyFile, AllowDirectory, DenyDirectory…
Ajout d’un plugin à Solr (MCF Search Plugin) pour interroger Manifold CF pour
obtenir les infos d’utilisateur
Manifold CF
109. Manifold CF
AD
Manifold CF
pull Agent
Connecteur
JCIFS
Connecteur
Solr
Docs and
access tokens
Get User
access token
Repositories Authorities
Manifold CF
OutputSolr
MCF
Search
Plugin
Indexation
Manifold CF
authority
service
Connecteur
AD
Windows
Share
110. Manifold CF
AD
Manifold CF
pull Agent
Connecteur
JCIFS
Connecteur
Solr
Docs and
access tokens
Get User
access token
Repositories Authorities
Manifold CF
Output
Windows
Share
Solr
MCF
Search
Plugin
Requête
Manifold CF
authority
service
Connecteur
AD
Front End Search authentifié
Filtre les docs suivant
leurs ACLs et les infos
d’utilisateurRésultats autorisés
112. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
113. 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
116. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
117. 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
118. Sémantique
UIMA (Unstructured Information Management Architecture)
Framework Apache
Plugin Solr
Côté indexation
Contient un pipeline d’Annotators
• Open Calais
• AlchemyAPI
• OpenNLP
• …
Chaque annotator va rajouter des métadonnées au document
119. UIMA
Ex : OpenNLP
Part of speech
• Verbe nom…
Extraction d’entités
• Lieu
• Personne
120. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Analytics
Hadoop
125. Hadoop
Scénarios Big Data
Text mining
Création et analyse de graphes
Reconnaissance de patterns
Moteurs de recommandations, ciblage publicité
Analyse de menaces, surveillances de marchés
126. Hadoop
Traiter des grands volumes de données en un
minimum de temps
Stocker des immenses volumes de données
Fonctionne sur machines de configuration faible et
peu coûteuses
128. Hadoop
Couche stockage (HDFS)
Système de fichier distribué
Utilise les disques « normaux » de chacun
des nœuds…
…pour donner l’impression de n’utiliser
qu’un seul énorme disque
Fiable (données répliquées 3 fois)
129. Hadoop
Couche traitement (Map Reduce)
Hadoop exécute des jobs Map Reduce
Notre algo doit donc implémenter:
• Un mapper
• Un reducer
Pour être executé de manière distribuée par
Hadoop en tant que job
130. 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
131. 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
132. 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 Map Reduce
Datafari
Datafari est notre
solution open source de
recherche d'entreprises,
basée sur Lucene, Solr,
et le framework de
connecteurs Apache
ManifoldCF.
Solr
Apache Solr est 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 Lucene est un
moteur de recherche et
d'indexation, en open
source.
133. 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
Datafari est notre
solution open source de
recherche d'entreprises,
basée sur Lucene, Solr,
et le framework de
connecteurs Apache
ManifoldCF.
Solr
Apache Solr est 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 Lucene est un
moteur de recherche et
d'indexation, en open
source.
Reducer
Mapper
Mapper
Mapper
134. Hadoop
Distribution du l’algo en Map Reduce
Apache : 13 Apache : 44 Apache : 2
Lucene : 10
Open : 19
Solr : 10
Solr : 10 Manifold : 1Nœud 1 Nœud 3Nœud 2 Nœud 4
138. Créé par Doug Cutting
Crawler Web
Permet de crawler un large
volume de données
Basé sur Hadoop
Nutch
139. Projet Apache
Surcouche d’Hadoop
Permet de déployer sur Hadoop des
traitements tel que:
Identification de language
Extraction de contenu (Tika)
Pipeline UIMA
Avant l’ingestion dans Solr
Behemoth
140. Possibilité de stocker l’index de Solr sur HDFS
Stockage de gros volume de donnée
Gestion de la réplication
Utilisation d’un cluster Hadoop existant
A venir: Possibilité de créer l’index à l’aide de
job Map Reduce
Augmentation performance d’indexation sur de
gros volumes de données
Solr directement couplé avec Hadoop