Solr
Aurélien MAZOYER
Olivier TAVARD
Introduction
A propos de moi :





Cofondateur de la société France Labs
Développeur (principalement Java)
Formateur ...
Introduction
Domaine:


Moteurs de recherche d'entreprise Open Source

2 activités:



Consulting/support/formation sur...
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 ...
Présentation de Solr








Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud

Solr et son ...
La recherche est un oignon!
La recherche est un oignon!
La recherche est un oignon matricielle!
Lucene
Lucene
Créé en 2000 par Doug Cutting. Version Actuelle :
Lucene v. 4.6 (Novembre 2013)
Projet Open Source, Apache depuis 2...
Lucene
Un outil qui permet:


De créer un index à partir de
documents

INDEX
Index
Document, fields, terms





Document : unité d’indexation
Field : partie d’un document, contient les données
Term : u...
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 sco...
Indexation - Architecture

Crawler

Lucene
analyzer

Indexer
INDEX
Lucene
Requêtage - Architecture
type:voitures AND prix:[3000 TO 5000]

Query
Parser

Lucene
analyzer

Index
Searcher

Lucene

IND...
Analyzer
Document

Requête

Coquilles SaintJacques

Coquilles saint-jacques

Lucene
analyzer

coquilles

saint

Lucene
ana...
Lucene
Lucene est une simple bibliothèque
Besoin d’une couche serveur…
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

...
Intéraction Solr / Monde extérieur

Update Handler

Search Handler

Lucene
Solr
© www,oblady,com
Architecture
(Virtual) Machine
OS
Java Virtual Machine

Conteneur de servlet (Jetty, Tomcat)
Solr

faceting, replication, ...
Surcouche
Surcouche
Besoin (parfois) d’une surcouche:





Interface WEB pour le client
Crawl des documents sur les différents s...
Des questions???
Présentation de Solr








Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud

Solr et son ...
Scoring
Scoring en Lucene

Formule paramètrable
Combinaison de



Boolean Model (Match)
Vector Space Model (Scoring)
•
•



Ter...
TF-IDF
Term Frequency (TF) :


Fréquence d’un Terme dans un document

France Labs
Bienvenue sur le site de France Labs.
C...
TF-IDF
Inverse Document Frequency (IDF):


Rareté du terme dans l’ensemble de l’index

Expertise Lucene
Souhaitant interv...
TF-IDF
Norms :


Taille des champs

Solr
Titre : Les moteurs de recherche
Content :
Apache Solr est une librairie de
rech...
Boosts
Boosts:







Privilégier un doc en particulier…
Privilégier un champ par rapport à un autre…
Privilégier le...
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 ...
Crawling
Le crawling de documents n’est PAS
le job de Solr
Mais il existe de nombreux outils
pour cela :
DIH
 Nutch
 Ape...
Indexation
Préparer les documents



Convertir en XML, JSON, CSV (ou document riche avec Tika)
Peut contenir plusieurs D...
Indexation
Poster les documents par HTTP


Avec cURL (linux)
•



Ex : curl http://localhost:8983/solr/collection1/updat...
Clients
Avec des clients spécifiques:


SolrJ
•









Client le plus évolué

SolrNet
rsolr
SolPython
SolPerl
So...
Latence d’indexation
Documents visibles une fois commités
Possibilité d’utiliser le « soft-commit »
Pour avoir du NRT
Pour la configuration de Solr

Pour la configuration de Solr
(Presque) tout se passe dans 2 fichiers:


Schema.xml
•



...
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 ...
Analyzer
Document Analysis

Query Analysis

Coquilles SaintJacques

Coquilles saint-jacques

WhitespaceTokenizer

Whitespa...
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 ...
Première requête
URL :


http://localhost:8983/solr/collection1/select...

HTTP GET request





Web browser
Curl
Sol...
Structure de la requête
http://localhost:8983/solr/collection1/select
?q=*:*&start=0&rows=10&fl=description
/solr/ : conte...
Exemple de retour
Type de requêtes
Type

But

Exemple

TermQuery

Simple terme
Peut être spécifique à un
champ

Tarte
Type:Dessert

PhraseQu...
Requêtage
L’utilisateur peut donc faire des requêtes
complexe:
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 ...
Spellchecker
Autocomplete
Facettes
Facettes
Géolocalisation
Autres fonctionnalités
More Like This



Obtenir des documents similaires à un
document
Similarité textuelle

Highlighti...
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 l...
Exemple:

Solrconfig.xml permet le paramètrage :
Request Handler
 Composants associés (autocomplete, highlighting)
 Cach...
Des questions???
Demo

Démo !
Présentation de Solr








Architecture SOLR
Scoring
Indexation
Requêtage
Fonctionnalités
Solr Cloud

Solr et son ...
Solr Cloud
Nouvelle architecture de Solr pour gérer la scalabilité
Nouveau système de mise à l’échelle de Solr


Pack 2 e...
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...
Nouvelles notions
Leader et Replica pour la réplication


On n’a pas de maître/esclave mais des leader/replica
•




Un...
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...
Solr Cloud
On démarre le première machine, envoie la
configuration et spécifie le nombre de shards voulus

ConfigIndex1
Le...
Solr Cloud
On démarre la deuxième machine, sans lui spécifier
de configuration mais en pointant sur le Zookeeper

Leader S...
Solr Cloud
On démarre la 3ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper

Leader Shard...
Solr Cloud
On démarre la 4ème machine, sans lui spécifier de
configuration mais en pointant sur le Zookeeper

Leader Shard...
Indexation
Distribution automatique des updates
Comment?
On envoie les docs à n’importe quelle machine


Solr se charge d...
Solr Cloud

Indexer

Leader 1

Leader 2

Replica 1

Replica 2
Recherche
Distribution des recherches automatique
Hors SolrJ :


On registre les shards dans le load balancer

Avec SolrJ...
Solr Cloud

Search

Search

Leader 1

Leader 2

Replica 1

Replica 2
Avantages
Architecture très flexible


En cas d’augmentation de charge
•
•



Ajout de machines qui pointent sur Zookeep...
Avantages
Réplication


Automatique et fiable

Support du NRT
Distribution automatique des MAJs
Distribution automatique ...
Des questions???
Demo

Démo !
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
Role
Solr ne crawle PAS les données
Besoin d’un crawler pour :




Connection au système externe à crawler
Récupération...
Role
Mode Push ou Pull
Crawling normal ou incrémental
Réglage de l’impact sur le système
crawlé



Throttling
Scheduling...
Extraction de contenu
Apache Tika
Contribution de Solr



Détection du Mime-type
Embarque des librairies pour:
•
•



L...
Les crawlers
Differents Crawlers


Nutch
•



DIH
•
•



Crawler web distribué
Contrib de Solr
Crawl DB, XML

Aperture
...
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...
Manifold CF
Differents connecteurs pour :


Content Repositories :
•
•
•

•
•
•



Authorities:
•
•



SharePoint
Windo...
Manifold CF
2 composants principaux:


Pull agent:
•
•
•

Contient les connecteurs (repository et output connectors)
Récu...
Manifold CF
2 composants principaux:


Authority service:
•
•

Contient les authority connectors
Liste de tous les tokens...
Manifold CF
Intégration avec Solr


Exemple : crawl de fichiers avec autorisation
•

Environnement :
- File Share Windows...
Manifold CF
Configuration côté Manifold CF




Configuration du connecteur JCIFS
Configuration du connecteur AD
Configu...
Manifold CF
Modification du schéma Solr


Ajout de champs pour indexés les ACLs
•



AllowFile, DenyFile, AllowDirectory...
Manifold CF
Repositories
Windows
Share

Connecteur
AD

Connecteur
JCIFS

Manifold CF
pull Agent

Indexation

Authorities

...
Manifold CF
Repositories
Windows
Share

Connecteur
JCIFS

Manifold CF
pull Agent
Connecteur
Solr

Requête
Front End

Docs ...
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 connex...
AjaxFranceLabs
SearchBarWidget

Manager
FacetWidget

ResultWidget
Demo

Démo !
Présentation de Solr
Solr et son écosystème
 Crawling des données
 Exemple de UI
 Outils sémantiques
 Hadoop
Sémantique
Le sémantique n‘est pas le travail de Solr
Fait seulement de la recherche full-text (mais
le fait bien )
Solr
...
Sémantique
UIMA (Unstructured Information Management Architecture)





Framework apache
Plugin Solr
Côté indexation
C...
UIMA
Ex : OpenNLP



Coté indexation ou requêtage
Part of speech
•



Verbe nom…

Extraction d’entités
•
•

Lieu
Person...
Natural Langage Processing
Solr + OpenNLP + custom code => outils de recherche en langage
naturel
Voir livre « Taming Text...
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
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

Couche Traitement (Map Reduce)
Nœud 2
Nœud 3
Couche Stockage (HDF...
Hadoop
Couche stockage (HDFS)





Système de fichier distribué
Utilise les disques « normaux » de chacun
des nœuds…
…p...
Hadoop
Couche traitement (Map Reduce)



Hadoop exécute des jobs Map Reduce
Notre algo doit donc implémenter:
•
•



Un...
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 : Va...
Hadoop
Reducer


Combine les valeurs ayant la même clé

Clé 1 : Val1
Clé 2 : Val2
Clé 1 : Val3
Clé 2 : Val4

Clé1 : Val5
...
Hadoop
Un exemple simple?





On a en entrée plusieurs textes
On veut compter le nombre d’occurrence
des mots
De mani...
Hadoop
Solr
Apache Solr est une
couche web open source
basée sur la librairie de
recherche Apache
Lucene. Elle ajoute des
...
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
...
Hadoop
Opération Map sur les documents sur chacun
des noeuds

Apache : 1
Lucene : 1
Nœud 1
Map

Apache : 1
Open : 1
Nœud 2...
Hadoop
Echange des données entre les nœud (shuffle)
Apache : 1
Lucene : 1

Nœud 1

Apache : 1
Open : 1
Solr : 1
Source : 1...
Hadoop
Opération de Reduce sur chacun des noeuds
Apache : 1
Apache : 1
Apache : 1
Apache : 1
Nœud 1
Apache : 4
Reduce

Luc...
Nutch
Créé par Doug Cutting
Crawler Web
Permet de crawler un large
volume de données
Basé sur Hadoop
Behemoth
Projet Apache
Surcouche d’Hadoop
Permet de déployer sur Hadoop des
traitements tel que:




Identification de ...
Solr directement couplé avec Hadoop
Possibilité de stocker l’index de Solr sur HDFS




Stockage de gros volume de donn...
Exemples d’utilisation d’Hadoop
Calcul du scoring des docs


Ex: PageRank calculé par le Google Map/Reduce

Web

Google M...
Exemples d’utilisation d’Hadoop
Calcul de recommandation


Ex: Linkedin
Exemples d’utilisation d’Hadoop
Voldemort
(Linkedin
filesystem)

Hadoop
(pour le calcul)

Web Server
(pour l’affichage)

D...
Hadoop
Voldemort
(Linkedin
filesystem)

Lucene
(pour le search)

Web Server (pour
l’affichage)

Données brutes

Indexation...
Des questions???
Merci!!!
Site web : www.francelabs.com
Email : aurelien.mazoyer@francelabs.com
Twitter : Francelabs
Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014
Prochain SlideShare
Chargement dans…5
×

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014

3 585 vues

Publié le

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.

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

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

Aucune remarque pour cette diapositive

Solr, c'est simple et Big Data ready - prez au Lyon jug Fév 2014

  1. 1. Solr Aurélien MAZOYER Olivier TAVARD
  2. 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. 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. 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 matricielle!
  10. 10. Lucene
  11. 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)
  12. 12. Lucene Un outil qui permet:  De créer un index à partir de documents INDEX
  13. 13. Index
  14. 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. 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. Indexation - Architecture Crawler Lucene analyzer Indexer INDEX Lucene
  18. 18. Requêtage - Architecture type:voitures AND prix:[3000 TO 5000] Query Parser Lucene analyzer Index Searcher Lucene INDEX
  19. 19. Analyzer Document Requête Coquilles SaintJacques Coquilles saint-jacques Lucene analyzer coquilles saint Lucene analyzer jacques coquilles Index Indexation saint Requête coquilles saint Jacques …. Match! jacques
  20. 20. Lucene Lucene est une simple bibliothèque Besoin d’une couche serveur…
  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.6 (Novembre 2013)
  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. Intéraction Solr / Monde extérieur Update Handler Search Handler Lucene Solr © www,oblady,com
  26. 26. 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 © www,oblady,com
  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 Gestions 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. Scoring en Lucene Formule paramètrable Combinaison de   Boolean Model (Match) Vector Space Model (Scoring) • •  Term Frequency Inverse Document Frequency… Boosts…
  33. 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. 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. 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. 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. 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.
  38. 38. Scoring en Lucene
  39. 39. Des questions???
  40. 40. Présentation de Solr       Architecture SOLR Scoring Indexation Requêtage Fonctionnalités Solr Cloud Solr et son écosystème
  41. 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 
  42. 42. Indexation Préparer les documents   Convertir en XML, JSON, CSV (ou document riche avec Tika) Peut contenir plusieurs Docs
  43. 43. Indexation 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
  44. 44. Clients Avec des clients spécifiques:  SolrJ •        Client le plus évolué SolrNet rsolr SolPython SolPerl SolPHP scalikesolr …
  45. 45. Latence d’indexation Documents visibles une fois commités Possibilité d’utiliser le « soft-commit » Pour avoir du NRT
  46. 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
  47. 47. Schema Déclaration des champs fixes: Ou dynamiques:
  48. 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. 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
  50. 50. Schema : Analyzer
  51. 51. 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 …
  52. 52. Des questions???
  53. 53. Présentation de Solr       Architecture SOLR Scoring Indexation Requêtage Fonctionnalités Solr Cloud Solr et son écosystème
  54. 54. Première requête URL :  http://localhost:8983/solr/collection1/select... HTTP GET request     Web browser Curl SolrJ …
  55. 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 
  56. 56. Exemple de retour
  57. 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
  58. 58. Requêtage L’utilisateur peut donc faire des requêtes complexe:
  59. 59. Requêtage Mais fera plutôt des requêtes de ce type: A nous de faire avec… 
  60. 60. Présentation de Solr       Architecture SOLR Scoring Indexation Requêtage Fonctionnalités Solr Cloud Solr et son écosystème
  61. 61. Spellchecker
  62. 62. Autocomplete
  63. 63. Facettes Facettes
  64. 64. Géolocalisation
  65. 65. Autres fonctionnalités More Like This   Obtenir des documents similaires à un document Similarité textuelle Highlighting
  66. 66. Et les vôtres… Solr est très orienté plugin Possibilité de surcharger quasiment tout…
  67. 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. 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… 
  69. 69. Des questions???
  70. 70. Demo Démo !
  71. 71. Présentation de Solr       Architecture SOLR Scoring Indexation Requêtage Fonctionnalités Solr Cloud Solr et son écosystème
  72. 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. 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. 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. 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. 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. 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. 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. 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. 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. 81. Indexation Distribution automatique des updates Comment? On envoie les docs à n’importe quelle machine  Solr se charge de les transmettre à la bonne machine
  82. 82. Solr Cloud Indexer Leader 1 Leader 2 Replica 1 Replica 2
  83. 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
  84. 84. Solr Cloud Search Search Leader 1 Leader 2 Replica 1 Replica 2
  85. 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
  86. 86. Avantages Réplication  Automatique et fiable Support du NRT Distribution automatique des MAJs Distribution automatique des recherches
  87. 87. Des questions???
  88. 88. Demo Démo !
  89. 89. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  90. 90. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  91. 91. 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
  92. 92. 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
  93. 93. 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
  94. 94. Les crawlers Differents Crawlers  Nutch •  DIH • •  Crawler web distribué Contrib de Solr Crawl DB, XML Aperture • File, Web Et Framework   Google Enterprise Connector Manifold CF
  95. 95. 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)
  96. 96. Manifold CF Crawling incrémental Gère les autorisations Configuration par UI et API Créé pour Solr Architecture en mode plugin
  97. 97. Manifold CF Differents connecteurs pour :  Content Repositories : • • • • • •  Authorities: • •  SharePoint Windows Share CMIS (Alfresco) DB RSS Wiki AD LDAP Output repositories : • • Solr Elastic Search
  98. 98. 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
  99. 99. Manifold CF 2 composants principaux:  Authority service: • • Contient les authority connectors Liste de tous les tokens pour l’utilisateur courant
  100. 100. 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
  101. 101. Manifold CF Configuration côté Manifold CF    Configuration du connecteur JCIFS Configuration du connecteur AD Configuration du connecteur Solr
  102. 102. 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
  103. 103. Manifold CF Repositories Windows Share Connecteur AD Connecteur JCIFS Manifold CF pull Agent Indexation Authorities Manifold CF AD Manifold CF authority service Connecteur Solr Get User access token Docs and access tokens Solr MCF Search Plugin Output
  104. 104. 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
  105. 105. Des questions???
  106. 106. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  107. 107. 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
  108. 108. AjaxFranceLabs SearchBarWidget Manager FacetWidget ResultWidget
  109. 109. Demo Démo !
  110. 110. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  111. 111. 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
  112. 112. 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
  113. 113. UIMA Ex : OpenNLP   Coté indexation ou requêtage Part of speech •  Verbe nom… Extraction d’entités • • Lieu Personne
  114. 114. Natural Langage Processing Solr + OpenNLP + custom code => outils de recherche en langage naturel Voir livre « Taming Text » de Grant Ingersoll
  115. 115. Présentation de Solr Solr et son écosystème  Crawling des données  Exemple de UI  Outils sémantiques  Hadoop
  116. 116. Hadoop Créé par Doug Cutting Framework open source Inspiré par les papiers sur Google Map Reduce et Google File System
  117. 117. 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
  118. 118. Hadoop Architecture (très) simplifiée de Hadoop Nœud 1 Couche Traitement (Map Reduce) Nœud 2 Nœud 3 Couche Stockage (HDFS) Nœud 4
  119. 119. 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)
  120. 120. 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
  121. 121. 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
  122. 122. Hadoop Reducer  Combine les valeurs ayant la même clé Clé 1 : Val1 Clé 2 : Val2 Clé 1 : Val3 Clé 2 : Val4 Clé1 : Val5 Clé2 : Val6 Reducer
  123. 123. 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.
  124. 124. 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
  125. 125. 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
  126. 126. Hadoop Opération Map sur les documents sur chacun des noeuds Apache : 1 Lucene : 1 Nœud 1 Map Apache : 1 Open : 1 Nœud 2 Solr : 1 Map Source : 1 Apache : 1 Nœud Solr : 1 3 SolrMap :1 Apache : 1 Nœud 4 Manifold : 1 Map Source : 1
  127. 127. Hadoop Echange des données entre les nœud (shuffle) Apache : 1 Lucene : 1 Nœud 1 Apache : 1 Open : 1 Solr : 1 Source : 1 Apache : 1 Solr : 1 Solr : 1 Apache : 1 Manifold : 1 Nœud 2 Nœud 3 Nœud 4 Source : 1
  128. 128. Hadoop Opération de Reduce sur chacun des noeuds Apache : 1 Apache : 1 Apache : 1 Apache : 1 Nœud 1 Apache : 4 Reduce Lucene : 1 Manifold : 1 Open : 1 Lucene : 1 Nœud 2 Manifold : 1 Reduce Open : 1 Solr : 1 Solr : 1 Solr : 1 Source : 1 Nœud 3 Solr : 3 Reduce Nœud 4 Source : 2 Reduce Source : 1
  129. 129. Nutch Créé par Doug Cutting Crawler Web Permet de crawler un large volume de données Basé sur Hadoop
  130. 130. Behemoth Projet Apache Surcouche d’Hadoop Permet de déployer sur Hadoop des traitements tel que:    Identification de language Extraction de contenu (Tika) Pipeline UIMA
  131. 131. 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
  132. 132. 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)
  133. 133. Exemples d’utilisation d’Hadoop Calcul de recommandation  Ex: Linkedin
  134. 134. Exemples d’utilisation d’Hadoop 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
  135. 135. Hadoop 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
  136. 136. Des questions???
  137. 137. Merci!!!
  138. 138. Site web : www.francelabs.com Email : aurelien.mazoyer@francelabs.com Twitter : Francelabs

×