Presentation solr 10 Aout 2011 (french)

Embed Size (px)

Citation preview

Diapositive 1

Prsentation Apache Solr12 Aot 2011

Thibaud Vibes

Sommaire

Prsentation du projet

Les fonctionnalits de Solr

De base

Fonctionnalits coeur

Tunning

Questions?

Cas d'cole (si on a le temps)

Prsentation de Solr

Prsentation du projet

Se prononce SOLAR

Bas sur Lucene

Vocation: Fournir une solution de recherche avec indexation full text pour
l'entreprise

Personnalisable

Sans avoir produire de code

Prise en charge de gros volumes

Sources multiples

Types de documents multiples

Prsentation du projet: Historique

LuceneCr par Doug Cutting (toujours commiter)

2001: Rejoins le projet Jakarta

2005: Top Level Project l'ASF

Solr

2004: Cr par Yonik Seeley pour les besoins de son entreprise.
Seeley cr la socit Lucid Imagination

2006: Rejoins l'incubateur de l'ASF

2007: Devient un sous-projet Lucene

Mars 2010: Fusion des 2 projets

Mars 2011: Release de Solr 3.1
(numrotation identique Lucene)

Prsentation du projet: Eco systme

Portages:

Lucene.NET (C#)

PyLucene

Lucy (portage de Lucene en C)

(Delphi, C++, Perl, Ruby, PHP)

Projets utiliss/utilisant Solr/Lucene:

Carrot: Moteur de clustering open source => clustering de documents

Elastic Search(Lucene) : Alternative Solr Mode SaaS (cloud, yeah!)

Hibernate Search (Lucene)

Apache Nutch(Lucene, Hadoop) : Moteur de recherche web (crawler) Alternative Solr

Prsentation du projet: Quelques rfrences

Apple

Disney

Eclipse IDE (Recherche dans la documentation base sur Lucene)

Hi5 (rseau social)

MusicBrainz (encyclopdie sur la musique) Trait dans Solr 1.4 Enterprise Search Server

Nuxeo ECM

Sources:
Lucene Powered By page(http://wiki.apache.org/lucene-java/PoweredBy)Solr Powered By page (http://wiki.apache.org/solr/PublicServers)

Twitter search, depuis 2010 (version modifie de Lucene)

Source: Twitter Engineering blog

Prsentation du projet: Caractristiques

Ecrit en Java (Java 5)

Fonctionne dans un conteneur de Servlet 2.4 (ex: Tomcat) ou en mode Standalone (Jetty embarqu)

Exposition des services en HTTP (XML, JSON)

Indexation: JSON, XML, CSV, rich documents (PDF, MS Office, OpenDocument), base de donnes (via connecteurs)

Configuration via fichiers XML (pas d'UI)

Prsentation du projet: Caractristiques

Les fonctionnalits de Solr

Fonctionnalits

Recherche full text

Scoring des rsultats

Faceting

Highlighting

Replication

Caching

Clustering des rsultats de recherche (Bas sur Carrot)

Recherche Geo-spatiale

Field Collapsing / Grouping: regroupement ou limitation des rsultats

Fonctionnalits: TAL

Stemmatisation (Porter, Snowball)

Gestion de la synonymie (via dictionnaire)

Correction orthographique (spell checking + suggestion)

Recherche par sons (DoubleMetaphone, Metaphone, RefinedSoundex, and Soundex)

=> Multi-lingue

Fonctionnalitsde base - Ajouter un document

url: /update

Format: XML/HTTP POST, balise

Ne pas oublier le la fin! (pas en autocommit par dfaut)

Fonctionnalitsde base - Ajouter un document

url: /update

Format: XML/HTTP POST, balise

Ne pas oublier le la fin! (pas en autocommit par dfaut)

Exemple :

Fonctionnalitsde base - Modifier un document

Pas de notion de modification: save or update

url: /update

On r ajoute le document (avec tous les champs!)
Solr se base sur l'identifiant

Fonctionnalitsde base - Supprimer un document

url: /update

Format: XML/HTTP POST, balise

Delete by id

Delete by query

obligatoire

Fonctionnalitsde base - Supprimer un document

url: /update

Format: XML/HTTP POST, balise

Delete by id

Delete by query

obligatoire

Exemples :

Fonctionnalitsde base

(cf wiki ONYME Page SolrOU dossier /example/exampledocs/post.sh de l'archive apache-solr-*)

Fonctionnalitsde base - Recherche

url: /select

Format: HTTP GET (QueryString)

Forme: champ1:mot1 champ2:mot2 champs3:(mot1 mot2)

Oprateurs: AND, OR

Wildcard: *,? (sur certain types de champs seulement)

Hautement paramtrable

Fonctionnalitsde base - Recherche

url: /select

Format: HTTP GET (QueryString)

Forme: champ1:mot1 champ2:mot2 champs3:(mot1 mot2)

Oprateurs: AND, OR

Wildcard: *,? (sur certain types de champs seulement)

Hautement paramtrable

Exemple:Rechercher solr dans les champs content et keyword_txt
=> content:solr keyword_txt:solrLimiter 10 rsultats
=> rows=10N'afficher que les champs content, filename et le scoring
=> fl=content,filename,score

Fonctionnalitsde base

Recherche: Interface de tests (/solr/admin)

Fonctionnalitsde base - Recherche

Rsultats :

Tout objet implmentant SolrRequestHandler peut tre pris en charge
pour le traitement de requtes et offrir un nouveau service

Fonctionnalitscoeur - RequestHandler

Plugin qui gre le traitement d'une requte

Permet de figer la personnalisation

A configurer dans ${SOLR_HOME}/conf/solrconfig.xml

La personnalisation peut tre surcharge lors de la requte

Offre une grande extensibilit Solr

Fonctionnalitscoeur - RequestHandler

Exemples de RequestHandler: XmlUpdateRequestHandler : ajout de documents XML

JsonUpdateRequestHandler

SearchHandler: traitement des requtes de recherche

DataImportHandler: Connecteur pour base de donnes

Doc: http://wiki.apache.org/solr/SolrRequestHandler

Fonctionnalitscoeur - RequestHandler

Exemple de paramtrage du SearchHandler:

url: /select

url: /showall

Fonctionnalitscoeur Schma (~index)

Apport de Solr par rapport Lucene

${SOLR_HOME}/conf/schemas.xml

Dfinition des types de champs

Dfinition des champs

Spcification de la cl primaire

Champ recherch par dfaut

Oprateur par dfaut (OR | AND)

Systme schemas-less !?

Doc: http://wiki.apache.org/solr/SchemaXml

Fonctionnalitscoeur Type de champs

Balise

Attributs

class (Ex: "solr.TextField")

name (Ex: "text")

stored (true|false)

indexed (true|false)

multiValued (true|false)

...

Analyzers (optionnels) = chanes de traitements

type="index"

type="query"

doc: http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

3 Exemples :

Fonctionnalitscoeur Champs

Balise

Attributs

name, type, required

+ possibilit de surcharger les attributs dfinis dans le type:
stored, indexed,multiValued,omitNorms, omitTermFreqAndPositions

Fonctionnalitscoeur Mais aussi ...

Pas besoin de redfinir le schemas si on souhaite ajouter des documents d'autres sources.

Schemas less