presentation lucene / solr / datafari - nantes jug

143
Apache Solr Nantes JUG Aurélien MAZOYER Olivier TAVARD 16/02/15

Upload: francelabs

Post on 20-Jul-2015

382 views

Category:

Internet


8 download

TRANSCRIPT

Page 1: Presentation Lucene / Solr / Datafari - Nantes JUG

Apache SolrNantes JUG

Aurélien MAZOYER

Olivier TAVARD

16/02/15

Page 2: Presentation Lucene / Solr / Datafari - Nantes JUG

Introduction

A propos : Cofondateur de la société France Labs

Développeur (principalement Java)

Formateur Solr

A propos de France Labs : Startup créée en 2011

Partenaire officiel de LucidWorks pour la France

Page 3: Presentation Lucene / Solr / Datafari - Nantes JUG

Introduction

Domaine: Moteurs de recherche d'entreprise Open Source

2 activités: Consulting/support/formation sur

Lucene/Solr/ElastiSearch/LucidWorks/Datafari

R&D (algorithmes de ranking, connecteurs, réseaux sociaux)

Page 4: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 5: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 6: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 7: Presentation Lucene / Solr / Datafari - Nantes JUG

La recherche est un oignon!

Page 8: Presentation Lucene / Solr / Datafari - Nantes JUG

La recherche est un oignon!

Page 9: Presentation Lucene / Solr / Datafari - Nantes JUG

La recherche est un oignon matriciel!

Page 10: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Page 11: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Créé en 2000 par Doug Cutting. Version Actuelle : Lucene v. 4.10.3 Décembre 2014)

Projet Open Source, Apache depuis 2001

Librairie de recherche “full-text”

Rapide, stable, performant, modulable

100% Java (pas de dépendances)

Page 12: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Un outil qui permet:

De créer un index à partir de documents

INDEX

Page 13: Presentation Lucene / Solr / Datafari - Nantes JUG

Index

Page 14: Presentation Lucene / Solr / Datafari - Nantes JUG

Document

FieldTerm

Document, fields, terms

Document : unité d’indexation

Field : partie d’un document, contient les données

Term : unité atomique d’un champ

Si on veut indexer un livre, on aura:• Title : Lucene in Action

• Author : Erik Hatcher, Otis Gospodnetić

• Description : Lucene is a gem in the open-source...

• Content : …

• …

Page 15: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Un outil qui permet:

De créer un index à partir de documents

D’effectuer des recherches dans cet index

INDEX

Page 16: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 17: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Indexation - Architecture

CrawlerLucene

analyzerIndexer

INDEX

Page 18: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene

Requêtage - Architecture

QueryParser

Luceneanalyzer

Index Searcher

type:voitures AND prix:[3000 TO 5000]

INDEX

Page 19: Presentation Lucene / Solr / Datafari - Nantes JUG

Analyzer

Index

coquilles

saint

Jacques

….

Document Requête

coquilles saint jacques

Coquilles saint-jacques

coquilles saint jacques

Coquilles SaintJacques

Luceneanalyzer

Luceneanalyzer

Indexation Requête

Match!

Page 20: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene est une simple bibliothèque

Besoin d’une couche serveur…

Lucene

Page 21: Presentation Lucene / Solr / Datafari - Nantes JUG

Solr

Page 22: Presentation Lucene / Solr / Datafari - Nantes JUG

Solr par rapport à Lucene

Lucene « embarqué » dans une webapp

Créé en 2004 par Yonik Seeley à CENT Networks

In 2006, Solr devient open-source et été cédé à la Apache Software Foundation

En 2010, fusion des projets Lucene et Solr

Version Actuelle : Solr 4.10.3 (Décembre 2014)

Page 23: Presentation Lucene / Solr / Datafari - Nantes JUG

Solr par rapport à Lucene

APIs XML/HTTP de type REST

Configuration par fichiers XML

Mécanisme de Cache, Réplication

Interface admin web

Page 24: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 25: Presentation Lucene / Solr / Datafari - Nantes JUG

© www,oblady,com

Intéraction Solr / Monde extérieur

Solr

Update Handler Search Handler

Lucene

Page 26: Presentation Lucene / Solr / Datafari - Nantes JUG

© www,oblady,com

Architecture

(Virtual) Machine

OS

Java Virtual Machine

Conteneur de servlet (Jetty, Tomcat)

Solr faceting, replication, caching, distributed search, admin, Lucene best practices

Lucene Javacore search, analysis tools, hit highlighting, spell checking

Page 27: Presentation Lucene / Solr / Datafari - Nantes JUG

Surcouche

Page 28: Presentation Lucene / Solr / Datafari - Nantes JUG

Surcouche

Besoin (parfois) d’une surcouche: Interface WEB pour le client

Crawl des documents sur les différents systèmes

Gestion de la sécurité

Statistiques

Exemples de solutions « clé en main » : Constellio

LucidWorks

Datafari

Page 29: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 30: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 31: Presentation Lucene / Solr / Datafari - Nantes JUG

Scoring

Page 32: Presentation Lucene / Solr / Datafari - Nantes JUG

Récupérer les bons résultats…

… et seulement ceux là

Precision Pourcentage de docs pertinents sur les

docs retournés

Matchs corrects/total retourné

Recall Pourcentage de docs pertinents

retournés sur le total des docs pertinents

Matches corrects/(matchscorrects+matchs manqués)

Trouver un bon compromis…

Documents Pertinents

Document Retournés

Documents Pertinents

Docs retournéset pertinents

Recherche pertinente

Page 33: Presentation Lucene / Solr / Datafari - Nantes JUG

Scoring en Lucene

Formule paramètrable

Combinaison de Boolean Model (Match)

Vector Space Model (Scoring)• Term Frequency

• Inverse Document Frequency…

Boosts…

Page 34: Presentation Lucene / Solr / Datafari - Nantes JUG

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 unesociété composée d'experts engestion de l'information. Que ce soitpour de l'expertise, pour nos produitsou pour nos solutions métiers, nousfaisons en sorte que vous augmentiezvotre efficacité par une meilleureexploitation de vos données.

France Labs, spécialiste des outilsde recherche open source, proposedes plugins innovants et desservices de conseil, intégration etmaintenance, sur Lucene, Solr etConstellio. Europe, nous sommes lepartenaire de Constellio, solutioncomplète de recherche.

Page 35: Presentation Lucene / Solr / Datafari - Nantes JUG

TF-IDF

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

Expertise Lucene

Souhaitant intervenir plus en amontdans la vie de l’entreprise, pour vousproposer toujours plus de conseils àpartir de nos expertises, Expertise &Conseil a créé Formation & Conseil :une structure de formation destinéeaux acteurs de performance del’entreprise.

Apache Lucene, la fameusetechnologie pour l’indexation, larecherche et l’analyse du texte est labase de plusieurs serveurs OpenSource. La présentation détailleraSolr et ElasticSearch sous la forme «Tools in Action » - démonstrationsen direct des différents outils.

Page 36: Presentation Lucene / Solr / Datafari - Nantes JUG

TF-IDF

Norms : Taille des champs

Solr

Titre : Les moteurs de rechercheContent :Apache Solr est une librairie derecherche full text en open source.Elle propose des API REST, desmécanismes de cache, réplication etmise à l’échelle.

Titre : EncyclopédieContent :Solr est une moteur de rechercheopen source. Elastic Search est unmoteur de recherche open source(mais quand même un peu moinsbien)….….

…. Le chat est une animal decompagnie avec des oreilles.

Page 37: Presentation Lucene / Solr / Datafari - Nantes JUG

Boosts: Privilégier un doc en particulier…

Privilégier un champ par rapport à un autre…

Privilégier les phrases exactes…

Privilégier les docs qui matchent une requête…

Privilégier les docs par rapport au résultat d’une fonction …

Privilégier les docs géolocalisés les plus proches….

Boosts

Page 38: Presentation Lucene / Solr / Datafari - Nantes JUG

Boosts

Boosts: Boost sur le Titre

Fonctionnalités

Titre : FonctionnalitésContent :Interface d'administration en HTML,Réplication, Mise en cacheRecherche distribuée, Recherche àfacettes, Recherche géospatiale ,APIHTTP/XML, JSON et bibliothèquespour les langages de script Python etRuby, Intégration des bases dedonnées

Titre : HighlighterContent :Cette fonctionnalité permet de mettreen surbrillance les termes recherchés.Ce principe est le même que les pages"en cache" de Google où les termesrecherchés apparaissent surlignés en

jaune.C'est une fonctionnalité puissante etpratique.

Page 39: Presentation Lucene / Solr / Datafari - Nantes JUG

Scoring en Lucene

Page 40: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 41: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 42: Presentation Lucene / Solr / Datafari - Nantes JUG

Le crawling de documents n’est PAS le job de Solr

Mais il existe de nombreux outils pour cela : DIH

Nutch

Aperture

Manifold CF

Google Connectors

Crawling

Page 43: Presentation Lucene / Solr / Datafari - Nantes JUG

Préparer les documents Convertir en XML, JSON, CSV (ou document riche avec Tika)

Peut contenir plusieurs Docs

Indexation

Page 44: Presentation Lucene / Solr / Datafari - Nantes JUG

Poster les documents par HTTP Avec cURL (linux)

• Ex : curl http://localhost:8983/solr/collection1/update -H "Content-type:text/xml" --data-binary @mem.xml

Post.jar et Post.sh• Ex : java -jar post.jar *.xml

Indexation

Page 45: Presentation Lucene / Solr / Datafari - Nantes JUG

Avec des clients spécifiques: SolrJ

• Client le plus évolué

SolrNet

rsolr

SolPython

SolPerl

Solarium

scalikesolr

Clients

Page 46: Presentation Lucene / Solr / Datafari - Nantes JUG

Documents visibles une fois commités

Possibilité d’utiliser le « soft-commit »

Pour avoir du NRT

Latence d’indexation

Page 47: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 48: Presentation Lucene / Solr / Datafari - Nantes JUG

Schema

Déclaration des champs fixes:

Ou dynamiques:

Page 49: Presentation Lucene / Solr / Datafari - Nantes JUG

Schema

Et des types de champs:

Entier

Date

String

• Un seul morceau

Text

• Text découpé et normalisé

• Avec un analyzer spécifique

Page 50: Presentation Lucene / Solr / Datafari - Nantes JUG

Analyzer

Coquilles SaintJacques

WordDelimiter

Coquilles Saint Jacques

Document Analysis

coquilles saint jacques

LowerCaseFilter

WhitespaceTokenizer

Coquilles SaintJacques

Coquilles saint-jacques

WordDelimiter

Coquilles saint jacques

Query Analysis

coquilles saint jacques

LowerCaseFilter

WhitespaceTokenizer

Coquilles saint-jacques

Page 51: Presentation Lucene / Solr / Datafari - Nantes JUG

Schema : Analyzer

Page 52: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 53: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 54: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 55: Presentation Lucene / Solr / Datafari - Nantes JUG

Première requête

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

HTTP GET request Web browser

Curl

SolrJ

Page 56: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 57: Presentation Lucene / Solr / Datafari - Nantes JUG

Exemple de retour

Page 58: Presentation Lucene / Solr / Datafari - Nantes JUG

Type de requêtes

Type But Exemple

TermQuerySimple termePeut être spécifique à un champ

TarteType:Dessert

PhraseQueryMatch de plusieurstermes dans l’ordre

« tarte aux pommes"

RangeQuery Fourchette[A TO Z]{A TO Z}

WildcardQuery Lettres manquantesj*v?f??bar

PrefixQueryTous les termes qui commencent par X.

cheese*

FuzzyQuery Distance de Levenshtein manger~

BooleanQueryAgrégation de plusieursqueries

manger ANDcheese* -cheesecake

Page 59: Presentation Lucene / Solr / Datafari - Nantes JUG

Requêtage

L’utilisateur peut donc faire des requêtes complexes :

Page 60: Presentation Lucene / Solr / Datafari - Nantes JUG

Requêtage

Mais fera plutôt des requêtes de ce type:

A nous de faire avec…

Page 61: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 62: Presentation Lucene / Solr / Datafari - Nantes JUG

Spellchecker

Page 63: Presentation Lucene / Solr / Datafari - Nantes JUG

Autocomplete

Page 64: Presentation Lucene / Solr / Datafari - Nantes JUG

Facettes

Facettes

Page 65: Presentation Lucene / Solr / Datafari - Nantes JUG

Géolocalisation

Page 66: Presentation Lucene / Solr / Datafari - Nantes JUG

Autres fonctionnalités

More Like This Obtenir des documents similaires à un

document

Similarité textuelle

Highlighting

Page 67: Presentation Lucene / Solr / Datafari - Nantes JUG

Fonctionnalité

Joining Possibilité de faire une jointure sur plusieurs

indexes (clé primaire -> clé secondaire)

Mais à éviter

Préférer la dénormalisation

Page 68: Presentation Lucene / Solr / Datafari - Nantes JUG

Aplatir les données Dénormalisation

Page 69: Presentation Lucene / Solr / Datafari - Nantes JUG

Données redondantes

Recherche rapide sur un seul index (pas de join)

Page 70: Presentation Lucene / Solr / Datafari - Nantes JUG

Et les vôtres…

Solr est très orienté plugin

Possibilité de surcharger quasiment tout…

Page 71: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 72: Presentation Lucene / Solr / Datafari - Nantes JUG

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…

Page 73: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 74: Presentation Lucene / Solr / Datafari - Nantes JUG

Demo

Démo !

Page 75: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 76: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 77: Presentation Lucene / Solr / Datafari - Nantes JUG

Zookeeper

Logiciel de gestion de configurations pour système distribués

Contient les configs des indexs de SolrCloud

Les Solr s’enregistrent et se désenregistrentauprès du Zookeeper

Statuts des shards enregistrés

Page 78: Presentation Lucene / Solr / Datafari - Nantes JUG

Nouvelles notions

Sharding Un Shard est un morceau d’index

Une recherche distribuée se fait sur tous les shards (ie sur tout l’index)

Utile pour gérer une grosse volumétrie de documents

Shard3

Requêtes

Shard1 Shard2

RésultatsAggrégés

Sous-Requêtes

Page 79: Presentation Lucene / Solr / Datafari - Nantes JUG

Nouvelles notions

Leader et Replica pour la réplication On n’a pas de maître/esclave mais des leader/replica

• Un replica peut devenir leader si son leader tombe

Le leader et le replica contiennent le même shard

Utile pour répartir la charge/assurer une haute dispo

Leader Shard 1

Replica 2 Shard 2

Replica 1 Shard 1

Load Balancer

Requêtes Requêtes Requêtes

Page 80: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 81: Presentation Lucene / Solr / Datafari - Nantes JUG

On démarre la première machine, envoie la configuration et spécifie le nombre de shards voulus

Solr Cloud

Zookeeper

ConfigIndex1

Leader Shard1

Page 82: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Solr Cloud

Zookeeper

Leader Shard2Leader Shard1

Page 83: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Solr Cloud

Zookeeper

Leader Shard2

Replica Shard1

Leader Shard1

Page 84: Presentation Lucene / Solr / Datafari - Nantes JUG

Replica Shard1

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

Solr Cloud

Zookeeper

Leader Shard2

Replica Shard2

Leader Shard1

Page 85: Presentation Lucene / Solr / Datafari - Nantes JUG

Indexation

Distribution automatique des updates

Comment?

On envoie les docs à n’importe quelle machine Solr se charge de les transmettre à la bonne machine

Page 86: Presentation Lucene / Solr / Datafari - Nantes JUG

Leader 1 Leader 2

Replica 1 Replica 2

Solr Cloud

Indexer

Page 87: Presentation Lucene / Solr / Datafari - Nantes JUG

Recherche

Distribution des recherches automatiques

Hors SolrJ : On registre les shards dans le load balancer

Avec SolrJ : On utilise un objet CloudSolrServer

• Pointé sur Zookeeper

• Gère le load balancing

Page 88: Presentation Lucene / Solr / Datafari - Nantes JUG

Leader 1 Leader 2

Replica 1 Replica 2

Solr Cloud

Search

Search

Page 89: Presentation Lucene / Solr / Datafari - Nantes JUG

Avantages

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

• Ajout de machines qui pointent sur Zookeeper

• Si pas de client intelligent- Enregistrement des machines dans le Load Balancer

En cas de diminution de charge• Eteindre des machines

Zookeeper Gestion centralisée des configurations

Visualisation du statut des shards

Page 90: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 91: Presentation Lucene / Solr / Datafari - Nantes JUG

Demo

Démo !

Page 92: Presentation Lucene / Solr / Datafari - Nantes JUG

Avantages

Réplication Automatique et fiable

Support du NRT

Distribution automatique des MAJs

Distribution automatique des recherches

Page 93: Presentation Lucene / Solr / Datafari - Nantes JUG

Solr 5

Sortie imminente

Plus un WAR mais une application

Nouvelles fonctionnalités : IDF distribué

Stats component amélioré

Solr 4 : apport de SolrCloud

Solr 5 : maturité, simplification à l’usage

Page 94: Presentation Lucene / Solr / Datafari - Nantes JUG
Page 95: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 96: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 97: Presentation Lucene / Solr / Datafari - Nantes JUG

Solr ne crawle PAS les données

Besoin d’un crawler pour : Connexion au système externe à crawler

Récupération des données

Gestions des autorisations

Role

Page 98: Presentation Lucene / Solr / Datafari - Nantes JUG

Mode Push ou Pull

Crawling normal ou incrémental

Réglage de l’impact sur le système crawlé Throttling

Scheduling

En cas de documents riches (Pdf, Word):

Extraction du contenu

Role

Page 99: Presentation Lucene / Solr / Datafari - Nantes JUG

Apache Tika

Contribution de Solr Détection du Mime-type Embarque des librairies pour:

• Lire le contenu• Extraire les meta-données

Extension supportés:• XHTML• MS Office (OLE2 and OOXML)• OpenDocument• PDF• RTF• Zip• Audio/Video/Image files

Extraction de contenu

Page 100: Presentation Lucene / Solr / Datafari - Nantes JUG

Les crawlers

Differents Crawlers Nutch

• Crawler web distribué

DIH• Contrib de Solr

• Crawl DB, XML

Aperture• File, Web

Et Framework Google Enterprise Connector

Manifold CF

Page 101: Presentation Lucene / Solr / Datafari - Nantes JUG

Manifold CF

Basé sur « Connector Framework » développé par Karl Wright pour la MetaCarta Appliance

Donné à l’Apache Software Foundation en 2009 (première version 2011)

Mai 2012 : sortie d’incubation

Version actuelle 1.8.1 (Février 2015)

Page 102: Presentation Lucene / Solr / Datafari - Nantes JUG

Manifold CF

Crawling incrémental

Gère les autorisations

Configuration par UI et API

Créé pour Solr

Architecture en mode plugin

Page 103: Presentation Lucene / Solr / Datafari - Nantes JUG

Differents connecteurs pour : Content Repositories :

• SharePoint• Windows Share• CMIS (Alfresco)• DB• RSS• Wiki

Authorities:• AD• LDAP

Output repositories :• Solr• Elastic Search

Manifold CF

Page 104: Presentation Lucene / Solr / Datafari - Nantes JUG

2 composants principaux: Pull agent:

• Contient les connecteurs (repository et output connectors)

• Récupère les données à partir des différents repositories

• Et les push avec leurs ACLs aux output connectors

Manifold CF

Pull Agent

Page 105: Presentation Lucene / Solr / Datafari - Nantes JUG

2 composants principaux: Authority service:

• Contient les authority connectors

• Liste de tous les tokens pour l’utilisateur courant

Manifold CF

Page 106: Presentation Lucene / Solr / Datafari - Nantes JUG

Intégration avec Solr Exemple : crawl de fichiers avec autorisation

• Environnement :- File Share Windows

- Active Directory

• Indexer les fichiers et respecter les droits à la requête

Manifold CF

Page 107: Presentation Lucene / Solr / Datafari - Nantes JUG

Configuration côté Manifold CF Configuration du connecteur Samba

Configuration du connecteur AD

Configuration du connecteur Solr

Manifold CF

Page 108: Presentation Lucene / Solr / Datafari - Nantes JUG

Modification du schéma Solr Ajout de champs pour indexer les ACLs

• AllowFile, DenyFile, AllowDirectory, DenyDirectory…

Ajout d’un plugin à Solr (MCF Search Plugin) pour interroger Manifold CF pour obtenir les infos d’utilisateur

Manifold CF

Page 109: Presentation Lucene / Solr / Datafari - Nantes JUG

Manifold CF

AD

Manifold CF pull Agent

ConnecteurJCIFS

Connecteur Solr

Docs andaccess tokens

Get User access token

Repositories Authorities

Manifold CF

OutputSolr

MCF SearchPlugin

Indexation

Manifold CF authority

service

Connecteur AD

Windows Share

Page 110: Presentation Lucene / Solr / Datafari - Nantes JUG

Manifold CF

AD

Manifold CF pull Agent

ConnecteurJCIFS

Connecteur Solr

Docs andaccess tokens

Get User access token

Repositories Authorities

Manifold CF

Output

Windows Share

Solr

MCF SearchPlugin

Requête

Manifold CF authority

service

Connecteur AD

Front End Search authentifié

Filtre les docs suivant leurs ACLs et les infos

d’utilisateurRésultats autorisés

Page 111: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 112: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 113: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 114: Presentation Lucene / Solr / Datafari - Nantes JUG

AjaxFranceLabs

Manager

SearchBarWidget

ResultWidget

FacetWidget

Page 115: Presentation Lucene / Solr / Datafari - Nantes JUG

Demo

Démo Datafari !www.datafari.com

Page 116: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 117: Presentation Lucene / Solr / Datafari - Nantes JUG

Le sémantique n‘est pas le travail de Solr

Fait seulement de la recherche full-text (mais le fait bien )

Solr Il existe des plugins pour cela

• UIMA

• GATE

• OpenNLP

Sémantique

Page 118: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 119: Presentation Lucene / Solr / Datafari - Nantes JUG

UIMA

Ex : OpenNLP Part of speech

• Verbe nom…

Extraction d’entités• Lieu

• Personne

Page 120: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Analytics

Hadoop

Page 121: Presentation Lucene / Solr / Datafari - Nantes JUG

LogStash for Solr + Solr + Banana

Banana

Page 122: Presentation Lucene / Solr / Datafari - Nantes JUG

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 123: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Créé par Doug Cutting

Framework open source

Inspiré par les papiers sur Google Map Reduceet Google File System

Page 124: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

1999

2002

2004

2010

2005

Page 125: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Scénarios Big Data Text mining

Création et analyse de graphes

Reconnaissance de patterns

Moteurs de recommandations, ciblage publicité

Analyse de menaces, surveillances de marchés

Page 126: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 127: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Architecture (très) simplifiée de Hadoop

Nœud 1 Nœud 3Nœud 2 Nœud 4Couche Traitement (Map Reduce)

Couche Stockage (HDFS)

Page 128: Presentation Lucene / Solr / Datafari - Nantes JUG

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)

Page 129: Presentation Lucene / Solr / Datafari - Nantes JUG

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

Page 130: Presentation Lucene / Solr / Datafari - Nantes JUG

Clé1 : Val1Clé2 : Val2Clé3 : Val3Clé4 : Val4

Hadoop

Mapper Prend des données en entrée

Et les transforme en paire de clé valeur

Mapper

Page 131: Presentation Lucene / Solr / Datafari - Nantes JUG

Clé 1 : Val1Clé 2 : Val2Clé 1 : Val3Clé 2 : Val4

Reducer Combine les valeurs ayant la même clé

Clé1 : Val5Clé2 : Val6

Reducer

Hadoop

Page 132: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Un exemple simple? On a en entrée plusieurs textes

On veut compter le nombre d’occurrences des mots

De manière distribuée

En utilisant un job Map Reduce

DatafariDatafari est notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le framework de connecteurs Apache ManifoldCF.

SolrApache 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.

LuceneApache Lucene est un moteur de recherche et d'indexation, en open source.

Page 133: Presentation Lucene / Solr / Datafari - Nantes JUG

Apache : 4Solr : 2Lucene : 3…

Apache : 1Apache : 1Solr : 1Lucene : 1…

Apache : 1Solr : 1Lucene : 1…

Apache : 1Lucene : 1…

Hadoop

DatafariDatafari est notre solution open source de recherche d'entreprises, basée sur Lucene, Solr, et le framework de connecteurs Apache ManifoldCF.

SolrApache 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.

LuceneApache Lucene est un moteur de recherche et d'indexation, en open source.

Reducer

Mapper

Mapper

Mapper

Page 134: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Distribution du l’algo en Map Reduce

Apache : 13 Apache : 44 Apache : 2Lucene : 10

Open : 19

Solr : 10Solr : 10 Manifold : 1Nœud 1 Nœud 3Nœud 2 Nœud 4

Page 135: Presentation Lucene / Solr / Datafari - Nantes JUG

Opération Map sur les documents sur chacun des noeuds

Hadoop

Apache : 1Apache : 1

Apache : 1 Apache : 1Lucene : 1

Open : 1

Solr : 1Solr : 1Solr : 1

Manifold : 1

Source : 1Source : 1

Nœud 1 Nœud 3Nœud 2 Nœud 4

Map Map Map Map

Page 136: Presentation Lucene / Solr / Datafari - Nantes JUG

Hadoop

Echange des données entre les nœud (shuffle)

Nœud 1 Nœud 3Nœud 2 Nœud 4

Apache : 1Apache : 1

Apache : 1 Apache : 1Lucene : 1

Open : 1

Solr : 1Solr : 1Solr : 1

Manifold : 1

Source : 1Source : 1

Page 137: Presentation Lucene / Solr / Datafari - Nantes JUG

Lucene : 1Manifold : 1Open : 1

Opération de Reduce sur chacun des noeuds

Hadoop

Apache : 1

Apache : 1

Apache : 1

Apache : 1

Lucene : 1

Open : 1

Solr : 1

Solr : 1Solr : 1

Manifold : 1

Source : 1

Source : 1

Apache : 4 Solr : 3 Source : 2

Nœud 4

Reduce

Nœud 3

Reduce

Nœud 1

Reduce

Nœud 2

Reduce

Page 138: Presentation Lucene / Solr / Datafari - Nantes JUG

Créé par Doug Cutting

Crawler Web

Permet de crawler un large volume de données

Basé sur Hadoop

Nutch

Page 139: Presentation Lucene / Solr / Datafari - Nantes JUG

Projet Apache

Surcouche d’Hadoop

Permet de déployer sur Hadoop des traitements tel que: Identification de language

Extraction de contenu (Tika)

Pipeline UIMA

Avant l’ingestion dans Solr

Behemoth

Page 140: Presentation Lucene / Solr / Datafari - Nantes JUG

Possibilité de stocker l’index de Solr sur HDFS Stockage de gros volume de donnée

Gestion de la réplication

Utilisation d’un cluster Hadoop existant

A venir: Possibilité de créer l’index à l’aide de job Map Reduce Augmentation performance d’indexation sur de

gros volumes de données

Solr directement couplé avec Hadoop

Page 141: Presentation Lucene / Solr / Datafari - Nantes JUG

Des questions???

Page 142: Presentation Lucene / Solr / Datafari - Nantes JUG

Merci!!!

Page 143: Presentation Lucene / Solr / Datafari - Nantes JUG

Sites web : www.francelabs.com

www.datafari.com

Email : [email protected]

Twitter : Francelabs