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

Contenu connexe

Tendances

Indexation image
Indexation imageIndexation image
Indexation image
Abderrahman (Abdou) Ait-Ali
 
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologies
Fatima Zahra Fagroud
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
Julien CROUZET
 
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
 
Or2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflowOr2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflow
4Science
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
Lilia Sfaxi
 
Ontology concept et applications
Ontology concept et applicationsOntology concept et applications
Ontology concept et applications
benouini rachid
 
Les systèmes de recommandations
Les systèmes de recommandationsLes systèmes de recommandations
Les systèmes de recommandations
Romain Picot-Clemente
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
Lilia Sfaxi
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
Abdoulaye Dieng
 
Les Ontologies dans les Systèmes d’Information
Les Ontologies dans les Systèmes d’InformationLes Ontologies dans les Systèmes d’Information
Les Ontologies dans les Systèmes d’Information
catherine roussey
 
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
Philip Schwarz
 
Langage RDF/RDFs
Langage RDF/RDFsLangage RDF/RDFs
Langage RDF/RDFs
Rached Krim
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
Florian Beaufumé
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven Projects
Les-Tilleuls.coop
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
Shengyou Fan
 
A la découverte du Web sémantique
A la découverte du Web sémantiqueA la découverte du Web sémantique
A la découverte du Web sémantique
Gautier Poupeau
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
Lilia Sfaxi
 
Introduction to java 8 stream api
Introduction to java 8 stream apiIntroduction to java 8 stream api
Introduction to java 8 stream api
Vladislav sidlyarevich
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
Lilia Sfaxi
 

Tendances (20)

Indexation image
Indexation imageIndexation image
Indexation image
 
Cycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologiesCycle de vie et méthodes de construction des ontologies
Cycle de vie et méthodes de construction des ontologies
 
Présentation de ECMAScript 6
Présentation de ECMAScript 6Présentation de ECMAScript 6
Présentation de ECMAScript 6
 
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
 
Or2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflowOr2019 DSpace 7 Enhanced submission &amp; workflow
Or2019 DSpace 7 Enhanced submission &amp; workflow
 
BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian BI : Analyse des Données avec Mondrian
BI : Analyse des Données avec Mondrian
 
Ontology concept et applications
Ontology concept et applicationsOntology concept et applications
Ontology concept et applications
 
Les systèmes de recommandations
Les systèmes de recommandationsLes systèmes de recommandations
Les systèmes de recommandations
 
BigData_TP3 : Spark
BigData_TP3 : SparkBigData_TP3 : Spark
BigData_TP3 : Spark
 
Fondamentaux d’une API REST
Fondamentaux d’une API RESTFondamentaux d’une API REST
Fondamentaux d’une API REST
 
Les Ontologies dans les Systèmes d’Information
Les Ontologies dans les Systèmes d’InformationLes Ontologies dans les Systèmes d’Information
Les Ontologies dans les Systèmes d’Information
 
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...Sum and Product Types -The Fruit Salad & Fruit Snack Example - From F# to Ha...
Sum and Product Types - The Fruit Salad & Fruit Snack Example - From F# to Ha...
 
Langage RDF/RDFs
Langage RDF/RDFsLangage RDF/RDFs
Langage RDF/RDFs
 
Microservices avec Spring Cloud
Microservices avec Spring CloudMicroservices avec Spring Cloud
Microservices avec Spring Cloud
 
API Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven ProjectsAPI Platform and Symfony: a Framework for API-driven Projects
API Platform and Symfony: a Framework for API-driven Projects
 
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
 
A la découverte du Web sémantique
A la découverte du Web sémantiqueA la découverte du Web sémantique
A la découverte du Web sémantique
 
Android - Tp 5 - stockage de données
Android - Tp 5 -  stockage de donnéesAndroid - Tp 5 -  stockage de données
Android - Tp 5 - stockage de données
 
Introduction to java 8 stream api
Introduction to java 8 stream apiIntroduction to java 8 stream api
Introduction to java 8 stream api
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 

En vedette

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
 
Drbd
DrbdDrbd
Solr Presentation
Solr PresentationSolr Presentation
Solr Presentation
Gaurav Verma
 

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
 
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
 
Introduction to Apache Solr
Introduction to Apache SolrIntroduction to Apache Solr
Introduction to Apache Solr
 
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
 
Integrate ManifoldCF with Solr
Integrate ManifoldCF with SolrIntegrate ManifoldCF with Solr
Integrate ManifoldCF with Solr
 
T3UNI12 : SOLR workshop
T3UNI12 : SOLR workshopT3UNI12 : SOLR workshop
T3UNI12 : SOLR workshop
 
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...
 
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
 
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
 
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...
 
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
 
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
 
Ansible meetup-0915
Ansible meetup-0915Ansible meetup-0915
Ansible meetup-0915
 
SharePoint Search for Dummies
SharePoint Search for DummiesSharePoint Search for Dummies
SharePoint Search for Dummies
 
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
 
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
 
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
Архитектура хранилища бинарных данных на Одноклассниках (Александр Христофоро...
 
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
 
Drbd
DrbdDrbd
Drbd
 
Solr Presentation
Solr PresentationSolr Presentation
Solr Presentation
 

Similaire à Apprendre Solr en deux heures

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
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
 
Xquery
XqueryXquery
Xquery
samir
 
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
 

Similaire à Apprendre Solr en deux heures (20)

Documents intéractifs
Documents intéractifsDocuments intéractifs
Documents intéractifs
 
Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)Presentation solr 10 Aout 2011 (french)
Presentation solr 10 Aout 2011 (french)
 
Spring 3.0
Spring 3.0Spring 3.0
Spring 3.0
 
Symfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 PerformantSymfony2 - Un Framework PHP 5 Performant
Symfony2 - Un Framework PHP 5 Performant
 
Atelier template
Atelier templateAtelier template
Atelier template
 
Publication de documents sur le Web
Publication de documents sur le WebPublication de documents sur le Web
Publication de documents sur le Web
 
Resource Oriented Architecture
Resource Oriented ArchitectureResource Oriented Architecture
Resource Oriented Architecture
 
Jump Camp - HTML5
Jump Camp - HTML5Jump Camp - HTML5
Jump Camp - HTML5
 
Tester les applications Zend Framework
Tester les applications Zend FrameworkTester les applications Zend Framework
Tester les applications Zend Framework
 
Coat::Persistent at FPW2009
Coat::Persistent at FPW2009Coat::Persistent at FPW2009
Coat::Persistent at FPW2009
 
Association 2 0
Association 2 0Association 2 0
Association 2 0
 
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
 
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 ?
 
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
 
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 ...
 
Xquery
XqueryXquery
Xquery
 
Services rest & jersey
Services rest & jerseyServices rest & jersey
Services rest & jersey
 
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
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
IPW 2eme course - HTML
IPW 2eme course - HTMLIPW 2eme course - HTML
IPW 2eme course - HTML
 

Plus de 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
 
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
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
 

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
 
Conception de sites Web
Conception de sites WebConception de sites Web
Conception de sites Web
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
 
Introduction à l\'e-learnining
Introduction à l\'e-learniningIntroduction à l\'e-learnining
Introduction à l\'e-learnining
 
Introduction à XML
Introduction à XMLIntroduction à XML
Introduction à XML
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
 
Serveur Web (1)
Serveur Web (1)Serveur Web (1)
Serveur Web (1)
 
Serveur Web (2)
Serveur Web (2)Serveur Web (2)
Serveur Web (2)
 
SPIP
SPIPSPIP
SPIP
 
PHP &amp; MySQL
PHP &amp; MySQLPHP &amp; MySQL
PHP &amp; MySQL
 
Introduction à PHP
Introduction à PHPIntroduction à PHP
Introduction à PHP
 
Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)Introduction aux technologies du Web (2)
Introduction aux technologies du Web (2)
 
Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)Introduction aux technologies du Web (1)
Introduction aux technologies du Web (1)
 

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