Geneva jug Lucene Solr

142
Apache Solr Geneva JUG Aurélien MAZOYER Olivier TAVARD 04/11/14

description

Geneva JUG 04 novembre 2014 Présentation Lucene Solr France Labs

Transcript of Geneva jug Lucene Solr

Page 1: Geneva jug Lucene Solr

Apache SolrGeneva JUG

Aurélien MAZOYER

Olivier TAVARD

04/11/14

Page 2: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Introduction

Domaine: Moteurs de recherche d'entreprise Open Source

2 activités: Consulting/support/formation sur

Lucene/Solr/LucidWorks/Datafari

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

Page 4: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 6: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 7: Geneva jug Lucene Solr

La recherche est un oignon!

Page 8: Geneva jug Lucene Solr

La recherche est un oignon!

Page 9: Geneva jug Lucene Solr

La recherche est un oignon matriciel!

Page 10: Geneva jug Lucene Solr

Lucene

Page 11: Geneva jug Lucene Solr

Lucene

Créé en 2000 par Doug Cutting. Version Actuelle : Lucene v. 4.10.2 (Octobre 2014)

Projet Open Source, Apache depuis 2001

Librairie de recherche “full-text”

Rapide, stable, performant, modulable

100% Java (pas de dépendances)

Page 12: Geneva jug Lucene Solr

Lucene

Un outil qui permet:

De créer un index à partir de documents

INDEX

Page 13: Geneva jug Lucene Solr

Index

Page 14: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Lucene

Un outil qui permet:

De créer un index à partir de documents

D’effectuer des recherches dans cet index

INDEX

Page 16: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Lucene

Indexation - Architecture

CrawlerLucene

analyzerIndexer

INDEX

Page 18: Geneva jug Lucene Solr

Lucene

Requêtage - Architecture

QueryParser

Luceneanalyzer

Index Searcher

type:voitures AND prix:[3000 TO 5000]

INDEX

Page 19: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Lucene est une simple bibliothèque

Besoin d’une couche serveur…

Lucene

Page 21: Geneva jug Lucene Solr

Solr

Page 22: Geneva jug Lucene Solr

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.2 (Octobre 2014)

Page 23: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

© www,oblady,com

Intéraction Solr / Monde extérieur

Solr

Update Handler Search Handler

Lucene

Page 26: Geneva jug Lucene Solr

© 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: Geneva jug Lucene Solr

Surcouche

Page 28: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Des questions???

Page 30: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 31: Geneva jug Lucene Solr

Scoring

Page 32: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Scoring en Lucene

Formule paramètrable

Combinaison de Boolean Model (Match)

Vector Space Model (Scoring)• Term Frequency

• Inverse Document Frequency…

Boosts…

Page 34: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Boosts: Privilégier un doc en particulier…

Privilégier un champ par rapport à un autre…

Privilégier les phrases exactes…

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

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

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

Boosts

Page 38: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Scoring en Lucene

Page 40: Geneva jug Lucene Solr

Des questions???

Page 41: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 42: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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

Peut contenir plusieurs Docs

Indexation

Page 44: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Avec des clients spécifiques: SolrJ

• Client le plus évolué

SolrNet

rsolr

SolPython

SolPerl

Solarium

scalikesolr

Clients

Page 46: Geneva jug Lucene Solr

Documents visibles une fois commités

Possibilité d’utiliser le « soft-commit »

Pour avoir du NRT

Latence d’indexation

Page 47: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Schema

Déclaration des champs fixes:

Ou dynamiques:

Page 49: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Schema : Analyzer

Page 52: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Des questions???

Page 54: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 55: Geneva jug Lucene Solr

Première requête

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

HTTP GET request Web browser

Curl

SolrJ

Page 56: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Exemple de retour

Page 58: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Requêtage

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

Page 60: Geneva jug Lucene Solr

Requêtage

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

A nous de faire avec…

Page 61: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 62: Geneva jug Lucene Solr

Spellchecker

Page 63: Geneva jug Lucene Solr

Autocomplete

Page 64: Geneva jug Lucene Solr

Facettes

Facettes

Page 65: Geneva jug Lucene Solr

Géolocalisation

Page 66: Geneva jug Lucene Solr

Autres fonctionnalités

More Like This Obtenir des documents similaires à un

document

Similarité textuelle

Highlighting

Page 67: Geneva jug Lucene Solr

Fonctionnalité

Joining Possibilité de faire une jointure sur plusieurs

indexes (clé primaire -> clé secondaire)

Mais à éviter

Préférer la dénormalisation

Page 68: Geneva jug Lucene Solr

Aplatir les données Dénormalisation

Page 69: Geneva jug Lucene Solr

Données redondantes

Recherche rapide sur un seul index (pas de join)

Page 70: Geneva jug Lucene Solr

Et les vôtres…

Solr est très orienté plugin

Possibilité de surcharger quasiment tout…

Page 71: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Des questions???

Page 74: Geneva jug Lucene Solr

Demo

Démo !

Page 75: Geneva jug Lucene Solr

Présentation de Solr Architecture SOLR

Scoring

Indexation

Requêtage

Fonctionnalités

Solr Cloud

Solr et son écosystème

Page 76: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Nouvelles notions

Sharding Un Shard est un morceau d’index

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

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

Shard3

Requêtes

Shard1 Shard2

RésultatsAggrégés

Sous-Requêtes

Page 79: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Leader 1 Leader 2

Replica 1 Replica 2

Solr Cloud

Indexer

Page 87: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Leader 1 Leader 2

Replica 1 Replica 2

Solr Cloud

Search

Search

Page 89: Geneva jug Lucene Solr

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: Geneva jug Lucene Solr

Avantages

Réplication Automatique et fiable

Support du NRT

Distribution automatique des MAJs

Distribution automatique des recherches

Page 91: Geneva jug Lucene Solr

Des questions???

Page 92: Geneva jug Lucene Solr

Demo

Démo !

Page 93: Geneva jug Lucene Solr
Page 94: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 95: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 96: Geneva jug Lucene Solr

Solr ne crawle PAS les données

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

Récupération des données

Gestions des autorisations

Role

Page 97: Geneva jug Lucene Solr

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 98: Geneva jug Lucene Solr

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 99: Geneva jug Lucene Solr

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 100: Geneva jug Lucene Solr

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.7.1 (Septembre 2014)

Page 101: Geneva jug Lucene Solr

Manifold CF

Crawling incrémental

Gère les autorisations

Configuration par UI et API

Créé pour Solr

Architecture en mode plugin

Page 102: Geneva jug Lucene Solr

Differents connecteurs pour : Content Repositories :

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

Authorities:• AD• LDAP

Output repositories :• Solr• Elastic Search

Manifold CF

Page 103: Geneva jug Lucene Solr

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 104: Geneva jug Lucene Solr

2 composants principaux: Authority service:

• Contient les authority connectors

• Liste de tous les tokens pour l’utilisateur courant

Manifold CF

Page 105: Geneva jug Lucene Solr

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 106: Geneva jug Lucene Solr

Configuration côté Manifold CF Configuration du connecteur Samba

Configuration du connecteur AD

Configuration du connecteur Solr

Manifold CF

Page 107: Geneva jug Lucene Solr

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 108: Geneva jug Lucene Solr

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 109: Geneva jug Lucene Solr

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 leur ACLs et les infos

d’utilisateurRésultats autorisés

Page 110: Geneva jug Lucene Solr

Des questions???

Page 111: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 112: Geneva jug Lucene Solr

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 113: Geneva jug Lucene Solr

AjaxFranceLabs

Manager

SearchBarWidget

ResultWidget

FacetWidget

Page 114: Geneva jug Lucene Solr

Demo

Démo !

Page 115: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 116: Geneva jug Lucene Solr

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 117: Geneva jug Lucene Solr

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 118: Geneva jug Lucene Solr

UIMA

Ex : OpenNLP Part of speech

• Verbe nom…

Extraction d’entités• Lieu

• Personne

Page 119: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Analytics

Hadoop

Page 120: Geneva jug Lucene Solr

LogStash for Solr + Solr + Banana

Banana

Page 121: Geneva jug Lucene Solr

Présentation de Solr

Solr et son écosystème

Crawling des données

Exemple de UI

Outils sémantiques

Hadoop

Page 122: Geneva jug Lucene Solr

Hadoop

Créé par Doug Cutting

Framework open source

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

Page 123: Geneva jug Lucene Solr

Hadoop

1999

2002

2004

2010

2005

Page 124: Geneva jug Lucene Solr

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 125: Geneva jug Lucene Solr

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 126: Geneva jug Lucene Solr

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 127: Geneva jug Lucene Solr

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 128: Geneva jug Lucene Solr

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 129: Geneva jug Lucene Solr

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 130: Geneva jug Lucene Solr

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 131: Geneva jug Lucene Solr

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 132: Geneva jug Lucene Solr

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 133: Geneva jug Lucene Solr

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 134: Geneva jug Lucene Solr

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 135: Geneva jug Lucene Solr

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 136: Geneva jug Lucene Solr

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 137: Geneva jug Lucene Solr

Créé par Doug Cutting

Crawler Web

Permet de crawler un large volume de données

Basé sur Hadoop

Nutch

Page 138: Geneva jug Lucene Solr

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 139: Geneva jug Lucene Solr

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 140: Geneva jug Lucene Solr

Des questions???

Page 141: Geneva jug Lucene Solr

Merci!!!

Page 142: Geneva jug Lucene Solr

Site web : www.francelabs.com

Email : [email protected]

Twitter : Francelabs