141
Lucene/Solr Marseille JUG 28/11/13 Olivier TAVARD

Marseille JUG Novembre 2013 Lucene Solr France Labs

Embed Size (px)

Citation preview

Page 1: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene/Solr

Marseille JUG 28/11/13

Olivier TAVARD

Page 2: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 3: Marseille JUG Novembre 2013 Lucene Solr France Labs

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)

Page 4: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 5: Marseille JUG Novembre 2013 Lucene Solr France Labs

ArchitectureLa recherche est un oignon !

Page 6: Marseille JUG Novembre 2013 Lucene Solr France Labs

ArchitectureLa recherche est un oignon !

Page 7: Marseille JUG Novembre 2013 Lucene Solr France Labs

ArchitectureLa recherche est un oignon matriciel !

Page 8: Marseille JUG Novembre 2013 Lucene Solr France Labs

ArchitectureLucene

Page 9: Marseille JUG Novembre 2013 Lucene Solr France Labs

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)

Page 10: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneDiffé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

Page 11: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

Un outil qui permet:

De créer un index à partir de documents

D’effectuer des recherches dans cet index

INDEX

Page 12: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneIndex inversé

© http://untiluknow.blogspot.com

Page 13: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneScoring

Page 14: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

Formule paramètrable Combinaison de

Boolean Model Vector Space Model

• Term Frequency• Inverse Document Frequency• …

Scoring

Page 15: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneScoring

Term Frequency (TF) : Fréquence d’un Terme dans un document

France LabsBienvenue 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.

Page 16: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneScoring

Inverse Document Frequency (IDF): Rareté du terme dans l’ensemble du corpus

Expertise LuceneSouhaitant 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.

Page 17: Marseille JUG Novembre 2013 Lucene Solr France Labs

Document

Lucene

FieldTerm

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 : … • …

Document

Page 18: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

LuceneScoring

Page 19: Marseille JUG Novembre 2013 Lucene Solr France Labs

Boosts: A la requête:

• Boost sur certains champs• Boost sur certaines valeurs de la requête• Et d’autres cas…

LuceneScoring

Page 20: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneScoring

Boosts: Boost sur le Titre

FonctionnalitésTitre : FonctionnalitésContent :Interface d'administration en HTML, Réplication, Mise en cacheRecherche 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 : HighlighterContent :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.

Page 21: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

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

Document Retournés

Documents Pertinents

Docs retournés et pertinents

Recherche pertinente

Page 22: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneIndexation - Architecture

Apache Tika

© Lucene in Action, Second Edition

Page 23: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene2 étapes

Query Parser

Analyzer ResultsParser

Index Writer

Analyzer

IndexTime

SearchTime

Index Searcher

Page 24: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneAnalyzer

Analyzer Chaine de composants Extraction de termes du texte Normaliser les données A l'indexation/Requête WhiteSpace

Tokenizer

LowerCaseFilter

StopFilter

Page 25: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneAnalyzer

Différents analyzers: Spécifique au langage

• Stemming, Stopwords… Analyzer phonétique Spécifique aux données

• Chemin• Nom du fichier• …

Page 26: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneDifférents Analyzers

© Lucene introduction, Otis Gospodnetic

Page 27: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

Créées programmatiquement à partir d’une interface

Créées à partir d’une chaîne de caractères parsée par un “Query Parser”

type:voitures AND prix:[3000 TO 5000] Lucene Query

Lucene Query

Query Parser

Requêtes – Comment les créer

Page 28: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneMatch

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

Match

Page 29: Marseille JUG Novembre 2013 Lucene Solr France Labs

LuceneSchema Global

© Lucene in Action, Second Edition

Page 30: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

"Simple" bibliothèque

Besoin d’une couche serveur et d’une UI

Pourquoi ce n’est pas suffisant?

Page 31: Marseille JUG Novembre 2013 Lucene Solr France Labs

Lucene

Lucene a été créé en: 1999, 2000, 2010 ? Lucene est une servlet? Marseille est la capitale de la ?

Quizz anti-sommeil

Page 32: Marseille JUG Novembre 2013 Lucene Solr France Labs

ArchitectureSolr

Page 33: Marseille JUG Novembre 2013 Lucene Solr France Labs

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)

Page 34: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr

APIs XML/HTTP de type REST Configuration par fichiers XML Mécanisme de Cache, Réplication Interface admin web

Page 35: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr

Interfaces HTTP pour : ajouter des documents (POST)

• http://localhost:8983/solr/update effectuer des recherches (GET)

• http://localhost:8983/solr/select

Interfaces

Page 36: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrArchitecture

© www,oblady,com

Page 37: Marseille JUG Novembre 2013 Lucene Solr France Labs

Installer SOLRInstaller 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

Page 38: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

Queries Phrase query Wildcard query Range query Proximity query Fuzzy query Boolean query

Page 39: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

Autocomplete

Page 40: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

Spellchecker

Page 41: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

Faceting

Page 42: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

Geospatial search

Page 43: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrFunctionnalités

More Like This Obtenir des documents similaires à un

document Similarité textuelle

Highlighting

Synonymes

Page 44: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrQuizz anti-sommeil I

Solr est un projet Apache, mais sous quelle licence ?

Que fait Solr par rapport à Lucene ?

Page 45: Marseille JUG Novembre 2013 Lucene Solr France Labs

Indexer des documentsIndexer des documents

Page 46: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Indexer des documents

Page 47: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Indexer des documents

Page 48: Marseille JUG Novembre 2013 Lucene Solr France Labs

Indexer des documents

Mise à jour: Document en entier

Depuis Solr 4.0: Modifier la valeur d’un field

Indexer des documents

Page 49: Marseille JUG Novembre 2013 Lucene Solr France Labs

Construire son schéma

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

Schema.xml

Page 50: Marseille JUG Novembre 2013 Lucene Solr France Labs

Construire son schéma

Types des champs des documents à indexer Text, String, Date….

Liste des champs des documents Id, author, type….

Clé unique par document Manuel UUID

Schema.xml

Page 51: Marseille JUG Novembre 2013 Lucene Solr France Labs

Construire son schémaSchema.xml

Page 52: Marseille JUG Novembre 2013 Lucene Solr France Labs

Construire son schéma

Exemple de schéma simple : Voitures :

Schema.xml

Page 53: Marseille JUG Novembre 2013 Lucene Solr France Labs

Configurer SolrSolrConfig.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

Page 54: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger Solr (queries)

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

HTTP GET request Web browser Curl SolrJ …

Select

Page 55: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger Solr

Recherche sur tout le contenu http://localhost:8983/solr/select?q=*:* *:* : recherche de tout sur tous les fields

1ère recherche

Page 56: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger Solr

Accessible à cette URL : http://localhost:8983/solr/admin Complètement redesignée pour Solr 4

=>

UI Admin

Page 57: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger SolrUI Admin

Page 58: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger SolrUI Admin

Page 59: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger Solr1ère recherche

Démo !

Page 60: Marseille JUG Novembre 2013 Lucene Solr France Labs

Interroger Solr

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

Structure de l’URL

Page 61: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

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

Définition

Page 62: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

Simple à utiliser : Création d'un SolrServer Envoi de SolrQuery Réception de SolrResponse

Définition

Page 63: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

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)

Communication avec le Solr server

Page 64: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

Exemple : Communication avec le serveur Solr en HTTP Indexation de documents Interrogation de Solr Affichage des réponses

Exemple complet

Page 65: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

Communication avec Solr en HTTPString serverUrl = "http://localhost:8983/solr/collection1";HttpSolrServer server = new HttpSolrServer(serverUrl);

Exemple complet

Page 66: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

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);

Exemple complet

Page 67: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

RequêteSolrQuery query = new SolrQuery();query.setQuery("*:*"); query.setStart(0);query.setRows(10);

Exemple complet

Page 68: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

RéponseQueryResponse 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"));}

Exemple complet

Page 69: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrJ

RéponseOn obtient dans la console :INFO: Creating new http client, config:maxConnections=128&maxConnectionsPerHost=32&followRedirects=falseid : 1 text : hello SolrJid : 2 text : coucou

Exemple complet

Page 70: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr

SolrJ est le 2eme nom de DJ McSolaar ?

Solr permet d’analyser graphiquement les statistiques d’usages?

Solr tourne sous Tomcat ou sous Jetty ?

Quizz anti-sommeil III

Page 71: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrPerformances

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é

Page 72: Marseille JUG Novembre 2013 Lucene Solr France Labs

Scalability

Maître

Indexing

Master

Requêtes

Replicate

Slave

Requêtes

Slave

Load Balancer

Queries

Replication

Page 73: Marseille JUG Novembre 2013 Lucene Solr France Labs

ScalabilityDistributed Search

Shard3

Queries

Shard1 Shard2

Aggregatedresults

Subquery

Page 74: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudSolr 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

Page 75: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudZookeeper

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

Page 76: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 collection - 2 shards

Page 77: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 collection - 2 shards

Première instance avec Zookeeper embarqué:

Deuxième instance:

Visualisation:

Page 78: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 collection - 2 shards

Page 79: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 collection - 2 shards – 2 replicas

Page 80: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 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

Page 81: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr Cloud1 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

Page 82: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudIndexation

On utilise un CloudSolrServer en SolrJ Pointé sur Zookeeper

• Transfert au shard concerné • Indexation des docs sur le shard et ses replicas

Page 83: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudIndexation

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é

Page 84: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudRecherche

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

Page 85: Marseille JUG Novembre 2013 Lucene Solr France Labs

ScalabilitySolr Cloud

Solr Cloud

Page 86: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudAvantages

Architecture très flexible En cas d’augmentation de charge

• Ajout de machines qui pointent sur Zookeeper En cas de diminution de charge

• Eteindre des machines Zookeeper

Gestion centralisée des configurations Visualisation du statut des shards

Page 87: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudAvantages

Réplication Automatique et fiable

Distribution automatique des MAJs Distribution automatique des recherches

Page 88: Marseille JUG Novembre 2013 Lucene Solr France Labs

Solr CloudDésavantages

Indexation plus lente Transmissions des docs entre shards

Nouvel environnement Certaines fonctionnalités non implémentées Susceptible d’évoluer

Page 89: Marseille JUG Novembre 2013 Lucene Solr France Labs

Connecteurs et écosystème Solr

Marseille JUG 28/11/13

Olivier TAVARD

Page 90: Marseille JUG Novembre 2013 Lucene Solr France Labs

Se connecter à un système externe Crawler les données Autorisations des données

crawlées Early Binding Late Binding

CrawlerRole

Page 91: Marseille JUG Novembre 2013 Lucene Solr France Labs

Mode push ou pull Extraire le contenu Crawling normal ou delta Minimiser l'impact sur le système

crawlé Charge Programmation heure

CrawlerRole

Page 92: Marseille JUG Novembre 2013 Lucene Solr France Labs

CrawlerCrawlers

Beaucoup de Crawlers open source Aperture

• File, Web Nutch

• File DIH

• DB, XML Et des Framework

Google Enterprise Connector Apache Manifold CF

Page 93: Marseille JUG Novembre 2013 Lucene Solr France Labs

DIH

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)

Définition

Page 94: Marseille JUG Novembre 2013 Lucene Solr France Labs

DIH

DIH : Data Import handler Interface d'administration :

http://localhost:8983/solr/#/collection1/dataimport

Définition

Page 95: Marseille JUG Novembre 2013 Lucene Solr France Labs

SolrCell

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

Définition

Page 96: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Content ExtractingApache Tika

Page 97: Marseille JUG Novembre 2013 Lucene Solr France Labs

Google Connector Manager Créé par Google pour le Google Search

Appliance Google Connector Manager et

connectors en license Apache V.2 Pas créé pour Solr

Intégré par Constellio Late et early binding Delta crawling

CrawlerGoogle Connector Manager

Page 98: Marseille JUG Novembre 2013 Lucene Solr France Labs

CrawlerGoogle Connector Manager

Connectors : File Share DB EDM (Alfresco, Nuxeo) Email XML

Page 99: Marseille JUG Novembre 2013 Lucene Solr France Labs

CrawlerManifold 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)

Page 100: Marseille JUG Novembre 2013 Lucene Solr France Labs

CrawlerManifold CF

Delta Crawling Authorization service IHM et API de configuration Pensé pour Solr Architecture de plugins

Page 101: Marseille JUG Novembre 2013 Lucene Solr France Labs

Connecteurs disponibles : Content Repositories:

• SharePoint, Documentum, Windows Share…• CMIS (Alfresco), DB, RSS, Wiki

Authorities:• AD• LDAP

Indexes:• Solr• Elastic Search• …

CrawlerManifold CF

Page 102: Marseille JUG Novembre 2013 Lucene Solr France Labs

Manifold CF

Windows Share

Sharepoint

Repository N

AD

OpenLDAP

Authority N

Solr

Manifold CF pull Agent

Conn. 1

Conn. 2

Conn. N

Manifold CF authority service

Conn. 1

Conn. 1

Conn. N

Extracting Handler

MCF Search Plugin

Docs andaccess tokens

Get User access token

Repositories Authorities

CrawlerManifold CF

Page 103: Marseille JUG Novembre 2013 Lucene Solr France Labs

Ajaxfrancelabs: Ajax framework

Inspiré par AjaxSolr Côté client Javascript + ajax Fournit un ensemble de widgets préconfigurés Possibilité d’étendre les widgets

Pour Solr et Constellio

Page 104: Marseille JUG Novembre 2013 Lucene Solr France Labs

Ajaxfrancelabs: Ajax framework

Page 105: Marseille JUG Novembre 2013 Lucene Solr France Labs

ManifoldCF, FrancellioDémo !

Démo !

Page 106: Marseille JUG Novembre 2013 Lucene Solr France Labs

Hadoop

Créé par Doug Cutting Framework open source Inspiré par les papiers sur Google Map Reduce

et Google File System

Vue d’ensemble

Page 107: Marseille JUG Novembre 2013 Lucene Solr France Labs

Hadoop

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

Avantages

Page 108: Marseille JUG Novembre 2013 Lucene Solr France Labs

Problématiques adressées

Framework open source pour écrire et exécuter des applications distribuées qui traitent de très larges volumes de données : AccessibleHadoop fonctionne sur de très larges clusters ou sur le cloud comme avec Amazon EC2 RobusteHadoop est architecturé de telle façon que les pannes matérielles peuvent arriver et peut les gérer

Définition

Page 109: Marseille JUG Novembre 2013 Lucene Solr France Labs

Problématiques adressées

Mise à l'échelleMise à l'échelle linéaire pour gérer de larges volumes de données en ajoutant des nodes supplémentaires au cluster SimpleHadoop permet d'écrire facilement du code

Définition

Page 110: Marseille JUG Novembre 2013 Lucene Solr France Labs

Architecture de Hadoop

Architecture logique Storage layer Execution layer

Page 111: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 112: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 113: Marseille JUG Novembre 2013 Lucene Solr France Labs

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"

Page 114: Marseille JUG Novembre 2013 Lucene Solr France Labs

Architecture de Hadoop

Scalable :• Couches de stockage et d'excéution sont sur plusieurs

nodes (serveurs)

Page 115: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 116: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 117: Marseille JUG Novembre 2013 Lucene Solr France Labs

Architecture de Hadoop

Simple:• Réduit la complexité• Système d'exploitation conceptuel qui gère plusieurs

CPU et disques

Page 118: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 119: Marseille JUG Novembre 2013 Lucene Solr France Labs

Hadoop

Données converties en blocs et distribuées sur des nœuds

Chaque bloc est répliqué

HDFS

JobTracker

NameNode

NameNode secondaire

TaskTracker

DataNode

TaskTracker

DataNode

TaskTracker

DataNode

Nœud maître

uds esclaves

© Inovia Conseil

Page 120: Marseille JUG Novembre 2013 Lucene Solr France Labs

Hadoop

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

Map/Reduce

http://blog.inovia-conseil.fr/?p=46

fichier d’entrée découpage map tri reduce résultat

Page 121: Marseille JUG Novembre 2013 Lucene Solr France Labs

HadoopEcosystème Hadoop

http://cloudstory.in/2012/04/introduction-to-big-data-hadoop-ecosystem-part-1/

Page 122: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Exemples d’entreprises utilisant différentes technologies pour différents scénarios BIIIIG Hadoop Hadoop / Solr MapReduce / Search Solr

Big Search dans la vraie vie

Page 123: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration du big data par l’exemple

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

Google

Page 124: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Construire PageRank grâce à Map/reduce

Google

Web

Google Map/Reduce (≠ Hadoop

Mapreduce) :Calcul PageRank

Moteur de recherche (≠ Lucene Solr)

Page 125: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exempleLinkedin

Page 126: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple1er cas : Hadoop pur pour les recommandations

Hadoop (pour le calcul)

Voldemort (Linkedin

filesystem)

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

Page 127: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple2e cas : Lucene pur pour la recherche d’utilisateurs

Lucene (pour le search)

Voldemort (Linkedin

filesystem)

Web Server (pour l’affichage)

Données brutes

Indexation des utilisateurs

Recherche d’utilisateurs

Lecture des données utilisateur spécifique

Page 128: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exempleZoosk

Page 129: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Big Search avec Solr Recherche de profil Flux d’actualités Trouver un partenaire

Zoosk

Page 130: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Index Solr sur HDFS Avantages de HDFS sur l’index

• Réplication• Haute disponibilité

Cloudera Search

Page 131: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Behemoth Projet Apache Framework pour déployer des applications UIMA

sur Hadoop

Behemoth et Solr

Page 132: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration par l’exemple

Behemoth et Solr Ex: SolrCloud, Behemoth, Solr

• Extraction de contenu de documents PDF/Word sur Hadoop par Behemoth

• Envoi à Solr pour indexation (SolrCloud)

Behemoth et Solr

Page 133: Marseille JUG Novembre 2013 Lucene Solr France Labs

Plan

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

Page 134: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration Hadoop/Solr

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)

Objectif

Page 135: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration Hadoop/Solr

Input Hadoop 2 livres de Jules Verne : Le Tour du Monde en 80

jours et De la Terre à la Lune

Page 136: Marseille JUG Novembre 2013 Lucene Solr France Labs

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.txtla guerre De la Terre à la Lune.txtguerre fédérale De la Terre à la Lune.txt

Page 137: Marseille JUG Novembre 2013 Lucene Solr France Labs

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

Page 138: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration Hadoop/Solr

Solr 2 champs qui seront phrase et doc :

Page 139: Marseille JUG Novembre 2013 Lucene Solr France Labs

Démonstration Hadoop/SolrEtapes

‘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…’

‘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…’

‘deux ans’: ‘De la Terre à la Lune’

‘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’

‘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’

‘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’

Solr Field: Phrase,

indexed, stored

‘deux ans’

‘ans trois’

‘ans celui’

….

Solr Field: Doc, indexed, stored,

multivalued

‘De la Terre à la Lune’, ‘Le tour du Monde en

80 jours‘

‘De la Terre à la Lune’

‘Le tour du Monde en 80

jours’

….

Fichiers d’entrée Découpage map reduce résultat Index de Solr

Page 140: Marseille JUG Novembre 2013 Lucene Solr France Labs

France LabsRésumé

Expertise sur: Lucene Solr Constellio

Nouvelles technologies innovantes

Page 141: Marseille JUG Novembre 2013 Lucene Solr France Labs

Contacts

Site web : www.francelabs.com

Email : [email protected]

Twitter : Francelabs