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, histoire de savoir de quoi on parle, Aurélien vous présentera les projets Lucene et Solr, leurs composants, leur architecture, leurs features, et on saupoudrera tout ça de scalabilité avec SolrCloud.
En deuxième partie, Aurélien 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), 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 là encore une démo d'interaction Hadoop et Solr). Avec tout ça vous aurez dans vos bagages de quoi gérer des Big projets avec du Big search dedans.
2. Introduction
A propos de moi :
Cofondateur de la société France Labs
Développeur (principalement Java)
Formateur Solr (France Labs, Lucidworks)
Enseignant vacataire (Polytech’Nice-Sophia)
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/Constellio/LucidWorks
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
11. 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)
14. 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 Gospodnetid
Description : Lucene is a gem in the open-source...
Content : …
Term
Field
…
Document
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.6 (Novembre 2013)
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
Gestions de la sécurité
Statistiques
Exemples de solutions « clé en main » :
Constellio
LucidWorks
Datafari
32. Scoring en Lucene
Formule paramètrable
Combinaison de
Boolean Model (Match)
Vector Space Model (Scoring)
•
•
Term Frequency
Inverse Document Frequency…
Boosts…
33. 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.
34. 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.
35. 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.
36. Boosts
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é les plus proches….
37. 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. Crawling
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
46. 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
Et des types de champs:
Entier
Date
String
•
Un seul morceau
Text
•
•
Text découpé et normalisé
Avec un analyzer spécifique
49. Analyzer
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
saint
jacques
55. 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
57. 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
66. Et les vôtres…
Solr est très orienté plugin
Possibilité de surcharger quasiment tout…
67. 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
68. 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…
72. 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
73. 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
74. 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 document
Sous-Requêtes
Shard1
Requêtes
Résultats
Aggrégés
Shard2
Shard3
75. 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 contienne le même shard
Utile pour répartir la charge/assurer une haute dispo
Leader
Shard 1
Requêtes
Replica 2
Shard 2
Replica 1
Shard 1
Requêtes
Requêtes
Load Balancer
76. 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
77. Solr Cloud
On démarre le première machine, envoie la
configuration et spécifie le nombre de shards voulus
ConfigIndex1
Leader Shard1
Zookeeper
78. Solr Cloud
On démarre la deuxième machine, sans lui spécifier
de configuration mais en pointant sur le Zookeeper
Leader Shard1
Zookeeper
Leader Shard2
79. Solr Cloud
On démarre la 3ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Leader Shard1
Zookeeper
Replica Shard1
Leader Shard2
80. Solr Cloud
On démarre la 4ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Leader Shard1
Leader Shard2
Zookeeper
Replica Shard1
Replica Shard2
81. Indexation
Distribution automatique des updates
Comment?
On envoie les docs à n’importe quelle machine
Solr se charge de les transmettre à la bonne machine
83. Recherche
Distribution des recherches automatique
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
85. Avantages
Architecture très flexible
En cas d’augmentation de charge
•
•
Ajout de machines qui pointent sur Zookeeper
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
90. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
91. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
92. Role
Solr ne crawle PAS les données
Besoin d’un crawler pour :
Connection au système externe à crawler
Récupération des données
Gestions des autorisations
93. Role
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
94. Extraction de contenu
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
96. 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.5.1 (Février 2014)
98. Manifold CF
Differents connecteurs pour :
Content Repositories :
•
•
•
•
•
•
Authorities:
•
•
SharePoint
Windows Share
CMIS (Alfresco)
DB
RSS
Wiki
AD
LDAP
Output repositories :
•
•
Solr
Elastic Search
99. Manifold CF
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
Pull Agent
100. Manifold CF
2 composants principaux:
Authority service:
•
•
Contient les authority connectors
Liste de tous les tokens pour l’utilisateur courant
101. Manifold CF
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
102. Manifold CF
Configuration côté Manifold CF
Configuration du connecteur JCIFS
Configuration du connecteur AD
Configuration du connecteur Solr
103. Manifold CF
Modification du schéma Solr
Ajout de champs pour indexés les ACLs
•
AllowFile, DenyFile, AllowDirectory, DenyDirectory…
Ajout d’un plugin à Solr (MCF Search Plugin) pour interroger Manifold CF pour
obtenir les infos d’utilisateur
105. Manifold CF
Repositories
Windows
Share
Connecteur
JCIFS
Manifold CF
pull Agent
Connecteur
Solr
Requête
Front End
Docs and
access tokens
Search authentifié
Résultats autorisés
Authorities
Manifold CF
Connecteur
AD
AD
Manifold CF
authority
service
Get User
access token
MCF
Filtre les docs suivant
leur ACLsSearch infos
et les
Solr
Plugin
d’utilisateur
Output
107. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
108. 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
111. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
112. Sémantique
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
113. 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
114. UIMA
Ex : OpenNLP
Coté indexation ou requêtage
Part of speech
•
Verbe nom…
Extraction d’entités
•
•
Lieu
Personne
115. Natural Langage Processing
Solr + OpenNLP + custom code => outils de recherche en langage
naturel
Voir livre « Taming Text » de Grant Ingersoll
116. Présentation de Solr
Solr et son écosystème
Crawling des données
Exemple de UI
Outils sémantiques
Hadoop
117. Hadoop
Créé par Doug Cutting
Framework open source
Inspiré par les papiers sur Google Map Reduce
et Google File System
118. 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
120. 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)
121. 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
122. Hadoop
Mapper
Prend des données en entrée
Et les transforme en paire de clé valeur
Clé1 : Val1
Clé2 : Val2
Clé3 : Val3
Clé4 : Val4
Mapper
124. Hadoop
Un exemple simple?
On a en entrée plusieurs textes
On veut compter le nombre d’occurrence
des mots
De manière distribuée
En utilisant un job Map Reduce
Solr
Datafari
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.
Datafari est notre
solution open source de
recherche d'entreprises,
basée sur Lucene, Solr,
et le framework de
connecteurs Apache
ManifoldCF.
Lucene
Apache Lucene est un
moteur de recherche et
d'indexation, en open
source.
125. Hadoop
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.
Datafari
Datafari est notre
solution open source de
recherche d'entreprises,
basée sur Lucene, Solr,
et le framework de
connecteurs Apache
ManifoldCF.
Mapper
Mapper
Lucene
Apache Lucene est un
moteur de recherche et
d'indexation, en open
source.
Apache : 1
Apache : 1
Solr : 1
Lucene : 1
…
Apache : 1
Solr : 1
Lucene : 1
…
Apache : 1
Lucene : 1
…
Mapper
Apache : 4
Solr : 2
Lucene : 3
…
Reducer
126. Hadoop
Distribution du l’algo en Map Reduce
Apache : 13
Lucene : 10
Nœud 1
Open : 19
Nœud 2
Solr : 10
Apache : 44
Nœud
Solr : 10 3
Apache : 2
Nœud 4
Manifold : 1
132. Solr directement couplé avec Hadoop
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
133. Exemples d’utilisation d’Hadoop
Calcul du scoring des docs
Ex: PageRank calculé par le Google Map/Reduce
Web
Google Map/Reduce
(≠ Hadoop
Mapreduce) :
Calcul PageRank
Moteur de recherche
(≠ Lucene Solr)