Apache Solr
Nantes JUG
Aurélien MAZOYER
Olivier TAVARD
16/02/15
Introduction
A propos :
 Cofondateur de la société France Labs
 Développeur (principalement Java)
 Formateur Solr
A pro...
Introduction
Domaine:
 Moteurs de recherche d'entreprise Open Source
2 activités:
 Consulting/support/formation sur
Luce...
Pourquoi Lucene/Solr?
Besoins d'entreprise : avoir une bonne solution
logicielle, avec un support fiable
Par conséquent no...
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
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 :
Lucene v. 4.10.3 Décembre 2014)
Projet Open Source, Apache depuis...
Lucene
Un outil qui permet:
 De créer un index à partir de
documents
INDEX
Index
Document
FieldTerm
Document, fields, terms
 Document : unité d’indexation
 Field : partie d’un document, contient les do...
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
...
Lucene
Indexation - Architecture
Crawler
Lucene
analyzer
Indexer
INDEX
Lucene
Requêtage - Architecture
Query
Parser
Lucene
analyzer
Index
Searcher
type:voitures AND prix:[3000 TO 5000]
INDEX
Analyzer
Index
coquilles
saint
Jacques
….
Document Requête
coquilles saint jacques
Coquilles saint-jacques
coquilles saint...
Lucene est une simple bibliothèque
Besoin d’une couche serveur…
Lucene
Solr
Solr par rapport à Lucene
Lucene « embarqué » dans une webapp
Créé en 2004 par Yonik Seeley à CENT Networks
In 2006, Solr ...
Solr par rapport à Lucene
APIs XML/HTTP de type REST
Configuration par fichiers XML
Mécanisme de Cache, Réplication
Interf...
Solr par rapport à Lucene
Interfaces HTTP pour :
 ajouter des documents (POST)
• http://localhost:8983/solr/update
 effe...
© www,oblady,com
Intéraction Solr / Monde extérieur
Solr
Update Handler Search Handler
Lucene
© www,oblady,com
Architecture
(Virtual) Machine
OS
Java Virtual Machine
Conteneur de servlet (Jetty, Tomcat)
Solr faceting...
Surcouche
Surcouche
Besoin (parfois) d’une surcouche:
 Interface WEB pour le client
 Crawl des documents sur les différents systèm...
Des questions???
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
Scoring
Récupérer les bons résultats…
… et seulement ceux là
Precision
 Pourcentage de docs pertinents sur les
docs retournés
Mat...
Scoring en Lucene
Formule paramètrable
Combinaison de
 Boolean Model (Match)
 Vector Space Model (Scoring)
• Term Freque...
TF-IDF
Term Frequency (TF) :
 Fréquence d’un Terme dans un document
France Labs
Bienvenue sur le site de France Labs.
Cré...
TF-IDF
Inverse Document Frequency (IDF):
 Rareté du terme dans l’ensemble de l’index
Expertise Lucene
Souhaitant interven...
TF-IDF
Norms :
 Taille des champs
Solr
Titre : Les moteurs de recherche
Content :
Apache Solr est une librairie de
recher...
Boosts:
 Privilégier un doc en particulier…
 Privilégier un champ par rapport à un autre…
 Privilégier les phrases exac...
Boosts
Boosts:
 Boost sur le Titre
Fonctionnalités
Titre : Fonctionnalités
Content :
Interface d'administration en HTML,
...
Scoring en Lucene
Des questions???
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
Le crawling de documents n’est PAS
le job de Solr
Mais il existe de nombreux outils
pour cela :
 DIH
 Nutch
 Aperture
...
Préparer les documents
 Convertir en XML, JSON, CSV (ou document riche avec Tika)
 Peut contenir plusieurs Docs
Indexati...
Poster les documents par HTTP
 Avec cURL (linux)
• Ex : curl http://localhost:8983/solr/collection1/update -H
"Content-ty...
Avec des clients spécifiques:
 SolrJ
• Client le plus évolué
 SolrNet
 rsolr
 SolPython
 SolPerl
 Solarium
 scalike...
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...
Schema
Déclaration des champs fixes:
Ou dynamiques:
Schema
Et des types de champs:
 Entier
 Date
 String
• Un seul morceau
 Text
• Text découpé et normalisé
• Avec un ana...
Analyzer
Coquilles SaintJacques
WordDelimiter
Coquilles Saint Jacques
Document Analysis
coquilles saint jacques
LowerCaseF...
Schema : Analyzer
Analyzers
Beaucoup d’analyzers prédéfinis
 Spécifiques au langage
Mais modulables : beaucoup de
composants disponibles :
...
Des questions???
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
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/ : con...
Exemple de retour
Type de requêtes
Type But Exemple
TermQuery
Simple terme
Peut être spécifique à un
champ
Tarte
Type:Dessert
PhraseQuery
Ma...
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
 Solr Cloud
Solr et son éco...
Spellchecker
Autocomplete
Facettes
Facettes
Géolocalisation
Autres fonctionnalités
More Like This
 Obtenir des documents similaires à un
document
 Similarité textuelle
Highlighting
Fonctionnalité
Joining
 Possibilité de faire une jointure sur plusieurs
indexes (clé primaire -> clé secondaire)
 Mais à...
Aplatir les données
 Dénormalisation
 Données redondantes
 Recherche rapide sur un seul index (pas de join)
Et les vôtres…
Solr est très orienté plugin
Possibilité de surcharger quasiment tout…
Configuration de Solr
Pour la configuration de Solr
(Presque) tout se passe dans 2 fichiers:
 Schema.xml
• Décrit les don...
Exemple:
Solrconfig.xml permet le paramètrage :
 Request Handler
 Composants associés (autocomplete, highlighting)
 Cac...
Des questions???
Demo
Démo !
Présentation de Solr
 Architecture SOLR
 Scoring
 Indexation
 Requêtage
 Fonctionnalités
 Solr Cloud
Solr et son éco...
Solr Cloud
Nouvelle architecture de Solr pour gérer la scalabilité
Nouveau système de mise à l’échelle de Solr
 Pack 2 en...
Zookeeper
Logiciel de gestion de configurations pour
système distribués
Contient les configs des indexs de Solr
Cloud
Les ...
Nouvelles notions
Sharding
 Un Shard est un morceau d’index
 Une recherche distribuée se fait sur tous les shards (ie su...
Nouvelles notions
Leader et Replica pour la réplication
 On n’a pas de maître/esclave mais des leader/replica
• Un replic...
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épl...
On démarre la première machine, envoie la
configuration et spécifie le nombre de shards voulus
Solr Cloud
Zookeeper
Config...
On démarre la deuxième machine, sans lui spécifier
de configuration mais en pointant sur le Zookeeper
Solr Cloud
Zookeeper...
On démarre la 3ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Solr Cloud
Zookeeper
Lea...
Replica Shard1
On démarre la 4ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper
Solr Clou...
Indexation
Distribution automatique des updates
Comment?
On envoie les docs à n’importe quelle machine
 Solr se charge de...
Leader 1 Leader 2
Replica 1 Replica 2
Solr Cloud
Indexer
Recherche
Distribution des recherches automatiques
Hors SolrJ :
 On registre les shards dans le load balancer
Avec SolrJ ...
Leader 1 Leader 2
Replica 1 Replica 2
Solr Cloud
Search
Search
Avantages
Architecture très flexible
 En cas d’augmentation de charge
• Ajout de machines qui pointent sur Zookeeper
• Si...
Des questions???
Demo
Démo !
Avantages
Réplication
 Automatique et fiable
Support du NRT
Distribution automatique des MAJs
Distribution automatique de...
Solr 5
Sortie imminente
Plus un WAR mais une application
Nouvelles fonctionnalités :
 IDF distribué
 Stats component amé...
Présentation de Solr
Solr et son écosystème
 Crawling des données
 Exemple de UI
 Outils sémantiques
 Hadoop
Présentation de Solr
Solr et son écosystème
 Crawling des données
 Exemple de UI
 Outils sémantiques
 Hadoop
Solr ne crawle PAS les données
Besoin d’un crawler pour :
 Connexion au système externe à crawler
 Récupération des donn...
Mode Push ou Pull
Crawling normal ou incrémental
Réglage de l’impact sur le système
crawlé
 Throttling
 Scheduling
En ca...
Apache Tika
Contribution de Solr
 Détection du Mime-type
 Embarque des librairies pour:
• Lire le contenu
• Extraire les...
Les crawlers
Differents Crawlers
 Nutch
• Crawler web distribué
 DIH
• Contrib de Solr
• Crawl DB, XML
 Aperture
• File...
Manifold CF
Basé sur « Connector Framework » développé par
Karl Wright pour la MetaCarta Appliance
Donné à l’Apache Softwa...
Manifold CF
Crawling incrémental
Gère les autorisations
Configuration par UI et API
Créé pour Solr
Architecture en mode pl...
Differents connecteurs pour :
 Content Repositories :
• SharePoint
• Windows Share
• CMIS (Alfresco)
• DB
• RSS
• Wiki
 ...
2 composants principaux:
 Pull agent:
• Contient les connecteurs (repository et output connectors)
• Récupère les données...
2 composants principaux:
 Authority service:
• Contient les authority connectors
• Liste de tous les tokens pour l’utilis...
Intégration avec Solr
 Exemple : crawl de fichiers avec autorisation
• Environnement :
- File Share Windows
- Active Dire...
Configuration côté Manifold CF
 Configuration du connecteur Samba
 Configuration du connecteur AD
 Configuration du con...
Modification du schéma Solr
 Ajout de champs pour indexer les ACLs
• AllowFile, DenyFile, AllowDirectory, DenyDirectory…
...
Manifold CF
AD
Manifold CF
pull Agent
Connecteur
JCIFS
Connecteur
Solr
Docs and
access tokens
Get User
access token
Reposi...
Manifold CF
AD
Manifold CF
pull Agent
Connecteur
JCIFS
Connecteur
Solr
Docs and
access tokens
Get User
access token
Reposi...
Des questions???
Présentation de Solr
Solr et son écosystème
 Crawling des 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 a...
AjaxFranceLabs
Manager
SearchBarWidget
ResultWidget
FacetWidget
Demo
Démo Datafari !
www.datafari.com
Présentation de Solr
Solr et son écosystème
 Crawling des 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...
Sémantique
UIMA (Unstructured Information Management Architecture)
 Framework Apache
 Plugin Solr
 Côté indexation
 Co...
UIMA
Ex : OpenNLP
 Part of speech
• Verbe nom…
 Extraction d’entités
• Lieu
• Personne
Présentation de Solr
Solr et son écosystème
 Crawling des données
 Exemple de UI
 Outils sémantiques
 Analytics
 Hado...
LogStash for Solr + Solr + Banana
Banana
Présentation de Solr
Solr et son écosystème
 Crawling des données
 Exemple de UI
 Outils sémantiques
 Hadoop
Hadoop
Créé par Doug Cutting
Framework open source
Inspiré par les papiers sur Google Map Reduce
et Google File System
Hadoop
1999
2002
2004
2010
2005
Hadoop
Scénarios Big Data
 Text mining
 Création et analyse de graphes
 Reconnaissance de patterns
 Moteurs de recomma...
Hadoop
Traiter des grands volumes de données en un
minimum de temps
Stocker des immenses volumes de données
Fonctionne sur...
Hadoop
Architecture (très) simplifiée de Hadoop
Nœud 1 Nœud 3Nœud 2 Nœud 4
Couche Traitement (Map Reduce)
Couche Stockage ...
Hadoop
Couche stockage (HDFS)
 Système de fichier distribué
 Utilise les disques « normaux » de chacun
des nœuds…
…pour ...
Hadoop
Couche traitement (Map Reduce)
 Hadoop exécute des jobs Map Reduce
 Notre algo doit donc implémenter:
• Un mapper...
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 d...
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 : Val...
Hadoop
Un exemple simple?
 On a en entrée plusieurs textes
 On veut compter le nombre d’occurrences
des mots
 De manièr...
Apache : 4
Solr : 2
Lucene : 3
…
Apache : 1
Apache : 1
Solr : 1
Lucene : 1
…
Apache : 1
Solr : 1
Lucene : 1
…
Apache : 1
L...
Hadoop
Distribution du l’algo en Map Reduce
Apache : 13 Apache : 44 Apache : 2
Lucene : 10
Open : 19
Solr : 10
Solr : 10 M...
Opération Map sur les documents sur chacun
des noeuds
Hadoop
Apache : 1
Apache : 1
Apache : 1 Apache : 1
Lucene : 1
Open :...
Hadoop
Echange des données entre les nœud (shuffle)
Nœud 1 Nœud 3Nœud 2 Nœud 4
Apache : 1
Apache : 1
Apache : 1 Apache : 1...
Lucene : 1
Manifold : 1
Open : 1
Opération de Reduce sur chacun des noeuds
Hadoop
Apache : 1
Apache : 1
Apache : 1
Apache ...
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 Hadoop des
traitements tel que:
 Identification de language
 Ext...
Possibilité de stocker l’index de Solr sur HDFS
 Stockage de gros volume de donnée
 Gestion de la réplication
 Utilisat...
Des questions???
Merci!!!
Sites web :
www.francelabs.com
www.datafari.com
Email : olivier.tavard@francelabs.com
Twitter : Francelabs
Presentation Lucene / Solr / Datafari - Nantes JUG
Prochain SlideShare
Chargement dans…5
×

Presentation Lucene / Solr / Datafari - Nantes JUG

1 524 vues

Publié le

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

Publié dans : Internet
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 524
Sur SlideShare
0
Issues des intégrations
0
Intégrations
20
Actions
Partages
0
Téléchargements
71
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Presentation Lucene / Solr / Datafari - Nantes JUG

  1. 1. Apache Solr Nantes JUG Aurélien MAZOYER Olivier TAVARD 16/02/15
  2. 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. 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. 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. 5. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  6. 6. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  7. 7. La recherche est un oignon!
  8. 8. La recherche est un oignon!
  9. 9. La recherche est un oignon matriciel!
  10. 10. Lucene
  11. 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)
  12. 12. Lucene Un outil qui permet:  De créer un index à partir de documents INDEX
  13. 13. Index
  14. 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. 15. Lucene Un outil qui permet:  De créer un index à partir de documents  D’effectuer des recherches dans cet index INDEX
  16. 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. 17. Lucene Indexation - Architecture Crawler Lucene analyzer Indexer INDEX
  18. 18. Lucene Requêtage - Architecture Query Parser Lucene analyzer Index Searcher type:voitures AND prix:[3000 TO 5000] INDEX
  19. 19. Analyzer Index coquilles saint Jacques …. Document Requête coquilles saint jacques Coquilles saint-jacques coquilles saint jacques Coquilles SaintJacques Lucene analyzer Lucene analyzer Indexation Requête Match!
  20. 20. Lucene est une simple bibliothèque Besoin d’une couche serveur… Lucene
  21. 21. Solr
  22. 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. 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. 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
  25. 25. © www,oblady,com Intéraction Solr / Monde extérieur Solr Update Handler Search Handler Lucene
  26. 26. © www,oblady,com Architecture (Virtual) Machine OS Java Virtual Machine Conteneur de servlet (Jetty, Tomcat) Solr faceting, replication, caching, distributed search, admin, Lucene best practices Lucene Java core search, analysis tools, hit highlighting, spell checking
  27. 27. Surcouche
  28. 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
  29. 29. Des questions???
  30. 30. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  31. 31. Scoring
  32. 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. 33. Scoring en Lucene Formule paramètrable Combinaison de  Boolean Model (Match)  Vector Space Model (Scoring) • Term Frequency • Inverse Document Frequency…  Boosts…
  34. 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. 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. 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. 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. 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.
  39. 39. Scoring en Lucene
  40. 40. Des questions???
  41. 41. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  42. 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. 43. Préparer les documents  Convertir en XML, JSON, CSV (ou document riche avec Tika)  Peut contenir plusieurs Docs Indexation
  44. 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. 45. Avec des clients spécifiques:  SolrJ • Client le plus évolué  SolrNet  rsolr  SolPython  SolPerl  Solarium  scalikesolr  … Clients
  46. 46. Documents visibles une fois commités Possibilité d’utiliser le « soft-commit » Pour avoir du NRT Latence d’indexation
  47. 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. 48. Schema Déclaration des champs fixes: Ou dynamiques:
  49. 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. 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
  51. 51. Schema : Analyzer
  52. 52. Analyzers Beaucoup d’analyzers prédéfinis  Spécifiques au langage Mais modulables : beaucoup de composants disponibles :  Ajout de synonymes  Stemming • manger, mangera => mang  Phonétique  …
  53. 53. Des questions???
  54. 54. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  55. 55. Première requête URL :  http://localhost:8983/solr/collection1/select... HTTP GET request  Web browser  Curl  SolrJ  …
  56. 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
  57. 57. Exemple de retour
  58. 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
  59. 59. Requêtage L’utilisateur peut donc faire des requêtes complexes :
  60. 60. Requêtage Mais fera plutôt des requêtes de ce type: A nous de faire avec… 
  61. 61. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  62. 62. Spellchecker
  63. 63. Autocomplete
  64. 64. Facettes Facettes
  65. 65. Géolocalisation
  66. 66. Autres fonctionnalités More Like This  Obtenir des documents similaires à un document  Similarité textuelle Highlighting
  67. 67. Fonctionnalité Joining  Possibilité de faire une jointure sur plusieurs indexes (clé primaire -> clé secondaire)  Mais à éviter  Préférer la dénormalisation
  68. 68. Aplatir les données  Dénormalisation
  69. 69.  Données redondantes  Recherche rapide sur un seul index (pas de join)
  70. 70. Et les vôtres… Solr est très orienté plugin Possibilité de surcharger quasiment tout…
  71. 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. 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…
  73. 73. Des questions???
  74. 74. Demo Démo !
  75. 75. Présentation de Solr  Architecture SOLR  Scoring  Indexation  Requêtage  Fonctionnalités  Solr Cloud Solr et son écosystème
  76. 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. 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. 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. 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. 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. 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. 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. 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. 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. 85. Indexation Distribution automatique des updates Comment? On envoie les docs à n’importe quelle machine  Solr se charge de les transmettre à la bonne machine
  86. 86. Leader 1 Leader 2 Replica 1 Replica 2 Solr Cloud Indexer
  87. 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
  88. 88. Leader 1 Leader 2 Replica 1 Replica 2 Solr Cloud Search Search
  89. 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
  90. 90. Des questions???
  91. 91. Demo Démo !
  92. 92. Avantages Réplication  Automatique et fiable Support du NRT Distribution automatique des MAJs Distribution automatique des recherches
  93. 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
  94. 94. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  95. 95. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  96. 96. 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
  97. 97. 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
  98. 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. 99. 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
  100. 100. 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)
  101. 101. Manifold CF Crawling incrémental Gère les autorisations Configuration par UI et API Créé pour Solr Architecture en mode plugin
  102. 102. Differents connecteurs pour :  Content Repositories : • SharePoint • Windows Share • CMIS (Alfresco) • DB • RSS • Wiki  Authorities: • AD • LDAP  Output repositories : • Solr • Elastic Search Manifold CF
  103. 103. 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
  104. 104. 2 composants principaux:  Authority service: • Contient les authority connectors • Liste de tous les tokens pour l’utilisateur courant Manifold CF
  105. 105. 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
  106. 106. Configuration côté Manifold CF  Configuration du connecteur Samba  Configuration du connecteur AD  Configuration du connecteur Solr Manifold CF
  107. 107. 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
  108. 108. 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
  109. 109. 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
  110. 110. Des questions???
  111. 111. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  112. 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. 113. AjaxFranceLabs Manager SearchBarWidget ResultWidget FacetWidget
  114. 114. Demo Démo Datafari ! www.datafari.com
  115. 115. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  116. 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. 117. 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
  118. 118. UIMA Ex : OpenNLP  Part of speech • Verbe nom…  Extraction d’entités • Lieu • Personne
  119. 119. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Analytics  Hadoop
  120. 120. LogStash for Solr + Solr + Banana Banana
  121. 121. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  122. 122. Hadoop Créé par Doug Cutting Framework open source Inspiré par les papiers sur Google Map Reduce et Google File System
  123. 123. Hadoop 1999 2002 2004 2010 2005
  124. 124. 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
  125. 125. 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
  126. 126. Hadoop Architecture (très) simplifiée de Hadoop Nœud 1 Nœud 3Nœud 2 Nœud 4 Couche Traitement (Map Reduce) Couche Stockage (HDFS)
  127. 127. 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)
  128. 128. 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
  129. 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. 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. 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 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.
  132. 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 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
  133. 133. 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
  134. 134. Opération Map sur 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 Nœud 1 Nœud 3Nœud 2 Nœud 4 Map Map Map Map
  135. 135. Hadoop Echange des données entre les nœud (shuffle) Nœud 1 Nœud 3Nœud 2 Nœud 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. 136. Lucene : 1 Manifold : 1 Open : 1 Opération de Reduce 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 Apache : 4 Solr : 3 Source : 2 Nœud 4 Reduce Nœud 3 Reduce Nœud 1 Reduce Nœud 2 Reduce
  137. 137. Créé par Doug Cutting Crawler Web Permet de crawler un large volume de données Basé sur Hadoop Nutch
  138. 138. 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
  139. 139. 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
  140. 140. Des questions???
  141. 141. Merci!!!
  142. 142. Sites web : www.francelabs.com www.datafari.com Email : olivier.tavard@francelabs.com Twitter : Francelabs

×