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

Apprendre Solr en deux heures

  • 1.
    Introduction à SolrSaïd Radhouani Juin 2010
  • 2.
    Recherche d’Information -Rappel Saïd Radhouani © 2010 Documents Requête Correspondance ? Interrogation ? ? Indexation ? Index ?
  • 3.
    Solr : IntroductionServeur 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 - Pourcommencer 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 SolrSaïd Radhouani © 2010 document requête document document document Lucene Solr http://… http://… … .xml … .txt … http://…
  • 7.
    Solr - IndexationUn 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émad’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 – fichiersdes 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 documentsRespecter 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 – suppressionde 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 à jourde 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 : Correspondancedocument-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 – Syntaxede 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ètresCommuniquer 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éponseSaï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 – Contenudu 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 – Contenudu 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 – Solrdé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 – Mapremière requête Saïd Radhouani © 2010
  • 32.
    Saïd Radhouani ©2010 Démo – Ma première réponse
  • 33.
    Démo – Préparationde 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éparationdes 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 - Indexationdes 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 – InterrogationSaïd Radhouani © 2010
  • 37.
    Démo – Contenude mon index Saïd Radhouani © 2010
  • 38.
    Démo – Contenude mon index Saïd Radhouani © 2010
  • 39.
    Démo – Analysedes types définis Saïd Radhouani © 2010 Schema.xml Tokenizer Stemmer Stop words Synonyms Protected words
  • 40.
    Liens Site officield'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