SlideShare une entreprise Scribd logo
Introduction à Solr Saïd Radhouani Juin 2010
Recherche d’Information - Rappel Saïd Radhouani © 2010 Documents Requête Correspondance ? Interrogation ? ? Indexation ? Index ?
Solr : Introduction Serveur de recherche Basé sur la librairie Lucene Open source Interface d’administration Web Configuration avec des fichiers XML Utilisé dans plusieurs sites : www.whitehouse.gov, Apple, Inc, tsr.ch, NASA, etc. Saïd Radhouani © 2010
Solr - Pour commencer Machine virtuelle Java (JRE) 1.5 ou plus récente  L’application Solr : dernière version officielle :1.4 (novembre 2009) Saïd Radhouani © 2010
Solr - Principe  Configuration avec des fichiers  XML schéma de l’index traitements à effectuer sur le contenu à indexer (stemming, synonymes, etc.) calcul des scores des documents fonction de classement … Communication avec  HTTP mettre à jour l’index Ajout et suppression de document rechercher les documents indexés Saïd Radhouani © 2010
Principe de Solr Saïd Radhouani © 2010 document requête document document document Lucene Solr http://… http://… … .xml … .txt … http://…
Solr - Indexation Un index ensemble de  documents   "analysés"  suivant un " schéma " défini Un Document = un ensemble de  champs  ( fields ) – valeurs ex. prix – 1500 Format des documents pris en charge XML et CSV (par défaut dans la version Solr distribuée) PDF, DOC, XLS, PPT, flux RSS, HTML, etc. Importation des données depuis une base de données Saïd Radhouani © 2010
Configuration – Schéma d’indexation Le fichier  schema.xml  contient  types des champs des documents à indexer champs des documents clé unique par document champ de recherche par défaut opérateur booléen par défaut Saïd Radhouani © 2010 <schema name=&quot;example&quot; version=&quot;1.2”> <types> … </types> <fields> … </fields> <uniqueKey>…</uniqueKey> <defaultSearchField>…</defaultSearchField> <solrQueryParser defaultOperator=&quot;OR&quot;/> </schema> schema.xml
Configuration –  Types des champs (field types) Saïd Radhouani © 2010 Préciser les analyses à appliquer sur le contenu lors de l’Indexation (sur les documents) lors de l’interrogation  (sur les requêtes) Types ( fieldType ) prédéfinis : int, float, string, date, boolean, etc. défini dans Solr : text, text_ws, phonetic, etc personnalisés:  définir nous-même Analyes ( analyzer type ) tokenizer  : comment découper le texte (split): les espaces ? la ponctuation ? Majuscule ? etc. Ensemble de filtres ( filter ) : stemming, Stopwords, Protected words, sensibilité à la casse, Synonyme, etc.
Configuration –  Types des champs (field types) Exemple: définition du type text (prédéfini) Saïd Radhouani © 2010 < fieldType  name=&quot; text &quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;>  <analyzer type=&quot; index &quot;>  < tokenizer  class=&quot;solr.WhitespaceTokenizerFactory&quot;/>  < filter  class=&quot;solr.StopFilterFactory&quot; ignoreCase=&quot;true” words=&quot; stopwords.txt &quot;/> </analyzer> <analyzer type=&quot; query &quot;> <tokenizer class=&quot;solr.WhitespaceTokenizerFactory&quot;/> <filter class=&quot;solr.SynonymFilterFactory&quot; synonyms=&quot; synonyms.txt ”  ignoreCase=&quot;true&quot; expand=&quot;true&quot;/> <filter class=&quot;solr.StopFilterFactory&quot; ignoreCase=&quot;true” words=&quot; stopwords.txt &quot;/> </analyzer> </fieldType> schema.xml
Configuration – fichiers des filtres Exemple : contenu des fichiers utilisés par les filtres Saïd Radhouani © 2010 a à et un une de des le La les … voiture,automobile,véhicule VW, Volkswagen … synonyms.txt stopwords.txt
Configuration –  Champs  (fields) Définir la manière dont nous allons indexer nos données <field name=&quot;…&quot;  type=&quot;…&quot;  indexed=&quot;true|false&quot;  stored=&quot;true|false&quot; required=&quot;true|false&quot;  … /> indexed true : un champ sur lequel on peut effectuer des recherches false : un champ qui ne sera pas accessible lors de l’interrogation stored true : champ qui pourra être retourné dans la réponse à une requête false : champ qui ne sera pas retourné dans la réponse à une requête required true: pour être indexé, un document doit contenir ce champ false : ce champ est optionnel Saïd Radhouani © 2010
Configuration  -  Champs  (fields) – Exemple Choisir les champs de notre schéma ? analyse des besoins utilisateurs imaginer l’interface de notre futur système Champs  Valeurs Marque BMW, Mercedes, Ford,  Modèle Série 3, Série 5, …, Mustang, etc. Description une belle voiture…,  Couleur rouge, bleu, blanc, etc. Prix 70000, 15000 Saïd Radhouani © 2010
Configuration  -  Champs  (fields) - Exemple Exemple: une partie de  schema.xml Saïd Radhouani © 2010 <field> <field name=&quot;id&quot;  type=&quot;string&quot;  indexed=&quot;true&quot;  stored=&quot;true&quot; required=&quot;true&quot; /> <field name=&quot;marque&quot;  type=&quot;string&quot;  indexed=&quot;true&quot;  stored=&quot;true&quot; required=&quot;true&quot; /> <field name=&quot;modele&quot;  type=&quot;string&quot;  indexed=&quot;true&quot;  stored=&quot;true&quot;/> <field name=&quot;description&quot;  type=&quot;text&quot; indexed=&quot;true&quot;  stored=&quot;true&quot; /> <field name=&quot;couleur&quot;  type=&quot;string&quot;  indexed=&quot;true&quot;  stored=&quot;true&quot;/> <field name=&quot;prix&quot;  type=&quot;tint&quot;  indexed=&quot;true&quot;  stored=&quot;true&quot;/> </field> <uniqueKey>id</uniqueKey> <defaultSearchField>description</defaultSearchField> <solrQueryParser defaultOperator=&quot;OR&quot;/> schema.xml
Préparation des documents Respecter le schéma défini dans  schema.xml noms des champs valeurs correspondantes aux types des champs obligatoire vs. optionnel Plusieurs documents dans le même fichier xml Entourés par les balises <add> et </add>  Saïd Radhouani © 2010 <add> <doc> <field name=&quot;champ 1&quot;>valeur du champ 1</field>  <field name=&quot; champ 2 &quot;> valeur du champ 2 </field>  … <field name=&quot; champ n &quot;> valeur du champ n </field> </doc> <doc> … </doc> … </add> documents.xml
Préparation des documents - exemple Exemple de données à indexer Saïd Radhouani © 2010 <add> <doc> <field name=&quot;id&quot;>1</field>  <field name=&quot; marque &quot;>BMW</field>  <field name=&quot; modele &quot;>X5</field>  <field name=&quot; description &quot;>Une jolie X5 en très bon état…</field> <field name=&quot; couleur &quot;>Gris</field> <field name=&quot;prix&quot;>45000</field> </doc> <doc> <field name=&quot;id”>2</field>  <field name=&quot;marque”>Volkswagen</field>  <field name=&quot;modele&quot;>Golf6</field>  <field name=&quot;description&quot;>Une Golf6 toutes options…</field>  <field name=&quot;couleur&quot;>Noir</field>  <field name=&quot;prix&quot;>21000</field> </doc> … </add> voitures.xml
Indexation des documents  Saïd Radhouani © 2010 Communiquer avec Solr en utilisant une requête HTTP et  update Utilisation du logiciel curl curl http:// adresse_du_serveur /solr/ update  -H &quot;Content-type:text/xml&quot;  --data-binary @ documents.xml Exemple – Solr sur le serveur local curl http://localhost:8983/solr/update -H &quot;Content-type:text/xml&quot;  --data-binary @voitures.xml Solr contient deux scripts qui permettent d’envoyer des reqêtes HTTP à Solr (Post.sh et Post.jar). Pour les utiliser, il suffit d’indiquer l’adresse du serveur hébergeant Solr le ou les fichiers xml qui contiennent les documents à indexer
Indexation – suppression de documents Saïd Radhouani © 2010 Suppression   par   l’identifiant (ID) <delete><id>1</id></delete> Suppression   par   une   requête (plusieurs documents à la fois) <delete> <query>marque:Peugeot</query> </delete> Supprimer-par-id.xml Supprimer-par-requete.xml
Mise à jour de l’index – commit/optimize Saïd Radhouani © 2010 Commit  met à jour le contenu de l’index en fonction des modifications effectuées rend les modifications visibles curl $URL --data-binary '<commit/>' -H 'Content-type:text/xml; charset=utf-8’ Optimize : en plus de ce que fait commit, optimise l’index fusionne les  segments de l’index créé par Lucene rend la recherche plus rapide Documentation:  http://wiki.apache.org/solr/UpdateXmlMessages curl $URL --data-binary '<optimize/>' -H 'Content-type:text/xml; charset=utf-8’
Interrogation : Correspondance document-requête (Matching) Saïd Radhouani © 2010 une voiture une voiture WhitespaceTokenizer StopFilter  ignoreCase=true  un automobile pas cher  WhitespaceTokenizer SynonymFilter ignoreCase=true expand=true StopFilter  ignoreCase=true Requête Correspondance Document un automobile  pas Analyse des champs au moment de l’interrogation cher un automobile  pas cher voiture automobile  cher voiture voiture
Interrogation – Syntaxe de la requête Communiquer avec Solr en utilisant une requête HTTP,  select  et une  requête http:// adresse_du_serveur /solr/ select ? q= q  définit la requête &quot;principale&quot; *:* retourne tous les documents présents dans l’index +  le mot qui suit est obligatoire  -  le mot qui suit est interdit &quot;&quot; chercher une expression exacte champ:valeur - ex. modele:&quot;Série 5&quot; prix:[* TO 10000] volks?agen, ?olks?agen, auto* Saïd Radhouani © 2010
Interrogation – Paramètres Communiquer avec Solr en utilisant une requête HTTP,  select  et un ensemble de  paramètres http:// adresse_du_serveur /solr/ select ?q=& ensemble-de-parametres-valeurs Sort  (Par défaut,  score desc ): classement des documents retrouvés ex.  classer dans l’ordre décroissant par &quot;enStock&quot;, ensuite croissant par &quot;prix&quot; :  sort= enStock desc, prix asc rows  (Par défaut, 10): pagination des résultats Nombre de documents à retourner par page de résultats start  (Par défaut, 0): pagination des résultats Numéro du document-réponse par lequel on commence l’affichage des résultats Saïd Radhouani © 2010
Interrogation – Paramètres  fq (filter query) Spécifier une requête qui peut être utilisée pour filtrer les documents à retournés ex. Chercher les voiture de marque BMW dont le prix est inférieur à 15000 fq=price:[* TO 15000]&fq=marque:BMW fl (field limiting) Spécifier l’ensemble des champs à retourner dans les réponses ex. Retourner seulement la marque, le prix et la couleur fl=marque,prix,colour Autres paramètres:   http://wiki.apache.org/solr/CommonQueryParameters   http://wiki.apache.org/solr/FilterQueryGuidance Saïd Radhouani © 2010
Interrogation – Requête/Réponse Saïd Radhouani © 2010 http://localhost:8983/solr/select?q= marque:BMW &start=0&rows=10&fl= marque,modele,prix <response> <lst name=&quot;responseHeader&quot;> <int name=&quot;status&quot;>0</int> <int name=&quot;QTime&quot;>0</int> <str name=&quot;q&quot;> marque:BMW </str> <str name=“fl&quot;> marque,modele,prix </str> </lst> <result name=&quot;response&quot; numFound=&quot;1&quot; start=&quot;0&quot;> <doc>  <str name=” marque &quot;>BMW</str> <str name=” modele &quot;>X5</str> <str name=” prix &quot;>46000</str> </doc>  </result> </response>
Démo – Contenu du répertoire de solr Saïd Radhouani © 2010 Programme pour démarrer Solr Répertoire contenant les fichiers de configuration Télécharger Solr depuis  http://mirror.switch.ch/mirror/apache/dist/lucene/solr/1.4.0/ En décompressant le fichier téléchargé, vous auriez un répertoire nommé &quot; apache-solr-1.4.0&quot;, ayant la structure suivante
Démo – Contenu du répertoire de solr Saïd Radhouani © 2010 Répertoire contenant les documents à indexer Programmes pour insérer les documents dans l’index
Démo - Démarrage / Arrêt de Solr En utilisant l’invite de commandes, aller sur le répertoire ~/ apache-solr-1.4.0/example/, qui  contient le fichier  start.jar Pour démarrer Sorl,  taper: java –jar start.jar, puis Entrée Si tout se passe bien, vous verrez la ligne suivant à la fin du démarrage … ::INFO:  Started SocketConnector @ 0.0.0.0:8983 Pour arrêter le serveur, appuyer sur les touches ctr+c Saïd Radhouani © 2010
Démo – Solr démarré Saïd Radhouani © 2010
Saïd Radhouani © 2010 Démo – Page d’administration de Solr
Saïd Radhouani © 2010 Démo – Page d’administration de Solr
Démo – Ma première requête Saïd Radhouani © 2010
Saïd Radhouani © 2010 Démo – Ma première réponse
Démo – Préparation de schema.xml Ouvrez le fichier schema.xml situé dans ~apache-solr-1.4.0/example/solr/conf/ Définir les champs entre les balises <fields> </fields> Spécifier la clé unique et le champ de recherche par défaut Sauvegarder (Re)démarrer Solr pour appliquer les modifications Saïd Radhouani © 2010
Démo – Préparation des documents Créer le fichier voitures.xml et sauvegarder-le sous le répertoire des documents à indexer ~apache-solr-1.4.0/example/exampledocs/ Saïd Radhouani © 2010 …
Démo - Indexation des documents En utilisant l’invite de commandes, aller sur le répertoire ~apache-solr-1.4.0/example/exampledocs/ Taper java –jar post.jar voitures.xml, ensuite Entrée Si tout se passe bien, vous verrez quelque chose qui ressemble à ça Saïd Radhouani © 2010
Démo – Interrogation Saïd Radhouani © 2010
Démo – Contenu de mon index Saïd Radhouani © 2010
Démo – Contenu de mon index Saïd Radhouani © 2010
Démo – Analyse des types définis Saïd Radhouani © 2010 Schema.xml Tokenizer Stemmer Stop words Synonyms Protected words
Liens Site officiel d'Apache Solr :  http://lucene.apache.org/solr Wiki :  http://wiki.apache.org/solr Mailing list :  http://lucene.apache.org/solr/mailing_lists.html Tutoriel:  http://lucene.apache.org/solr/tutorial.html http://www.ibm.com/developerworks/java/library/j-solr1/ http://www.ibm.com/developerworks/java/library/j-solr2/ Livres:  Solr 1.4 Enterprise Search Server (Paperback) Base de connaissances:  http://www.lucidimagination.com/search/?q = Saïd Radhouani © 2010
Publicité

Contenu connexe

Tendances (20)

Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)Développement d'un site web de E-Commerce avec PHP (Première Partie)
Développement d'un site web de E-Commerce avec PHP (Première Partie)
ENSET, Université Hassan II Casablanca
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
DNG Consulting
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
Xquery
XqueryXquery
Xquery
samir
 
Rapport de stage développement informatique
Rapport de stage développement informatique Rapport de stage développement informatique
Rapport de stage développement informatique
MehdiOuqas
 
Support de cours Spring M.youssfi
Support de cours Spring  M.youssfiSupport de cours Spring  M.youssfi
Support de cours Spring M.youssfi
ENSET, Université Hassan II Casablanca
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation web
MOHAMMED MOURADI
 
Formation wordpress
Formation wordpressFormation wordpress
Formation wordpress
Médiathèque Gaston Baissette à Mauguio
 
OpenERP/Odoo: Fiche Technique
OpenERP/Odoo: Fiche TechniqueOpenERP/Odoo: Fiche Technique
OpenERP/Odoo: Fiche Technique
Africa Performances
 
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
Réalisation d’une plateforme e-commerce de vente de  prestations HTML dotée d...Réalisation d’une plateforme e-commerce de vente de  prestations HTML dotée d...
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
kadzaki
 
Introduction à Laravel
Introduction à LaravelIntroduction à Laravel
Introduction à Laravel
Abdoulaye Dieng
 
Support de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec SpringSupport de Cours JSF2 Première partie Intégration avec Spring
Support de Cours JSF2 Première partie Intégration avec Spring
ENSET, Université Hassan II Casablanca
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
Abel LIFAEFI MBULA
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
ayoub daoudi
 
Support de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfiSupport de cours technologie et application m.youssfi
Support de cours technologie et application m.youssfi
ENSET, Université Hassan II Casablanca
 
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide CompletAlphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
Lilia Sfaxi
 
Les méta moteurs de recherche
Les méta moteurs de rechercheLes méta moteurs de recherche
Les méta moteurs de recherche
Hassan Barnoussi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 
Concevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring BootConcevoir, développer et sécuriser des micro-services avec Spring Boot
Concevoir, développer et sécuriser des micro-services avec Spring Boot
DNG Consulting
 
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
ENSET, Université Hassan II Casablanca
 
Xquery
XqueryXquery
Xquery
samir
 
Rapport de stage développement informatique
Rapport de stage développement informatique Rapport de stage développement informatique
Rapport de stage développement informatique
MehdiOuqas
 
Rapport de mini projet de programation web
Rapport de mini projet de programation webRapport de mini projet de programation web
Rapport de mini projet de programation web
MOHAMMED MOURADI
 
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
Réalisation d’une plateforme e-commerce de vente de  prestations HTML dotée d...Réalisation d’une plateforme e-commerce de vente de  prestations HTML dotée d...
Réalisation d’une plateforme e-commerce de vente de prestations HTML dotée d...
kadzaki
 
Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3Cours d'introduction aux HTML5 & CSS3
Cours d'introduction aux HTML5 & CSS3
Abel LIFAEFI MBULA
 
Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique Rapport du Projet de Fin d'année Génie informatique
Rapport du Projet de Fin d'année Génie informatique
ayoub daoudi
 
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide CompletAlphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm.com Formation Big Data & Hadoop : Le Guide Complet
Alphorm
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 
Android-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intentsAndroid-Tp1: éléments graphiques de base et intents
Android-Tp1: éléments graphiques de base et intents
Lilia Sfaxi
 
Les méta moteurs de recherche
Les méta moteurs de rechercheLes méta moteurs de recherche
Les méta moteurs de recherche
Hassan Barnoussi
 
BigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big DataBigData_Chp1: Introduction à la Big Data
BigData_Chp1: Introduction à la Big Data
Lilia Sfaxi
 

En vedette (20)

Marseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France LabsMarseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France Labs
francelabs
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
francelabs
 
Solr formation Sparna
Solr formation SparnaSolr formation Sparna
Solr formation Sparna
Thomas Francart
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
Andy Jackson
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Data
francelabs
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
francelabs
 
T3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopT3UNI12 : SOLR workshop
T3UNI12 : SOLR workshop
Paul Blondiaux
 
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
Jouve
 
PhD Defense Presentation - Soutenance de thèse
PhD Defense Presentation - Soutenance de thèse PhD Defense Presentation - Soutenance de thèse
PhD Defense Presentation - Soutenance de thèse
Saïd Radhouani
 
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
francelabs
 
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Zia Consulting
 
PhD Dissertation - Manuscrit de thèse de doctorat
PhD Dissertation - Manuscrit de thèse de doctoratPhD Dissertation - Manuscrit de thèse de doctorat
PhD Dissertation - Manuscrit de thèse de doctorat
Saïd Radhouani
 
State-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache SolrState-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache Solr
Robert Douglass
 
Ansible meetup-0915
Ansible meetup-0915Ansible meetup-0915
Ansible meetup-0915
Pierre Mavro
 
SharePoint Search for Dummies
SharePoint Search for DummiesSharePoint Search for Dummies
SharePoint Search for Dummies
Joel Oleson
 
Concepts de Recherche dans un environnement WSS et MOSS
Concepts de Recherche dans un environnement WSS et MOSSConcepts de Recherche dans un environnement WSS et MOSS
Concepts de Recherche dans un environnement WSS et MOSS
Desjardins
 
Explorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelinExplorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelin
Bruno Bonnin
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Ontico
 
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and SolrBeyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
 
Drbd
DrbdDrbd
Drbd
Pierre Mavro
 
Marseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France LabsMarseille JUG Novembre 2013 Lucene Solr France Labs
Marseille JUG Novembre 2013 Lucene Solr France Labs
francelabs
 
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearchBesoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
Besoin de rien Envie de Search - Presentation Lucene Solr ElasticSearch
francelabs
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
Andy Jackson
 
Solr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big DataSolr + Hadoop - Fouillez facilement dans votre système Big Data
Solr + Hadoop - Fouillez facilement dans votre système Big Data
francelabs
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
francelabs
 
T3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopT3UNI12 : SOLR workshop
T3UNI12 : SOLR workshop
Paul Blondiaux
 
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
2015 webinar : Boostez la recherche pour vos applications et sites web avec l...
Jouve
 
PhD Defense Presentation - Soutenance de thèse
PhD Defense Presentation - Soutenance de thèse PhD Defense Presentation - Soutenance de thèse
PhD Defense Presentation - Soutenance de thèse
Saïd Radhouani
 
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
Migration d'Exalead vers Solr - IFCE et France Labs - Search Day 2014
francelabs
 
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Migrating to Alfresco Part II: The “How” – Tools & Best Practices for Renovat...
Zia Consulting
 
PhD Dissertation - Manuscrit de thèse de doctorat
PhD Dissertation - Manuscrit de thèse de doctoratPhD Dissertation - Manuscrit de thèse de doctorat
PhD Dissertation - Manuscrit de thèse de doctorat
Saïd Radhouani
 
State-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache SolrState-of-the-Art Drupal Search with Apache Solr
State-of-the-Art Drupal Search with Apache Solr
Robert Douglass
 
Ansible meetup-0915
Ansible meetup-0915Ansible meetup-0915
Ansible meetup-0915
Pierre Mavro
 
SharePoint Search for Dummies
SharePoint Search for DummiesSharePoint Search for Dummies
SharePoint Search for Dummies
Joel Oleson
 
Concepts de Recherche dans un environnement WSS et MOSS
Concepts de Recherche dans un environnement WSS et MOSSConcepts de Recherche dans un environnement WSS et MOSS
Concepts de Recherche dans un environnement WSS et MOSS
Desjardins
 
Explorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelinExplorez vos données avec apache zeppelin
Explorez vos données avec apache zeppelin
Bruno Bonnin
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Ontico
 
Beyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and SolrBeyond full-text searches with Lucene and Solr
Beyond full-text searches with Lucene and Solr
Bertrand Delacretaz
 
Publicité

Similaire à Apprendre Solr en deux heures (20)

Documents intéractifs
Documents intéractifsDocuments intéractifs
Documents intéractifs
Saïd Radhouani
 
Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)
Thibaud Vibes
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
Spring User Group France
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
 
Atelier template
Atelier templateAtelier template
Atelier template
Pierre Sempé
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le Web
Saïd Radhouani
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
DNG Consulting
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
chaudavid
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
Mickael Perraud
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
Alexis Sukrieh
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
Mickael Perraud
 
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de  pages HTML, Joël RivestStructurer ses travaux SAS à l'aide de  pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
sasreference
 
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
GSoft
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
Mathieu Hicauber
 
Referencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerceReferencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerce
Mozalami SEO
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTML
Vlad Posea
 
Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Glenn Jones : "Réutiliser les data existantes des médias sociaux"Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Christophe Ducamp
 
Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)
Thibaud Vibes
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
Hugo Hamon
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le Web
Saïd Radhouani
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
DNG Consulting
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
chaudavid
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
Mickael Perraud
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
Alexis Sukrieh
 
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINEIntroduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Introduction au langage PHP (2éme partie) élaborée par Marouan OMEZZINE
Marouan OMEZZINE
 
Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?Quoi de neuf dans Zend Framework 1.10 ?
Quoi de neuf dans Zend Framework 1.10 ?
Mickael Perraud
 
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de  pages HTML, Joël RivestStructurer ses travaux SAS à l'aide de  pages HTML, Joël Rivest
Structurer ses travaux SAS à l'aide de pages HTML, Joël Rivest
sasreference
 
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
Concevoir des applications pilotées par la recherche avec SharePoint 2010 et ...
GSoft
 
Referencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerceReferencement et performance pour sites E-commerce
Referencement et performance pour sites E-commerce
Mozalami SEO
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
Nathaniel Richand
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTML
Vlad Posea
 
Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Glenn Jones : "Réutiliser les data existantes des médias sociaux"Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Glenn Jones : "Réutiliser les data existantes des médias sociaux"
Christophe Ducamp
 
Publicité

Plus de Saïd Radhouani (13)

Anatomy of Search Relevance: From Data To Action
Anatomy of Search Relevance: From Data To ActionAnatomy of Search Relevance: From Data To Action
Anatomy of Search Relevance: From Data To Action
Saïd Radhouani
 
Conception de sites Web
Conception de sites WebConception de sites Web
Conception de sites Web
Saïd Radhouani
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
Saïd Radhouani
 
Introduction à l\'e-learnining
Introduction à l\'e-learniningIntroduction à l\'e-learnining
Introduction à l\'e-learnining
Saïd Radhouani
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
Saïd Radhouani
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
Saïd Radhouani
 
Serveur Web (1)
Serveur Web (1)Serveur Web (1)
Serveur Web (1)
Saïd Radhouani
 
Serveur Web (2)
Serveur Web (2)Serveur Web (2)
Serveur Web (2)
Saïd Radhouani
 
SPIP
SPIPSPIP
SPIP
Saïd Radhouani
 
PHP &amp; MySQL
PHP &amp; MySQLPHP &amp; MySQL
PHP &amp; MySQL
Saïd Radhouani
 
Introduction à PHP
Introduction à PHPIntroduction à PHP
Introduction à PHP
Saïd Radhouani
 
Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)
Saïd Radhouani
 
Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)
Saïd Radhouani
 
Anatomy of Search Relevance: From Data To Action
Anatomy of Search Relevance: From Data To ActionAnatomy of Search Relevance: From Data To Action
Anatomy of Search Relevance: From Data To Action
Saïd Radhouani
 
Introduction à l\'e-learnining
Introduction à l\'e-learniningIntroduction à l\'e-learnining
Introduction à l\'e-learnining
Saïd Radhouani
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
Saïd Radhouani
 
Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)
Saïd Radhouani
 
Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)
Saïd Radhouani
 

Dernier (8)

Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
SOFTTECHHUB
 
La généalogie assistée par l’IA (G·IA) et ses outils.
La généalogie assistée par l’IA (G·IA) et ses outils.La généalogie assistée par l’IA (G·IA) et ses outils.
La généalogie assistée par l’IA (G·IA) et ses outils.
Erol GIRAUDY
 
prometheus cous AWS file et exercices a suivre
prometheus cous AWS file et exercices a suivreprometheus cous AWS file et exercices a suivre
prometheus cous AWS file et exercices a suivre
mhamdihayfa89
 
Meilleure astuces de recherche d'emploi.pptx
Meilleure astuces de recherche d'emploi.pptxMeilleure astuces de recherche d'emploi.pptx
Meilleure astuces de recherche d'emploi.pptx
imaneeimaneee0
 
systemes d'informations s'appuyant sur un ERP
systemes d'informations s'appuyant sur un ERPsystemes d'informations s'appuyant sur un ERP
systemes d'informations s'appuyant sur un ERP
NabilKHOUFI
 
Projet VMware cours avec etudes theoriques
Projet VMware cours avec etudes theoriquesProjet VMware cours avec etudes theoriques
Projet VMware cours avec etudes theoriques
mhamdihayfa89
 
Modern Illustrative Software Development Life Cycle Infographic.pptx
Modern Illustrative Software Development Life Cycle Infographic.pptxModern Illustrative Software Development Life Cycle Infographic.pptx
Modern Illustrative Software Development Life Cycle Infographic.pptx
yedekfyh
 
Les PID's en ACTION sur PIST - JESO2025
Les  PID's en ACTION sur PIST - JESO2025Les  PID's en ACTION sur PIST - JESO2025
Les PID's en ACTION sur PIST - JESO2025
Chokri Ben Romdhane
 
Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
Ai EngineHost Review : Hébergement révolutionnaire aux GPU NVIDIA, Datacenter...
SOFTTECHHUB
 
La généalogie assistée par l’IA (G·IA) et ses outils.
La généalogie assistée par l’IA (G·IA) et ses outils.La généalogie assistée par l’IA (G·IA) et ses outils.
La généalogie assistée par l’IA (G·IA) et ses outils.
Erol GIRAUDY
 
prometheus cous AWS file et exercices a suivre
prometheus cous AWS file et exercices a suivreprometheus cous AWS file et exercices a suivre
prometheus cous AWS file et exercices a suivre
mhamdihayfa89
 
Meilleure astuces de recherche d'emploi.pptx
Meilleure astuces de recherche d'emploi.pptxMeilleure astuces de recherche d'emploi.pptx
Meilleure astuces de recherche d'emploi.pptx
imaneeimaneee0
 
systemes d'informations s'appuyant sur un ERP
systemes d'informations s'appuyant sur un ERPsystemes d'informations s'appuyant sur un ERP
systemes d'informations s'appuyant sur un ERP
NabilKHOUFI
 
Projet VMware cours avec etudes theoriques
Projet VMware cours avec etudes theoriquesProjet VMware cours avec etudes theoriques
Projet VMware cours avec etudes theoriques
mhamdihayfa89
 
Modern Illustrative Software Development Life Cycle Infographic.pptx
Modern Illustrative Software Development Life Cycle Infographic.pptxModern Illustrative Software Development Life Cycle Infographic.pptx
Modern Illustrative Software Development Life Cycle Infographic.pptx
yedekfyh
 
Les PID's en ACTION sur PIST - JESO2025
Les  PID's en ACTION sur PIST - JESO2025Les  PID's en ACTION sur PIST - JESO2025
Les PID's en ACTION sur PIST - JESO2025
Chokri Ben Romdhane
 

Apprendre Solr en deux heures

  • 1. Introduction à Solr Saïd Radhouani Juin 2010
  • 2. Recherche d’Information - Rappel Saïd Radhouani © 2010 Documents Requête Correspondance ? Interrogation ? ? Indexation ? Index ?
  • 3. Solr : Introduction Serveur de recherche Basé sur la librairie Lucene Open source Interface d’administration Web Configuration avec des fichiers XML Utilisé dans plusieurs sites : www.whitehouse.gov, Apple, Inc, tsr.ch, NASA, etc. Saïd Radhouani © 2010
  • 4. Solr - Pour commencer Machine virtuelle Java (JRE) 1.5 ou plus récente L’application Solr : dernière version officielle :1.4 (novembre 2009) Saïd Radhouani © 2010
  • 5. Solr - Principe Configuration avec des fichiers XML schéma de l’index traitements à effectuer sur le contenu à indexer (stemming, synonymes, etc.) calcul des scores des documents fonction de classement … Communication avec HTTP mettre à jour l’index Ajout et suppression de document rechercher les documents indexés Saïd Radhouani © 2010
  • 6. Principe de Solr Saïd Radhouani © 2010 document requête document document document Lucene Solr http://… http://… … .xml … .txt … http://…
  • 7. Solr - Indexation Un index ensemble de documents  &quot;analysés&quot; suivant un &quot; schéma &quot; défini Un Document = un ensemble de champs ( fields ) – valeurs ex. prix – 1500 Format des documents pris en charge XML et CSV (par défaut dans la version Solr distribuée) PDF, DOC, XLS, PPT, flux RSS, HTML, etc. Importation des données depuis une base de données Saïd Radhouani © 2010
  • 8. Configuration – Schéma d’indexation Le fichier schema.xml contient types des champs des documents à indexer champs des documents clé unique par document champ de recherche par défaut opérateur booléen par défaut Saïd Radhouani © 2010 <schema name=&quot;example&quot; version=&quot;1.2”> <types> … </types> <fields> … </fields> <uniqueKey>…</uniqueKey> <defaultSearchField>…</defaultSearchField> <solrQueryParser defaultOperator=&quot;OR&quot;/> </schema> schema.xml
  • 9. Configuration – Types des champs (field types) Saïd Radhouani © 2010 Préciser les analyses à appliquer sur le contenu lors de l’Indexation (sur les documents) lors de l’interrogation (sur les requêtes) Types ( fieldType ) prédéfinis : int, float, string, date, boolean, etc. défini dans Solr : text, text_ws, phonetic, etc personnalisés: définir nous-même Analyes ( analyzer type ) tokenizer : comment découper le texte (split): les espaces ? la ponctuation ? Majuscule ? etc. Ensemble de filtres ( filter ) : stemming, Stopwords, Protected words, sensibilité à la casse, Synonyme, etc.
  • 10. Configuration – Types des champs (field types) Exemple: définition du type text (prédéfini) Saïd Radhouani © 2010 < fieldType name=&quot; text &quot; class=&quot;solr.TextField&quot; positionIncrementGap=&quot;100&quot;> <analyzer type=&quot; index &quot;> < tokenizer class=&quot;solr.WhitespaceTokenizerFactory&quot;/> < filter class=&quot;solr.StopFilterFactory&quot; ignoreCase=&quot;true” words=&quot; stopwords.txt &quot;/> </analyzer> <analyzer type=&quot; query &quot;> <tokenizer class=&quot;solr.WhitespaceTokenizerFactory&quot;/> <filter class=&quot;solr.SynonymFilterFactory&quot; synonyms=&quot; synonyms.txt ” ignoreCase=&quot;true&quot; expand=&quot;true&quot;/> <filter class=&quot;solr.StopFilterFactory&quot; ignoreCase=&quot;true” words=&quot; stopwords.txt &quot;/> </analyzer> </fieldType> schema.xml
  • 11. Configuration – fichiers des filtres Exemple : contenu des fichiers utilisés par les filtres Saïd Radhouani © 2010 a à et un une de des le La les … voiture,automobile,véhicule VW, Volkswagen … synonyms.txt stopwords.txt
  • 12. Configuration – Champs (fields) Définir la manière dont nous allons indexer nos données <field name=&quot;…&quot; type=&quot;…&quot; indexed=&quot;true|false&quot; stored=&quot;true|false&quot; required=&quot;true|false&quot; … /> indexed true : un champ sur lequel on peut effectuer des recherches false : un champ qui ne sera pas accessible lors de l’interrogation stored true : champ qui pourra être retourné dans la réponse à une requête false : champ qui ne sera pas retourné dans la réponse à une requête required true: pour être indexé, un document doit contenir ce champ false : ce champ est optionnel Saïd Radhouani © 2010
  • 13. Configuration - Champs (fields) – Exemple Choisir les champs de notre schéma ? analyse des besoins utilisateurs imaginer l’interface de notre futur système Champs Valeurs Marque BMW, Mercedes, Ford, Modèle Série 3, Série 5, …, Mustang, etc. Description une belle voiture…, Couleur rouge, bleu, blanc, etc. Prix 70000, 15000 Saïd Radhouani © 2010
  • 14. Configuration - Champs (fields) - Exemple Exemple: une partie de schema.xml Saïd Radhouani © 2010 <field> <field name=&quot;id&quot; type=&quot;string&quot; indexed=&quot;true&quot; stored=&quot;true&quot; required=&quot;true&quot; /> <field name=&quot;marque&quot; type=&quot;string&quot; indexed=&quot;true&quot; stored=&quot;true&quot; required=&quot;true&quot; /> <field name=&quot;modele&quot; type=&quot;string&quot; indexed=&quot;true&quot; stored=&quot;true&quot;/> <field name=&quot;description&quot; type=&quot;text&quot; indexed=&quot;true&quot; stored=&quot;true&quot; /> <field name=&quot;couleur&quot; type=&quot;string&quot; indexed=&quot;true&quot; stored=&quot;true&quot;/> <field name=&quot;prix&quot; type=&quot;tint&quot; indexed=&quot;true&quot; stored=&quot;true&quot;/> </field> <uniqueKey>id</uniqueKey> <defaultSearchField>description</defaultSearchField> <solrQueryParser defaultOperator=&quot;OR&quot;/> schema.xml
  • 15. Préparation des documents Respecter le schéma défini dans schema.xml noms des champs valeurs correspondantes aux types des champs obligatoire vs. optionnel Plusieurs documents dans le même fichier xml Entourés par les balises <add> et </add> Saïd Radhouani © 2010 <add> <doc> <field name=&quot;champ 1&quot;>valeur du champ 1</field> <field name=&quot; champ 2 &quot;> valeur du champ 2 </field> … <field name=&quot; champ n &quot;> valeur du champ n </field> </doc> <doc> … </doc> … </add> documents.xml
  • 16. Préparation des documents - exemple Exemple de données à indexer Saïd Radhouani © 2010 <add> <doc> <field name=&quot;id&quot;>1</field> <field name=&quot; marque &quot;>BMW</field> <field name=&quot; modele &quot;>X5</field> <field name=&quot; description &quot;>Une jolie X5 en très bon état…</field> <field name=&quot; couleur &quot;>Gris</field> <field name=&quot;prix&quot;>45000</field> </doc> <doc> <field name=&quot;id”>2</field> <field name=&quot;marque”>Volkswagen</field> <field name=&quot;modele&quot;>Golf6</field> <field name=&quot;description&quot;>Une Golf6 toutes options…</field> <field name=&quot;couleur&quot;>Noir</field> <field name=&quot;prix&quot;>21000</field> </doc> … </add> voitures.xml
  • 17. Indexation des documents Saïd Radhouani © 2010 Communiquer avec Solr en utilisant une requête HTTP et update Utilisation du logiciel curl curl http:// adresse_du_serveur /solr/ update -H &quot;Content-type:text/xml&quot; --data-binary @ documents.xml Exemple – Solr sur le serveur local curl http://localhost:8983/solr/update -H &quot;Content-type:text/xml&quot; --data-binary @voitures.xml Solr contient deux scripts qui permettent d’envoyer des reqêtes HTTP à Solr (Post.sh et Post.jar). Pour les utiliser, il suffit d’indiquer l’adresse du serveur hébergeant Solr le ou les fichiers xml qui contiennent les documents à indexer
  • 18. Indexation – suppression de documents Saïd Radhouani © 2010 Suppression par l’identifiant (ID) <delete><id>1</id></delete> Suppression par une requête (plusieurs documents à la fois) <delete> <query>marque:Peugeot</query> </delete> Supprimer-par-id.xml Supprimer-par-requete.xml
  • 19. Mise à jour de l’index – commit/optimize Saïd Radhouani © 2010 Commit met à jour le contenu de l’index en fonction des modifications effectuées rend les modifications visibles curl $URL --data-binary '<commit/>' -H 'Content-type:text/xml; charset=utf-8’ Optimize : en plus de ce que fait commit, optimise l’index fusionne les segments de l’index créé par Lucene rend la recherche plus rapide Documentation: http://wiki.apache.org/solr/UpdateXmlMessages curl $URL --data-binary '<optimize/>' -H 'Content-type:text/xml; charset=utf-8’
  • 20. Interrogation : Correspondance document-requête (Matching) Saïd Radhouani © 2010 une voiture une voiture WhitespaceTokenizer StopFilter ignoreCase=true un automobile pas cher WhitespaceTokenizer SynonymFilter ignoreCase=true expand=true StopFilter ignoreCase=true Requête Correspondance Document un automobile pas Analyse des champs au moment de l’interrogation cher un automobile pas cher voiture automobile cher voiture voiture
  • 21. Interrogation – Syntaxe de la requête Communiquer avec Solr en utilisant une requête HTTP, select et une requête http:// adresse_du_serveur /solr/ select ? q= q définit la requête &quot;principale&quot; *:* retourne tous les documents présents dans l’index + le mot qui suit est obligatoire - le mot qui suit est interdit &quot;&quot; chercher une expression exacte champ:valeur - ex. modele:&quot;Série 5&quot; prix:[* TO 10000] volks?agen, ?olks?agen, auto* Saïd Radhouani © 2010
  • 22. Interrogation – Paramètres Communiquer avec Solr en utilisant une requête HTTP, select et un ensemble de paramètres http:// adresse_du_serveur /solr/ select ?q=& ensemble-de-parametres-valeurs Sort (Par défaut, score desc ): classement des documents retrouvés ex. classer dans l’ordre décroissant par &quot;enStock&quot;, ensuite croissant par &quot;prix&quot; : sort= enStock desc, prix asc rows (Par défaut, 10): pagination des résultats Nombre de documents à retourner par page de résultats start (Par défaut, 0): pagination des résultats Numéro du document-réponse par lequel on commence l’affichage des résultats Saïd Radhouani © 2010
  • 23. Interrogation – Paramètres fq (filter query) Spécifier une requête qui peut être utilisée pour filtrer les documents à retournés ex. Chercher les voiture de marque BMW dont le prix est inférieur à 15000 fq=price:[* TO 15000]&fq=marque:BMW fl (field limiting) Spécifier l’ensemble des champs à retourner dans les réponses ex. Retourner seulement la marque, le prix et la couleur fl=marque,prix,colour Autres paramètres: http://wiki.apache.org/solr/CommonQueryParameters http://wiki.apache.org/solr/FilterQueryGuidance Saïd Radhouani © 2010
  • 24. Interrogation – Requête/Réponse Saïd Radhouani © 2010 http://localhost:8983/solr/select?q= marque:BMW &start=0&rows=10&fl= marque,modele,prix <response> <lst name=&quot;responseHeader&quot;> <int name=&quot;status&quot;>0</int> <int name=&quot;QTime&quot;>0</int> <str name=&quot;q&quot;> marque:BMW </str> <str name=“fl&quot;> marque,modele,prix </str> </lst> <result name=&quot;response&quot; numFound=&quot;1&quot; start=&quot;0&quot;> <doc> <str name=” marque &quot;>BMW</str> <str name=” modele &quot;>X5</str> <str name=” prix &quot;>46000</str> </doc> </result> </response>
  • 25. Démo – Contenu du répertoire de solr Saïd Radhouani © 2010 Programme pour démarrer Solr Répertoire contenant les fichiers de configuration Télécharger Solr depuis http://mirror.switch.ch/mirror/apache/dist/lucene/solr/1.4.0/ En décompressant le fichier téléchargé, vous auriez un répertoire nommé &quot; apache-solr-1.4.0&quot;, ayant la structure suivante
  • 26. Démo – Contenu du répertoire de solr Saïd Radhouani © 2010 Répertoire contenant les documents à indexer Programmes pour insérer les documents dans l’index
  • 27. Démo - Démarrage / Arrêt de Solr En utilisant l’invite de commandes, aller sur le répertoire ~/ apache-solr-1.4.0/example/, qui contient le fichier start.jar Pour démarrer Sorl, taper: java –jar start.jar, puis Entrée Si tout se passe bien, vous verrez la ligne suivant à la fin du démarrage … ::INFO: Started SocketConnector @ 0.0.0.0:8983 Pour arrêter le serveur, appuyer sur les touches ctr+c Saïd Radhouani © 2010
  • 28. Démo – Solr démarré Saïd Radhouani © 2010
  • 29. Saïd Radhouani © 2010 Démo – Page d’administration de Solr
  • 30. Saïd Radhouani © 2010 Démo – Page d’administration de Solr
  • 31. Démo – Ma première requête Saïd Radhouani © 2010
  • 32. Saïd Radhouani © 2010 Démo – Ma première réponse
  • 33. Démo – Préparation de schema.xml Ouvrez le fichier schema.xml situé dans ~apache-solr-1.4.0/example/solr/conf/ Définir les champs entre les balises <fields> </fields> Spécifier la clé unique et le champ de recherche par défaut Sauvegarder (Re)démarrer Solr pour appliquer les modifications Saïd Radhouani © 2010
  • 34. Démo – Préparation des documents Créer le fichier voitures.xml et sauvegarder-le sous le répertoire des documents à indexer ~apache-solr-1.4.0/example/exampledocs/ Saïd Radhouani © 2010 …
  • 35. Démo - Indexation des documents En utilisant l’invite de commandes, aller sur le répertoire ~apache-solr-1.4.0/example/exampledocs/ Taper java –jar post.jar voitures.xml, ensuite Entrée Si tout se passe bien, vous verrez quelque chose qui ressemble à ça Saïd Radhouani © 2010
  • 36. Démo – Interrogation Saïd Radhouani © 2010
  • 37. Démo – Contenu de mon index Saïd Radhouani © 2010
  • 38. Démo – Contenu de mon index Saïd Radhouani © 2010
  • 39. Démo – Analyse des types définis Saïd Radhouani © 2010 Schema.xml Tokenizer Stemmer Stop words Synonyms Protected words
  • 40. Liens Site officiel d'Apache Solr : http://lucene.apache.org/solr Wiki : http://wiki.apache.org/solr Mailing list : http://lucene.apache.org/solr/mailing_lists.html Tutoriel: http://lucene.apache.org/solr/tutorial.html http://www.ibm.com/developerworks/java/library/j-solr1/ http://www.ibm.com/developerworks/java/library/j-solr2/ Livres: Solr 1.4 Enterprise Search Server (Paperback) Base de connaissances: http://www.lucidimagination.com/search/?q = Saïd Radhouani © 2010