Lucene/Solr

Marseille JUG
28/11/13
Olivier TAVARD
Introduction



A propos de moi :






Cofondateur de la société France Labs
Développeur
Formateur

A propos de Fran...
Introduction





Domaine: Moteurs de recherche d'entreprise Open
Source
2 activités:
 Consulting/support/training sur
...
Pourquoi les technologies Lucene/Solr ?



Besoins d'entreprise : avoir une bonne solution
logicielle, avec un support fi...
Architecture
La recherche est un oignon !
Architecture
La recherche est un oignon !
Architecture
La recherche est un oignon matriciel !
Architecture
Lucene
Lucene








Créé en 2000 par Doug Cutting. Version
Actuelle : Lucene v. 4.6 (Novembre 2013)
Projet Open Source, Ap...
Lucene
Différence avec une base de données






Plus rapide pour récupérer un doc à
partir de son contenu
Résultats s...
Lucene



Un outil qui permet:
De créer un index à partir
de documents
 D’effectuer des
recherches dans cet index


IND...
Lucene
Index inversé

© http://untiluknow.blogspot.com
Lucene
Scoring
Lucene
Scoring





Formule paramètrable
Combinaison de
Boolean Model
 Vector Space Model


•
•
•

Term Frequency
Inve...
Lucene
Scoring


Term Frequency (TF) :


Fréquence d’un Terme dans un document

France Labs
Bienvenue sur le site de Fra...
Lucene
Scoring


Inverse Document Frequency (IDF):


Rareté du terme dans l’ensemble du corpus

Expertise Lucene
Souhait...
Lucene
Document
Document : unité d’indexation
 Field : partie d’un document, contient les
données
 Term : unité atomique...
Lucene
Scoring


Boosts:
Modifie le score d’un document
 Si Boost > 1


•



Score du doc plus élevé

A l’indexation:
...
Lucene
Scoring


Boosts:


A la requête:
•
•
•

Boost sur certains champs
Boost sur certaines valeurs de la requête
Et d...
Lucene
Scoring


Boosts:


Boost sur le Titre

Fonctionnalités
Titre : Fonctionnalités
Content :
Interface
d'administrat...
Lucene
Recherche pertinente




Récupérer les bons résultats…
… et seulement ceux là
Precision




Pourcentage de docs...
Lucene
Indexation - Architecture

Apache Tika

© Lucene in Action, Second Edition
Lucene
2 étapes

Query
Parser
Parser

Analyzer

Analyzer

Index Writer

Results

Index
Searcher
Lucene
Analyzer

Analyzer
Chaine de composants
 Extraction de termes du texte
 Normaliser les données
 A l'indexation/R...
Lucene
Analyzer

Différents analyzers:


Spécifique au langage
•

Stemming, Stopwords…

Analyzer phonétique
 Spécifique ...
Lucene
Différents Analyzers

© Lucene introduction, Otis Gospodnetic
Lucene
Requêtes – Comment les créer


Créées programmatiquement à partir
d’une interface
Lucene
Query



Créées à partir...
Lucene
Match
Document Analysis

Query Analysis

Coquilles SaintJacques

Coquilles saint-jacques

WhitespaceTokenizer

Whit...
Lucene
Schema Global

© Lucene in Action, Second Edition
Lucene
Pourquoi ce n’est pas suffisant?


"Simple" bibliothèque



Besoin d’une couche serveur et d’une UI
Lucene
Quizz anti-sommeil




Lucene a été créé en: 1999, 2000, 2010 ?
Lucene est une servlet?
Marseille est la capital...
Architecture
Solr
Solr










Lucene « embarqué » dans une webapp
Créé en 2004 par Yonik Seeley à CENT
Networks
In 2006, Solr devien...
Solr







APIs XML/HTTP de type REST
Configuration par fichiers XML
Mécanisme de Cache, Réplication
Interface admin ...
Solr
Interfaces


Interfaces HTTP pour :


ajouter des documents (POST)
•



http://localhost:8983/solr/update

effectu...
Solr
Architecture

© www,oblady,com
Installer SOLR
Installer et tester Solr en 1 minute

Télécharger le dernier binaire (V.4.6 11/13)
http://lucene.apache.org...
Solr
Functionnalités


Queries







Phrase query
Wildcard query
Range query
Proximity query
Fuzzy query
Boolean q...
Solr
Functionnalités


Autocomplete
Solr
Functionnalités


Spellchecker
Solr
Functionnalités


Faceting
Solr
Functionnalités


Geospatial search
Solr
Functionnalités


More Like This
Obtenir des documents similaires à un
document
 Similarité textuelle




Highlig...
Solr
Quizz anti-sommeil I



Solr est un projet Apache, mais sous
quelle licence ?



Que fait Solr par rapport à Lucene...
Indexer des documents
Indexer des documents
Indexer des documents
Indexer des documents


Récupérer les documents
Apache ManifoldCF
 Google Connectors
 Nutch
 Ape...
Indexer des documents
Indexer des documents


Poster les documents par HTTP


Avec cURL (linux)
•



Ex : curl http://l...
Indexer des documents
Indexer des documents


Mise à jour:




Document en entier

Depuis Solr 4.0:


Modifier la vale...
Construire son schéma
Schema.xml


Décrit les données :




Contient les champs d’un document

Et la façon de les trait...
Construire son schéma
Schema.xml


Types des champs des documents à indexer




Liste des champs des documents




Te...
Construire son schéma
Schema.xml
Construire son schéma
Schema.xml


Exemple de schéma simple :


Voitures :
Configurer Solr
SolrConfig.xml

Principal fichier de configuration
de Solr
Lié à une collection
 Définit les interactions...
Interroger Solr (queries)
Select


URL : select




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

HTTP GET request
Web browser
...
Interroger Solr
1ère recherche


Recherche sur tout le contenu
http://localhost:8983/solr/select?q=*:*
 *:* : recherche ...
Interroger Solr
UI Admin


Accessible à cette URL :
http://localhost:8983/solr/admin
 Complètement redesignée pour Solr ...
Interroger Solr
UI Admin
Interroger Solr
UI Admin
Interroger Solr
1ère recherche

Démo !
Interroger Solr
Structure de l’URL


http://localhost:8983/solr/formation/select?
q=*:*&start=0&rows=10&fl=description
/s...
SolrJ
Définition




SolrJ (aussi connu sous le nom de SolJava) :
API pour communiquer avec Solr au travers
d'applicatio...
SolrJ
Définition


Simple à utiliser :
Création d'un SolrServer
 Envoi de SolrQuery
 Réception de SolrResponse

SolrJ
Communication avec le Solr server


Connexion HTTP
Les données sont envoyées en javabin par défaut :
gain de rapidi...
SolrJ
Exemple complet


Exemple :
Communication avec le serveur Solr en HTTP
 Indexation de documents
 Interrogation de...
SolrJ
Exemple complet


Communication avec Solr en HTTP
String serverUrl =
"http://localhost:8983/solr/collection1";
Http...
SolrJ
Exemple complet


Indexation
//solr.setParser(new BinaryResponseParser());
SolrInputDocument doc1 = new
SolrInputDo...
SolrJ
Exemple complet


Requête
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
query.setStart(0);
query.setRow...
SolrJ
Exemple complet


Réponse
QueryResponse response = solr.query(query);
SolrDocumentList docs = response.getResults()...
SolrJ
Exemple complet


Réponse
On obtient dans la console :
INFO: Creating new http client,
config:maxConnections=128&ma...
Solr
Quizz anti-sommeil III


SolrJ est le 2eme nom de DJ McSolaar ?



Solr permet d’analyser graphiquement les
statist...
Solr
Performances


Scaling


1 serveur Solr peut gérer
•
•



Des millions de documents
À peu près 1000 queries /secon...
Scalability
Replication

Indexing

Master
Maître
Replicate

Slave

Slave

Load
Requêtes Balancer
Requêtes
Queries
Scalability
Distributed Search

Subquery

Shard1
Queries

Aggregated
results

Shard2

Shard3
Solr Cloud
Solr Cloud


Nouvelle architecture pour la scalabilité




En développement

Nouveau système de mise à l’éch...
Solr Cloud
Zookeeper




Logiciel de gestion de configurations
pour système distribués
Contient les configs des collecti...
Solr Cloud
1 collection - 2 shards
Solr Cloud
1 collection - 2 shards


Première instance avec Zookeeper
embarqué:



Deuxième instance:



Visualisation:
Solr Cloud
1 collection - 2 shards
Solr Cloud
1 collection - 2 shards – 2 replicas
Solr Cloud
1 collection - 2 shards – 2 replicas


Pas de Maître/Esclave




Mais Leaders et réplicas

1 Leader par shar...
Solr Cloud
1 collection - 2 shards – 2 replicas


Comment sont assignées les instances de
Solr?
Automatiquement lors du d...
Solr Cloud
Indexation


On utilise un CloudSolrServer en SolrJ


Pointé sur Zookeeper
•
•

Transfert au shard concerné
I...
Solr Cloud
Indexation


On envoie les docs à n’importe quelle machine


Si la machine est une replica
•



Envoie les d...
Solr Cloud
Recherche



Recherche sur n’importe quelle machine
Near Real Time


Peut avoir un délai
•

Suivant que l’up...
Scalability
Solr Cloud


Solr Cloud
Solr Cloud
Avantages


Architecture très flexible


En cas d’augmentation de charge
•



En cas de diminution de charge...
Solr Cloud
Avantages


Réplication





Automatique et fiable

Distribution automatique des MAJs
Distribution automati...
Solr Cloud
Désavantages


Indexation plus lente




Transmissions des docs entre shards

Nouvel environnement
Certaines...
Connecteurs et écosystème Solr

Marseille JUG
28/11/13
Olivier TAVARD
Crawler
Role





Se connecter à un système externe
Crawler les données
Autorisations des données
crawlées
Early Bindin...
Crawler
Role






Mode push ou pull
Extraire le contenu
Crawling normal ou delta
Minimiser l'impact sur le système
cr...
Crawler
Crawlers


Beaucoup de Crawlers open source


Aperture
•



Nutch
•



File

DIH
•



File, Web

DB, XML

Et ...
DIH
Définition


DIH : Data Import handler
Contribution à Solr (répertoire contrib)
 Permet de traiter et d'importer des...
DIH
Définition


DIH : Data Import handler


Interface d'administration :
http://localhost:8983/solr/#/collection1/datai...
SolrCell
Définition


Extraction Request Handler aka Solr Cell
Indexation de documents riches (PDF, Office,
images, etc…)...
Apache Tika


Extraction de contenu :
Détection du Mime-type
 Librairies embarquées


•
•



Lecture du contenu
Extrac...
Crawler
Google Connector Manager


Google Connector Manager





Pas créé pour Solr





Créé par Google pour le Go...
Crawler
Google Connector Manager


Connectors :






File Share
DB
EDM (Alfresco, Nuxeo)
Email
XML
Crawler
Manifold CF

Basé sur le « Connector Framework »
developpé by Karl Wright pour l’appliance
MetaCarta
 Donné à la ...
Crawler
Manifold CF







Delta Crawling
Authorization service
IHM et API de configuration
Pensé pour Solr
Architect...
Crawler
Manifold CF
 Connecteurs disponibles :


Content Repositories:
•
•



Authorities:
•
•



SharePoint, Document...
Crawler
Manifold CF
Manifold CF
Windows
Share

Conn. 1

Conn. 1

AD

Sharepoint

Conn. 2

Conn. 1

OpenLDAP

Repositories
...
Ajaxfrancelabs: Ajax framework
Pour Solr et Constellio







Inspiré par AjaxSolr
Côté client
Javascript + ajax
Four...
Ajaxfrancelabs: Ajax framework
ManifoldCF, Francellio
Démo !

Démo !
Hadoop
Vue d’ensemble




Créé par Doug Cutting
Framework open source
Inspiré par les papiers sur Google Map Reduce
et ...
Hadoop
Avantages






Traiter des grands volumes de données en un
minimum de temps
Stocker des immenses volumes de don...
Problématiques adressées
Définition


Framework open source pour écrire et
exécuter des applications distribuées qui
trai...
Problématiques adressées
Définition
Mise à l'échelle
Mise à l'échelle linéaire pour gérer de larges
volumes de données en ...
Architecture de Hadoop



Architecture logique
Storage layer
 Execution layer

Architecture de Hadoop


Les utilisateurs peuvent soumettre des jobs :
•
•

S'exécutent sur l'execution layer
Lecture/Ecr...
Architecture de Hadoop



Storage layer :
Hadoop Distributed File System (HDFS)
• S'exécute au dessus du système de fichi...
Architecture de Hadoop



Execution layer :
Hadoop Map-Reduce
• Responsable de lancer un job en parallèle sur plusieurs
s...
Architecture de Hadoop



Scalable :
•

Couches de stockage et d'excéution sont sur plusieurs
nodes (serveurs)
Architecture de Hadoop



Fiable :
•
•
•
•

Chaque bloc est répliqué, généralement 3 fois
Chaque bloc fait l'objet d'une ...
Architecture de Hadoop



Tolérant aux pannes :
•
•
•

Toutes les tâches échouées sont automatiquement
réessayées
Les tra...
Architecture de Hadoop



Simple:
•
•

Réduit la complexité
Système d'exploitation conceptuel qui gère plusieurs
CPU et d...
Architecture de Hadoop



Cluster Hadoop typique:
•

A un serveur maître
- Processus qui gère le système de fichiers
- Pr...
Hadoop
HDFS




Données converties en blocs
et distribuées sur des nœuds
Chaque bloc est répliqué
Nœud maître

TaskTrack...
Hadoop
Map/Reduce



Map : données sous forme clés/valeurs
Reduce : fusion par clé pour former résultat

fichier d’entré...
Hadoop
Ecosystème Hadoop

http://cloudstory.in/2012/04/introduction-to-big-data-hadoop-ecosystem-part-1/
Démonstration par l’exemple
Big Search dans la vraie vie


Exemples d’entreprises utilisant différentes
technologies pour...
Démonstration du big data par l’exemple
Google



1 000 000 000 000 d’URLS uniques (2008)
Pagerank : le ranking d’une pa...
Démonstration par l’exemple
Google


Construire PageRank grâce à Map/reduce

Web

Google Map/Reduce
(≠ Hadoop
Mapreduce) ...
Démonstration par l’exemple
Linkedin
Démonstration par l’exemple
1er cas : Hadoop pur pour les recommandations

Voldemort
(Linkedin
filesystem)

Hadoop
(pour l...
Démonstration par l’exemple
2e cas : Lucene pur pour la recherche d’utilisateurs

Voldemort
(Linkedin
filesystem)

Lucene
...
Démonstration par l’exemple
Zoosk
Démonstration par l’exemple
Zoosk


Big Search avec Solr
Recherche de profil
 Flux d’actualités
 Trouver un partenaire
...
Démonstration par l’exemple
Cloudera Search


Index Solr sur HDFS


Avantages de HDFS sur l’index
•
•

Réplication
Haute...
Démonstration par l’exemple
Behemoth et Solr


Behemoth
Projet Apache
 Framework pour déployer des applications UIMA
sur...
Démonstration par l’exemple
Behemoth et Solr


Behemoth et Solr


Ex: SolrCloud, Behemoth, Solr
•
•

Extraction de conte...
Plan








Big Search
Solr/Constellio
Hadoop
Démonstration par l’exemple
Démonstration Hadoop/Solr
Démonstration Hadoop/Solr
Objectif


rechercher n’importe quel mot dans Solr et
pouvoir trouver toutes les expressions de...
Démonstration Hadoop/Solr



Input Hadoop


2 livres de Jules Verne : Le Tour du Monde en 80
jours et De la Terre à la L...
Démonstration Hadoop/Solr



Map/Reduce
Mapper
Découpage des phrases en un ensemble de 2
mots associé au livre
Exemple d’...
Démonstration Hadoop/Solr



Map/Reduce


Reducer
Le reducer va se charger de grouper les
expressions ayant plusieurs li...
Démonstration Hadoop/Solr



Solr


2 champs qui seront phrase et doc :
Démonstration Hadoop/Solr
Etapes
‘De la Terre
à la Lune’:
‘...on se
conduit en
héros, et,
deux ans,
trois ans
plus tard…’
...
France Labs
Résumé


Expertise sur:
Lucene
 Solr
 Constellio




Nouvelles
technologies
innovantes
Contacts

Site web : www.francelabs.com
Email : olivier.tavard@francelabs.com
Twitter : Francelabs
Prochain SlideShare
Chargement dans…5
×

Marseille JUG Novembre 2013 Lucene Solr France Labs

3 154 vues

Publié le

Talk about Apache Lucene Solr, connectors (Apache ManifoldCF) and Big Data (Apache Hadoop)

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

Aucun téléchargement
Vues
Nombre de vues
3 154
Sur SlideShare
0
Issues des intégrations
0
Intégrations
17
Actions
Partages
0
Téléchargements
40
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Marseille JUG Novembre 2013 Lucene Solr France Labs

  1. 1. Lucene/Solr Marseille JUG 28/11/13 Olivier TAVARD
  2. 2. Introduction  A propos de moi :     Cofondateur de la société France Labs Développeur Formateur A propos de France Labs :   Startup créée en 2011 Unique Partenaire officiel de LucidWorks et de Constellio pour la France
  3. 3. Introduction   Domaine: Moteurs de recherche d'entreprise Open Source 2 activités:  Consulting/support/training sur Lucene/Solr/Constellio/LucidWorks  R&D (algorithmes de ranking, connecteurs, réseaux sociaux)
  4. 4. Pourquoi les technologies Lucene/Solr ?  Besoins d'entreprise : avoir une bonne solution logicielle, avec un support fiable  Par conséquent notre choix de Lucene/Solr : Large communauté autour de Lucene/Solr  Schémas de support professionnel pour Lucene/Solr  Solr 4 pensé pour le calcul distribué  Utilisé par Twitter, Linkedin, eBay, Salesforce, IBM, Apple 
  5. 5. Architecture La recherche est un oignon !
  6. 6. Architecture La recherche est un oignon !
  7. 7. Architecture La recherche est un oignon matriciel !
  8. 8. Architecture Lucene
  9. 9. Lucene      Créé en 2000 par Doug Cutting. Version Actuelle : Lucene v. 4.6 (Novembre 2013) Projet Open Source, Apache depuis 2001 Librairie de recherche “full-text” Rapide, stable, performant, modulable 100% Java (pas de dépendances)
  10. 10. Lucene Différence avec une base de données     Plus rapide pour récupérer un doc à partir de son contenu Résultats scorés Non relationnelle, structure non fixe Champs qui peuvent contenir plusieurs valeurs
  11. 11. Lucene  Un outil qui permet: De créer un index à partir de documents  D’effectuer des recherches dans cet index  INDEX
  12. 12. Lucene Index inversé © http://untiluknow.blogspot.com
  13. 13. Lucene Scoring
  14. 14. Lucene Scoring   Formule paramètrable Combinaison de Boolean Model  Vector Space Model  • • • Term Frequency Inverse Document Frequency …
  15. 15. Lucene Scoring  Term Frequency (TF) :  Fréquence d’un Terme dans un document France Labs Bienvenue sur le site de France Labs. Créée en 2011, France Labs est une société composée d'experts en gestion de l'information. Que ce soit pour de l'expertise, pour nos produits ou pour nos solutions métiers, nous faisons en sorte que vous augmentiez votre efficacité par une meilleure exploitation de vos données. France Labs, spécialiste des outils de recherche open source, propose des plugins innovants et des services de conseil, intégration et maintenance, sur Lucene, Solr et Constellio. Europe, nous sommes le partenaire de Constellio, solution complète de recherche.
  16. 16. Lucene Scoring  Inverse Document Frequency (IDF):  Rareté du terme dans l’ensemble du corpus Expertise Lucene Souhaitant intervenir plus en amont dans la vie de l’entreprise, pour vous proposer toujours plus de conseils à partir de nos expertises, Expertise & Conseil a créé Formation & Conseil : une structure de formation destinée aux acteurs de performance de l’entreprise. Apache Lucene, la fameuse technologie pour l’indexation, la recherche et l’analyse du texte est la base de plusieurs serveurs Open Source. La présentation détaillera Solr et ElasticSearch sous la forme « Tools in Action » - démonstrations en direct des différents outils.
  17. 17. Lucene Document Document : unité d’indexation  Field : partie d’un document, contient les données  Term : unité atomique d’un champ  Si on veut indexer un livre, on aura:  Title : Lucene in Action • Author : Erik Hatcher, Otis Gospodnetid • Description : Lucene is a gem in the open-source... • Content : … Term Field • … • Document
  18. 18. Lucene Scoring  Boosts: Modifie le score d’un document  Si Boost > 1  •  Score du doc plus élevé A l’indexation: • Peut se faire sur les champs: - Field Boost • Sur un document en entier: - Document Boost
  19. 19. Lucene Scoring  Boosts:  A la requête: • • • Boost sur certains champs Boost sur certaines valeurs de la requête Et d’autres cas…
  20. 20. Lucene Scoring  Boosts:  Boost sur le Titre Fonctionnalités Titre : Fonctionnalités Content : Interface d'administration en HTML, Réplication, Mise en cache Recherche distribuée, Recherche à facettes, Recherche géospatiale ,API HTTP/XML, JSON et bibliothèques pour les langages de script Python et Ruby, Intégration des bases de données Titre : Highlighter Content : Cette fonctionnalité permet de mettre en surbrillance les termes recherchés. Ce principe est le même que les pages "en cache" de Google où les termes recherchés apparaissent surlignés en jaune. C'est une fonctionnalité puissante et pratique.
  21. 21. Lucene Recherche pertinente   Récupérer les bons résultats… … et seulement ceux là Precision   Pourcentage de docs pertinents sur les docs retournés Recall  Pourcentage de docs pertinents retournés sur le total des docs pertinents  Trouver un bon compromis… Documents Pertinents Docs retournés et pertinents Document Retournés
  22. 22. Lucene Indexation - Architecture Apache Tika © Lucene in Action, Second Edition
  23. 23. Lucene 2 étapes Query Parser Parser Analyzer Analyzer Index Writer Results Index Searcher
  24. 24. Lucene Analyzer Analyzer Chaine de composants  Extraction de termes du texte  Normaliser les données  A l'indexation/Requête  LowerCaseFilter … WhiteSpace Tokenizer StopFilter …
  25. 25. Lucene Analyzer Différents analyzers:  Spécifique au langage • Stemming, Stopwords… Analyzer phonétique  Spécifique aux données  • • • Chemin Nom du fichier …
  26. 26. Lucene Différents Analyzers © Lucene introduction, Otis Gospodnetic
  27. 27. Lucene Requêtes – Comment les créer  Créées programmatiquement à partir d’une interface Lucene Query  Créées à partir d’une chaîne de caractères parsée par un “Query Parser” Lucene Query type:voitures AND prix:[3000 TO 5000] Query Parser
  28. 28. Lucene Match Document Analysis Query Analysis Coquilles SaintJacques Coquilles saint-jacques WhitespaceTokenizer WhitespaceTokenizer Coquilles SaintJacques Coquilles WordDelimiter Coquilles Saint WordDelimiter Jacques Coquilles LowerCaseFilter coquilles saint saint-jacques saint jacques LowerCaseFilter jacques coquilles Match saint jacques
  29. 29. Lucene Schema Global © Lucene in Action, Second Edition
  30. 30. Lucene Pourquoi ce n’est pas suffisant?  "Simple" bibliothèque  Besoin d’une couche serveur et d’une UI
  31. 31. Lucene Quizz anti-sommeil    Lucene a été créé en: 1999, 2000, 2010 ? Lucene est une servlet? Marseille est la capitale de la ?
  32. 32. Architecture Solr
  33. 33. Solr      Lucene « embarqué » dans une webapp Créé en 2004 par Yonik Seeley à CENT Networks In 2006, Solr devient open-source et été cédé à la Apache Software Foundation En 2010, fusion des projets Lucene et Solr Version Actuelle : Sorl 4.6 (Novembre 2013)
  34. 34. Solr     APIs XML/HTTP de type REST Configuration par fichiers XML Mécanisme de Cache, Réplication Interface admin web
  35. 35. Solr Interfaces  Interfaces HTTP pour :  ajouter des documents (POST) •  http://localhost:8983/solr/update effectuer des recherches (GET) • http://localhost:8983/solr/select
  36. 36. Solr Architecture © www,oblady,com
  37. 37. Installer SOLR Installer et tester Solr en 1 minute Télécharger le dernier binaire (V.4.6 11/13) http://lucene.apache.org/solr/  Extraire le zip  Lancer java –jar start.jar dans apache-solr-4.4.0/example/  http://localhost:8983/solr 
  38. 38. Solr Functionnalités  Queries       Phrase query Wildcard query Range query Proximity query Fuzzy query Boolean query
  39. 39. Solr Functionnalités  Autocomplete
  40. 40. Solr Functionnalités  Spellchecker
  41. 41. Solr Functionnalités  Faceting
  42. 42. Solr Functionnalités  Geospatial search
  43. 43. Solr Functionnalités  More Like This Obtenir des documents similaires à un document  Similarité textuelle   Highlighting  Synonymes
  44. 44. Solr Quizz anti-sommeil I  Solr est un projet Apache, mais sous quelle licence ?  Que fait Solr par rapport à Lucene ?
  45. 45. Indexer des documents Indexer des documents
  46. 46. Indexer des documents Indexer des documents  Récupérer les documents Apache ManifoldCF  Google Connectors  Nutch  Aperture   Préparer les documents Convertir en XML ou JSON  Respecter le schema.xml  Peut contenir plusieurs Docs 
  47. 47. Indexer des documents Indexer des documents  Poster les documents par HTTP  Avec cURL (linux) •  Ex : curl http://localhost:8983/solr/collection1/update H "Content-type:text/xml" --data-binary @mem.xml Post.jar et Post.sh • Ex : java -jar post.jar *.xml
  48. 48. Indexer des documents Indexer des documents  Mise à jour:   Document en entier Depuis Solr 4.0:  Modifier la valeur d’un field
  49. 49. Construire son schéma Schema.xml  Décrit les données :   Contient les champs d’un document Et la façon de les traiter (Analyzer): Au moment de l’indexation d’un document  Au moment de la requête 
  50. 50. Construire son schéma Schema.xml  Types des champs des documents à indexer   Liste des champs des documents   Text, String, Date…. Id, author, type…. Clé unique par document Manuel  UUID 
  51. 51. Construire son schéma Schema.xml
  52. 52. Construire son schéma Schema.xml  Exemple de schéma simple :  Voitures :
  53. 53. Configurer Solr SolrConfig.xml Principal fichier de configuration de Solr Lié à une collection  Définit les interactions avec les clients (requêtes)  •  Ajout de fonctionnalités Comportement interne du serveur
  54. 54. Interroger Solr (queries) Select  URL : select   http://localhost:8983/solr/select... HTTP GET request Web browser  Curl  SolrJ  … 
  55. 55. Interroger Solr 1ère recherche  Recherche sur tout le contenu http://localhost:8983/solr/select?q=*:*  *:* : recherche de tout sur tous les fields 
  56. 56. Interroger Solr UI Admin  Accessible à cette URL : http://localhost:8983/solr/admin  Complètement redesignée pour Solr 4  =>
  57. 57. Interroger Solr UI Admin
  58. 58. Interroger Solr UI Admin
  59. 59. Interroger Solr 1ère recherche Démo !
  60. 60. Interroger Solr Structure de l’URL  http://localhost:8983/solr/formation/select? q=*:*&start=0&rows=10&fl=description /solr/ : contexte de l’application web où Solr est installé  /formation : Core de Solr  Select : request handler  Après le ? => paramètres non ordonnés 
  61. 61. SolrJ Définition   SolrJ (aussi connu sous le nom de SolJava) : API pour communiquer avec Solr au travers d'applications Java Package apache.solr.client.solrj :       ResponseParser SolrQuery SolrRequest SolrResponse SolrServer StreamingResponseCallback
  62. 62. SolrJ Définition  Simple à utiliser : Création d'un SolrServer  Envoi de SolrQuery  Réception de SolrResponse 
  63. 63. SolrJ Communication avec le Solr server  Connexion HTTP Les données sont envoyées en javabin par défaut : gain de rapidité  Utilisation de la librairie Apache HttpComponents Client  • • HttpSolrServer solr = new HttpSolrServer("serverUrl"); ConcurrentUpdateSolrServer solr = new ConcurrentUpdateSolrServer(solrServerUrl, queueSize, threadCount)
  64. 64. SolrJ Exemple complet  Exemple : Communication avec le serveur Solr en HTTP  Indexation de documents  Interrogation de Solr  Affichage des réponses 
  65. 65. SolrJ Exemple complet  Communication avec Solr en HTTP String serverUrl = "http://localhost:8983/solr/collection1"; HttpSolrServer server = new HttpSolrServer(serverUrl);
  66. 66. SolrJ Exemple complet  Indexation //solr.setParser(new BinaryResponseParser()); SolrInputDocument doc1 = new SolrInputDocument(); doc1.setField("id", "1"); doc1.setField("text", "hello SolrJ"); server.add(doc1); … solr.commit(true, true);
  67. 67. SolrJ Exemple complet  Requête SolrQuery query = new SolrQuery(); query.setQuery("*:*"); query.setStart(0); query.setRows(10);
  68. 68. SolrJ Exemple complet  Réponse QueryResponse response = solr.query(query); SolrDocumentList docs = response.getResults(); for(int i=0; i<docs.size(); i++) { SolrDocument doc = docs.get(i); System.out.print("id : "+doc.getFieldValue("id")); System.out.println(" text :" + doc.getFieldValue("text")); }
  69. 69. SolrJ Exemple complet  Réponse On obtient dans la console : INFO: Creating new http client, config:maxConnections=128&maxConnectionsPerH ost=32&followRedirects=false id : 1 text : hello SolrJ id : 2 text : coucou
  70. 70. Solr Quizz anti-sommeil III  SolrJ est le 2eme nom de DJ McSolaar ?  Solr permet d’analyser graphiquement les statistiques d’usages?  Solr tourne sous Tomcat ou sous Jetty ?
  71. 71. Solr Performances  Scaling  1 serveur Solr peut gérer • •  Des millions de documents À peu près 1000 queries /seconde Nous devons "scaler" si… Le volume de données augmente • Le volume de queries augmente • Haute disponibilité •
  72. 72. Scalability Replication Indexing Master Maître Replicate Slave Slave Load Requêtes Balancer Requêtes Queries
  73. 73. Scalability Distributed Search Subquery Shard1 Queries Aggregated results Shard2 Shard3
  74. 74. Solr Cloud Solr Cloud  Nouvelle architecture pour la scalabilité   En développement Nouveau système de mise à l’échelle de Solr  Pack 2 en 1 • •  Distribution Réplication Architecture flexible
  75. 75. Solr Cloud Zookeeper   Logiciel de gestion de configurations pour système distribués Contient les configs des collections pour Solr Cloud    Sauf solr.xml Les machines s’enregistrent et se désenregistrent Statuts des shards enregistrés
  76. 76. Solr Cloud 1 collection - 2 shards
  77. 77. Solr Cloud 1 collection - 2 shards  Première instance avec Zookeeper embarqué:  Deuxième instance:  Visualisation:
  78. 78. Solr Cloud 1 collection - 2 shards
  79. 79. Solr Cloud 1 collection - 2 shards – 2 replicas
  80. 80. Solr Cloud 1 collection - 2 shards – 2 replicas  Pas de Maître/Esclave   Mais Leaders et réplicas 1 Leader par shard 0 à N replicas  Elu automatiquement  Comme un replica mais avec en bonus une logique de coordination 
  81. 81. Solr Cloud 1 collection - 2 shards – 2 replicas  Comment sont assignées les instances de Solr? Automatiquement lors du démarrage!  Tant que numShard non atteint  • •  Ajout du shard N+1 Désignation comme leader Quand numShard atteint • • On peut commencer à indexer/chercher Ajout de replica au shard en possèdant le moins
  82. 82. Solr Cloud Indexation  On utilise un CloudSolrServer en SolrJ  Pointé sur Zookeeper • • Transfert au shard concerné Indexation des docs sur le shard et ses replicas
  83. 83. Solr Cloud Indexation  On envoie les docs à n’importe quelle machine  Si la machine est une replica •  Envoie les docs à son leader Si la machine est un leader • Si les docs concernent ce shard - Indexation des docs sur le shard et ses replicas • Sinon - Transmet les docs au shard concerné
  84. 84. Solr Cloud Recherche   Recherche sur n’importe quelle machine Near Real Time  Peut avoir un délai • Suivant que l’update arrive sur le bon shard ou non
  85. 85. Scalability Solr Cloud  Solr Cloud
  86. 86. Solr Cloud Avantages  Architecture très flexible  En cas d’augmentation de charge •  En cas de diminution de charge •  Ajout de machines qui pointent sur Zookeeper Eteindre des machines Zookeeper Gestion centralisée des configurations  Visualisation du statut des shards 
  87. 87. Solr Cloud Avantages  Réplication    Automatique et fiable Distribution automatique des MAJs Distribution automatique des recherches
  88. 88. Solr Cloud Désavantages  Indexation plus lente   Transmissions des docs entre shards Nouvel environnement Certaines fonctionnalités non implémentées  Susceptible d’évoluer 
  89. 89. Connecteurs et écosystème Solr Marseille JUG 28/11/13 Olivier TAVARD
  90. 90. Crawler Role    Se connecter à un système externe Crawler les données Autorisations des données crawlées Early Binding  Late Binding 
  91. 91. Crawler Role     Mode push ou pull Extraire le contenu Crawling normal ou delta Minimiser l'impact sur le système crawlé Charge  Programmation heure 
  92. 92. Crawler Crawlers  Beaucoup de Crawlers open source  Aperture •  Nutch •  File DIH •  File, Web DB, XML Et des Framework Google Enterprise Connector  Apache Manifold CF 
  93. 93. DIH Définition  DIH : Data Import handler Contribution à Solr (répertoire contrib)  Permet de traiter et d'importer des données :  • • • • • Base de données (supporte le delta) Fichiers Emails Documents riches XML (XLST transformations et Xpath extractions)
  94. 94. DIH Définition  DIH : Data Import handler  Interface d'administration : http://localhost:8983/solr/#/collection1/dataimport
  95. 95. SolrCell Définition  Extraction Request Handler aka Solr Cell Indexation de documents riches (PDF, Office, images, etc…)  Basé sur Tika :  • • • Upload des fichiers à Solr par le request handler Extraction du texte par Tika Indexation du contenu dans Solr
  96. 96. Apache Tika  Extraction de contenu : Détection du Mime-type  Librairies embarquées  • •  Lecture du contenu Extraction des metadonnées Extensions de fichier supportées: • • • • • • • XHTML MS Office (OLE2 et OOXML) OpenDocument PDF RTF Zip Fichiers Audio/Video/Image
  97. 97. Crawler Google Connector Manager  Google Connector Manager    Pas créé pour Solr    Créé par Google pour le Google Search Appliance Google Connector Manager et connectors en license Apache V.2 Intégré par Constellio Late et early binding Delta crawling
  98. 98. Crawler Google Connector Manager  Connectors :      File Share DB EDM (Alfresco, Nuxeo) Email XML
  99. 99. Crawler Manifold CF Basé sur le « Connector Framework » developpé by Karl Wright pour l’appliance MetaCarta  Donné à la fondation Apache Software en 2009 (première version en 2011)  Sortie d’incubation en mai 2012  Version actuelle 1.4.1 (novembre 2013) 
  100. 100. Crawler Manifold CF      Delta Crawling Authorization service IHM et API de configuration Pensé pour Solr Architecture de plugins
  101. 101. Crawler Manifold CF  Connecteurs disponibles :  Content Repositories: • •  Authorities: • •  SharePoint, Documentum, Windows Share… CMIS (Alfresco), DB, RSS, Wiki AD LDAP Indexes: Solr • Elastic Search • … •
  102. 102. Crawler Manifold CF Manifold CF Windows Share Conn. 1 Conn. 1 AD Sharepoint Conn. 2 Conn. 1 OpenLDAP Repositories Conn. N Conn. N Get User access token Docs and access tokens Extracting Handler Solr MCF Search Plugin … … Repository N Manifold CF authority service Manifold CF pull Agent Authority N Authorities
  103. 103. Ajaxfrancelabs: Ajax framework Pour Solr et Constellio      Inspiré par AjaxSolr Côté client Javascript + ajax Fournit un ensemble de widgets préconfigurés Possibilité d’étendre les widgets
  104. 104. Ajaxfrancelabs: Ajax framework
  105. 105. ManifoldCF, Francellio Démo ! Démo !
  106. 106. Hadoop Vue d’ensemble    Créé par Doug Cutting Framework open source Inspiré par les papiers sur Google Map Reduce et Google File System
  107. 107. Hadoop Avantages    Traiter des grands volumes de données en un minimum de temps Stocker des immenses volumes de données : plusieurs To ou même Po Fonctionne sur machines de configuration faible et peu coûteuses
  108. 108. Problématiques adressées Définition  Framework open source pour écrire et exécuter des applications distribuées qui traitent de très larges volumes de données : Accessible Hadoop fonctionne sur de très larges clusters ou sur le cloud comme avec Amazon EC2  Robuste Hadoop est architecturé de telle façon que les pannes matérielles peuvent arriver et peut les gérer 
  109. 109. Problématiques adressées Définition Mise à l'échelle Mise à l'échelle linéaire pour gérer de larges volumes de données en ajoutant des nodes supplémentaires au cluster  Simple Hadoop permet d'écrire facilement du code 
  110. 110. Architecture de Hadoop  Architecture logique Storage layer  Execution layer 
  111. 111. Architecture de Hadoop  Les utilisateurs peuvent soumettre des jobs : • • S'exécutent sur l'execution layer Lecture/Ecriture des données à partir du storage layer
  112. 112. Architecture de Hadoop  Storage layer : Hadoop Distributed File System (HDFS) • S'exécute au dessus du système de fichier régulier de l'OS, Linux ext3 très souvent • Le processus gère le stockage local sur chaque node • Le processus sur le master gère les métadonnées •
  113. 113. Architecture de Hadoop  Execution layer : Hadoop Map-Reduce • Responsable de lancer un job en parallèle sur plusieurs serveurs • Gère les "retry" d'une tâche en cas d'échec et valide les résultats complets • Les jobs consistent en opérations spéciales : "map" et "reduce" •
  114. 114. Architecture de Hadoop  Scalable : • Couches de stockage et d'excéution sont sur plusieurs nodes (serveurs)
  115. 115. Architecture de Hadoop  Fiable : • • • • Chaque bloc est répliqué, généralement 3 fois Chaque bloc fait l'objet d'une vérification de checksum Chaque tâche doit réussir ou le job échoue Toutes les copies de données intermédiaires sont validées
  116. 116. Architecture de Hadoop  Tolérant aux pannes : • • • Toutes les tâches échouées sont automatiquement réessayées Les transferts de données échoués sont automatiquement réessayés Les serveurs peuvent joindre et quitter le cluster à tout moment
  117. 117. Architecture de Hadoop  Simple: • • Réduit la complexité Système d'exploitation conceptuel qui gère plusieurs CPU et disques
  118. 118. Architecture de Hadoop  Cluster Hadoop typique: • A un serveur maître - Processus qui gère le système de fichiers - Processus qui gère les jobs • A plusieurs serveurs esclaves - Processus qui gère les données sur les disques locaux - Processus qui exécutent des taches sur le serveur • Utilise un réseau de haute vitesse entre les serveurs
  119. 119. Hadoop HDFS   Données converties en blocs et distribuées sur des nœuds Chaque bloc est répliqué Nœud maître TaskTracker DataNode TaskTracker NameNode DataNode NameNode secondaire TaskTracker DataNode © Inovia Conseil Nœuds esclaves JobTracker
  120. 120. Hadoop Map/Reduce   Map : données sous forme clés/valeurs Reduce : fusion par clé pour former résultat fichier d’entrée découpage map tri reduce résultat http://blog.inovia-conseil.fr/?p=46
  121. 121. Hadoop Ecosystème Hadoop http://cloudstory.in/2012/04/introduction-to-big-data-hadoop-ecosystem-part-1/
  122. 122. Démonstration par l’exemple Big Search dans la vraie vie  Exemples d’entreprises utilisant différentes technologies pour différents scénarios BIIIIG Hadoop  Hadoop / Solr  MapReduce / Search  Solr 
  123. 123. Démonstration du big data par l’exemple Google   1 000 000 000 000 d’URLS uniques (2008) Pagerank : le ranking d’une page est estimé par sa popularité plutôt que par son contenu
  124. 124. Démonstration par l’exemple Google  Construire PageRank grâce à Map/reduce Web Google Map/Reduce (≠ Hadoop Mapreduce) : Calcul PageRank Moteur de recherche (≠ Lucene Solr)
  125. 125. Démonstration par l’exemple Linkedin
  126. 126. Démonstration par l’exemple 1er cas : Hadoop pur pour les recommandations Voldemort (Linkedin filesystem) Hadoop (pour le calcul) Web Server (pour l’affichage) Données brutes Calcul distribué des recommandations Injection des recommandations par utilisateur Lecture des données utilisateur et leur recommandations
  127. 127. Démonstration par l’exemple 2e cas : Lucene pur pour la recherche d’utilisateurs Voldemort (Linkedin filesystem) Lucene (pour le search) Web Server (pour l’affichage) Données brutes Indexation des utilisateurs Recherche d’utilisateurs Lecture des données utilisateur spécifique
  128. 128. Démonstration par l’exemple Zoosk
  129. 129. Démonstration par l’exemple Zoosk  Big Search avec Solr Recherche de profil  Flux d’actualités  Trouver un partenaire 
  130. 130. Démonstration par l’exemple Cloudera Search  Index Solr sur HDFS  Avantages de HDFS sur l’index • • Réplication Haute disponibilité
  131. 131. Démonstration par l’exemple Behemoth et Solr  Behemoth Projet Apache  Framework pour déployer des applications UIMA sur Hadoop 
  132. 132. Démonstration par l’exemple Behemoth et Solr  Behemoth et Solr  Ex: SolrCloud, Behemoth, Solr • • Extraction de contenu de documents PDF/Word sur Hadoop par Behemoth Envoi à Solr pour indexation (SolrCloud)
  133. 133. Plan      Big Search Solr/Constellio Hadoop Démonstration par l’exemple Démonstration Hadoop/Solr
  134. 134. Démonstration Hadoop/Solr Objectif  rechercher n’importe quel mot dans Solr et pouvoir trouver toutes les expressions de 2 mots contenant ce mot et de savoir de quelle œuvre cette expression provient (basé sur Lucid Imagination)
  135. 135. Démonstration Hadoop/Solr  Input Hadoop  2 livres de Jules Verne : Le Tour du Monde en 80 jours et De la Terre à la Lune
  136. 136. Démonstration Hadoop/Solr  Map/Reduce Mapper Découpage des phrases en un ensemble de 2 mots associé au livre Exemple d’un extrait de la Terre à la Lune : « Pendant la guerre fédérale » sera découpé comme ceci par le mapper : pendant la De la Terre à la Lune.txt la guerre De la Terre à la Lune.txt guerre fédérale De la Terre à la Lune.txt 
  137. 137. Démonstration Hadoop/Solr  Map/Reduce  Reducer Le reducer va se charger de grouper les expressions ayant plusieurs livres en commun. Pour l'expression « cet homme », le résultat du reducer sera : cet homme De la Terre à la Lune, Autour du Monde en 80 jours
  138. 138. Démonstration Hadoop/Solr  Solr  2 champs qui seront phrase et doc :
  139. 139. Démonstration Hadoop/Solr Etapes ‘De la Terre à la Lune’: ‘...on se conduit en héros, et, deux ans, trois ans plus tard…’ ‘De la Terre à la Lune’: ‘...on se conduit en héros, et, deux ans, trois ans plus tard…’ ‘Le tour du Monde en 80 jours’: ‘Mais, depuis deux ans, celui-ci n'habitait plus la Chine…’ ‘Le tour du Monde en 80 jours’: ‘Mais, depuis deux ans, celui-ci n'habitait plus la Chine…’ Fichiers d’entrée Découpage ‘deux ans’: ‘De la Terre à la Lune’ ‘ans trois’: ‘De la Terre à la Lune’ ‘deux ans’: ‘Le tour du Monde en 80 jours‘ ‘ans celui’: ‘Le tour du Monde en 80 jours’ map ‘deux ans’: ‘De la Terre à la Lune’, ‘Le tour du Monde en 80 jours‘ ‘ans trois’ : ‘De la Terre à la Lune’ ‘ans celui’ : ‘Le tour du Monde en 80 jours’ reduce ‘deux ans’: ‘De la Terre à la Lune’, ‘Le tour du Monde en 80 jours‘ ‘ans trois’: ‘De la Terre à la Lune’ ‘ans celui’: ‘Le tour du Monde en 80 jours’ résultat Solr Field: Phrase, indexed, stored ‘deux ans’ Solr Field: Doc, indexed, stored, multivalued ‘De la Terre à la Lune’, ‘Le tour du Monde en 80 jours‘ ‘ans trois’ ‘De la Terre à la Lune’ ‘ans celui’ ‘Le tour du Monde en 80 jours’ …. …. Index de Solr
  140. 140. France Labs Résumé  Expertise sur: Lucene  Solr  Constellio   Nouvelles technologies innovantes
  141. 141. Contacts Site web : www.francelabs.com Email : olivier.tavard@francelabs.com Twitter : Francelabs

×