1) Solr¶
Solr est un serveur de recherche open-source développé en utilisant Lucene Core de Apache (une technologie de recherche et d’indexation basée sous Java).
Solr est utilisé par l’un des plus grands moteurs de recherche sur internet : Duckduckgo.
Il est aussi utilisé par plusieurs entreprises telles que Netflix, ebay, Buy.com, Disney, Bloomberg, etc..
1.2) Fonctionnalités de Solr :¶
- Analyse de documents
- Une recherche de texte avancée
- Prise en charge de plusieurs langues telles que l’anglais, le français, japonais, etc..
- Prise en charge de plusieurs extensions de fichier (CSV,XML,JSON,etc..)
2) Installation¶
Prérequis :¶
2.1) téléchargement et Installation de Java (Windows, Mac Os et Linux)¶
Important : Afin d’installer les composantes ci-dessous ainsi que pour le déploiement du serveur Solr vous devez avoir les privilèges d’administration sur votre machine; que cela soit pour Windows, Mac OS ou Linux.
Lien de téléchargement : https://www.java.com/fr/download/manual.jsp>
2.2) téléchargement et Installation de la Plate-forme Java JDK (Windows)¶
Vistez le lien suivant et téléchargez la dernière version de java¶
https://www.oracle.com/technetwork/java/javase/downloads/index.html¶
2.2) Téléchargement de Solr :¶
https://lucene.apache.org/solr/downloads.html¶
Une fois le téléchargement terminé copier l’archive dans votre bureau¶
3) Ajouter JAVA_HOME aux variables d’environnement de Windows¶
Téléchargement de la Plate-forme Java (Mac OS ou Linux)¶
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
Téléchargement de Solr (Mac OS)¶
Extraire les fichiers de l’archive (Mac Os ou Linux)¶
Ouvrir l’invite de commandes de votre Mac Os ou Linux
se déplacer vers le chemin où vous avez votre fichier avec la commande
cd
Extraire tous les fichiers avec la commande
tar zxf solr-8.2.0.tgz
4 ) Lancement du serveur Solr¶
- Extraire tous les fichiers de l’archive " solr-8.2.0.zip "
- Allez dans le dossier solr-8.2.0, puis dans le dossier " bin "
- Copiez le chemin de votre dossier
- Ouvrir l’invite de commandes (CMD) : Touche clavier Windows + R puis tapez cmd et cliquez sur ok
solr start -p 8984
Afin d’accéder à l’interface de votre serveur Solr il suffit d’entrer l’adresse suivante dans votre navigateur.
http://localhost:8984
6) Commandes de base :¶
- Lancer le serveur : solr start -p 8983
- Voir l’état du serveur : solr status
- Arrêter le serveur : solr stop -p 8983
- Redémarrer le serveur : solr restart
- Créer un nouveau Core : solr create -c nom_core
- Supprimer un Core : solr delete -c nom_core
- Avoir des informations sur l’utilisation d’une commande : solr -help
Exemple d’utilisation : Nous voulons avoir plus d’informations sur l’utilisation de la commande " create_core ". Pour ce faire, nous allons utiliser la ligne de commande suivante : solr create_core -help
:
start -f -p 8983
7) Ajouter des documents à notre serveur (Indexing) Windows¶
7.1 En utilisant l’invite de commandes de Windows¶
java -jar -Dc=tal -Dauto=yes -Dport=8983 post.jar books.csv
Dans le cadre vert, le chemin du script java. Et dans le cadre rouge le chemin du document que vous voulez indexer.
7.1) Ajouter des documents à notre serveur (Indexing) Mac Os et Linux¶
Comparé à Windows, il est plus facile, d’ajouter des documents à votre serveur en utilisant le système d’exploitation Linux ou Mac OS.
Pour se faire, il suffit d’utiliser la commande suivante :
./post -c nom_core books.csv
7.2 En utilisant l’interface de Solr¶
8) Types de documents pris en charge par Solr¶
- Word
- html
- txt
- csv
- xml
- json
8.2 XML¶
XML ou " eXtensible Markup Language " est un langage de balisage qui a été conçu
pour stocker et transporter des données. La particularité du XML réside dans l’utilisation
d’étiquete ou " tag " en anglais, ce processus facilite la lecture des documents pour l’homme comme pour la machine.
exemple
<add>
<doc>
<field name="id">2019field>
<field name="cat">bookfield>
<field name="name">linguistiquefield>
<field name="price">19field>
<field name="inStock">truefield>
<field name="author">Tesnièrefield>
<field name="series_t">Talistefield>
<field name="sequence_i">1field>
<field name="genre_s">TALfield>
doc>
<doc>
<field name="id">9782253088752field>
<field name="cat">bookfield>
<field name="name">Frankensteinfield>
<field name="price">18field>
<field name="inStock">3field>
<field name="author">Mary W. Shelleyfield>
<field name="series_t">Esotérisme et paranormalfield>
<field name="sequence_i">2field>
<field name="genre_s">TALfield>
doc>
<doc>
<field name="id">2019field>
<field name="cat">bookfield>
<field name="name">to delfield>
<field name="price">01field>
<field name="inStock">02field>
<field name="author">deletefield>
<field name="series_t">delete mefield>
<field name="sequence_i">1field>
<field name="genre_s">solrfield>
doc>
add>
doc : Le document que nous allons ajouter doit être entouré avec la balise < doc >
field : la balise < field > contient le nom du champ et la valeur (les données)
Avec la balise add indique à Solr qu’il faut ajouter le document. Si le document est déjà présent dans le serveur, alors ce dernier sera mis à jour sinon le document sera créé.
9.2 Mettre à jour un document¶
<add>
<doc>
<field name = "id">9782253088752field>
<field name = "price" update = "add">16.99field>
<field name = "inStock" update = "set">truefield>
doc>
add>
-Sous Windows- Sous Linux et Mac OS
post -c nom_core update.xml
java -jar -Dc=nom_core -Dauto=yes -Dport=8983 post.jar C:\chemin\update.xml
9.3.1 Supprimer un document¶
<delete>
<id>2019id>
delete>
9.3.2 Supprimer un champ¶
<delete>
<query>price:1.0query>
delete>
Vous pouvez supprimer des documents et des champs en utilisant l’invite de commandes.
Sous Linux et Mac Os :
./post -c my_core supprimer.xml
Sous Windows :
java -jar -Dc=nom_core -Dauto=yes -Dport=8983 C:\Users\yahia\Desktop\Solr\solr-8.2.0\example\exampledocs\post.jar C:\chemin\supprimer.xml
9.3.3 D’autres commandes¶
<commit/> : Enregistre les dernières modifications.
<optimize/> : Enregistre les dernières modifications et opére certaines optimisations.
les opérations d’ajout et de suppression non validées avec la commande suivante :
<rollback/>
# Nous pouvons aussi faire appel à la commande en utilisant une requête HTTP :
http://localhost:8983/solr/nom_core/update?rollback=true
10) HTTP¶
HTTP est un protocole extensible. Il s’appuie sur quelques concepts basiques comme la notion de ressources et d’URI, une structure de messages simple et une structure client-serveur pour le flux de communication. En plus de ces concepts basiques, de nombreuses extensions du protocole sont apparues au fil des années, ajoutant de nouvelles fonctionnalités et de nouvelles syntaxes en créant de nouvelles méthodes ou en-têtes HTTP.
11) Requête HTTP¶
HTTP définit un ensemble de méthodes de requête qui indiquent l’action que l’on souhaite réaliser sur la ressource indiquée.
Les differents types de requête HTTP
- GET : La méthode GET demande une représentation de la ressource spécifiée. Les requêtes GET doivent uniquement être utilisées afin de récupérer des données.
- La méthode HEAD : La méthode HEAD demande une réponse identique à une requête GET pour laquelle on aura omis le corps de la réponse (on a uniquement l’en-tête).
- La méthode POST :La méthode POST est utilisée pour envoyer une entité vers la ressource indiquée. Cela entraîne généralement un changement d’état ou des effets de bord sur le serveur.
- Nous avons encore d’autres méthode telles que : PUT, DELETE, CONNECT, etc..
https://www.google.com/search?q=solr
Pour en savoir plus sur les requête HTTP et leurs fonctionnement, je vous invite à visiter le site de la fondation Mozilla :
Récapitulatif de ce que nous avons vu jusque là :¶
- Une présentation de Solr et de ses fonctionnalités
- le Téléchargement et l’Installation de la Plate-forme Java (Windows et Mac OS)
- L’ajout de JAVA_HOME aux variables d’environnement de Windows
- Le téléchargement et le déploiement d’un serveur Solr (Windows, Mac OS et Linux)
- Les commandes de base de solr; des commandes qui nous permettent de créer, arrêter, redémarrer et de voir l’état du serveur
- Nous avons vu aussi, comment créer un Core et comment le supprimer ainsi qu’indexer plusieurs types de documents : XML, CSV, JSON
- Comment utiliser le XML pour ajouter, mettre à jour et supprimer des documents ou des champs
- les requêtes HTTP
12) La récupération des données avec les Requêtes dans Solr¶
Solr offre un grand ensemble de fonctionnalités pour la recherche de données.
Lorsqu’un utilisateur effectue une recherche dans Solr, la requête de recherche est traitée par un gestionnaire de requête. Un gestionnaire de requête est un plug-in Solr qui définit la logique à utiliser lorsque Solr traite une requête donnée.
Afin de traiter une requête de recherche, un gestionnaire de requêtes appelle un analyseur de requête(query parser), qui interprète les termes et les paramètres d’une requête. Différents analyseurs de requêtes prennent en charge une syntaxe différente. L’analyseur de requête par défaut de Solr est connu comme analyseur de requêtes standard, ou plus simplement comme analyseur de requêtes " lucene ". C’est ce dernier que nous allons voir dans ce cours.
Source des définitions : Apache Solr Reference Guide 8.1
Les Paramètres et leurs descriptions |
|
---|---|
q | La chaîne de recherche qui indique ce que nous demandons à Solr selon une syntaxe donnée. Et C’est le paramètre de requête principal d’Apache Solr |
fq | (Filter Queries) Ce paramètre représente la requête de filtre d’Apache Solr. Il limite le jeu de résultats aux documents correspondant à ce filtre. exemple : fq = id:0553573403 & fq= id:0553579908 |
fl | Ce paramètre spécifie la liste des champs à renvoyer pour chaque document du jeu de résultats. |
wt | Sert à définir le format de la réponse, par défaut, le paramètre affiche la réponse sous le format JSON |
start | Le paramètre start représente les décalages de départ pour les résultats d'une page. La valeur par défaut de ce paramètre est de 0. |
rows | Ce paramètre représente le nombre de documents à récupérer par page. La valeur par défaut de ce paramètre est de 10. |
sort | Ce paramètre spécifie la liste des champs, séparés par des virgules, en fonction desquels les résultats de la requête doivent être triés.(asc pour ordre croissant ou desc pour ordre décroissant). |
debugQuery | Si cela est vrai, une section supplémentaire sera ajoutée à la réponse avec une explication du chemin de lecture actuel. |
omitHeader | Par défaut, la réponse contient l'en-tête d'information des métadonnées relatives à la requête. Si ce paramètre est activer, alors ces métadonnées seront omises |
Facet ou Faceting dans Solr¶
Lorsque vous effectuez une recherche dans Apache Solr, vous récupérez une seule page de résultats composée d'un certain nombre de documents correspondants. Avec l’activation du faceting vous pouvez obtenir une
perspective des données globales.
Dès que vous activez l'option "facet" dans Solr vous allez avoir trois champs supplémentaires dans votre interface :
Facet.query :
Le paramètre facet.query déclare une requête analysée par l’analyseur de requête Solr, qui sera
utilisé comme une facette avec les décomptes correspondants. Les résultats de cette facette vont
être affichés dans une section de réponse spécifique appelée facets_queries.
Facet fields :
Les champs de facettes sont les plus utilisés. Ils agrègent les résultats de recherche en utilisant
un ensemble de champs donnés.
Exemple :
localhost:8983/solr/tal/select?q=*:*&facet=true&facet.query=genre_s:fantasy
Lucene Query Syntax ( La syntaxe des requêtes de Lucen)¶
Trouver des documents en utilisant des mots clés¶
Exemple :
Trouver les documents qui ont le champ : "book"
cat:book
Trouver des documents en utilisant des suites de mots ou de phrases¶
Exemple :
Trouver les documents dont l'auteur est "George R.R. Martin"
author:"George R.R. Martin"
Trouver des documents en utilisant deux champs différents avec l'opérateur AND¶
Exemple :
Trouver les documents dont l'auteur est "George R.R. Martin" et dont la catégorie est "livre"
author:"George R.R. Martin" AND cat: "book"
Trouver des documents en utilisant un champ ou un autre avec l'opérateur OR¶
Exemple :
Recherchez soit la suite de mots "George R.R. Martin" dans le champ de "auteur" ET le mots "book" dans le champ "livre", OU le mot "fantasy" dans le champ de genre.
(author:"George R.R. Martin" AND cat: "book") OR genre_s:fantasy
Trouver des documents en utilisant les premières lettres d'un mot ou d'une suite de mots¶
Trouver tous les noms de documents qui commencent par "the"
name : the*
Trouver des documents en utilisant les premières et les dernières lettres d'un mot¶
series_t: chr*les
Correspondance de proximité¶
Trouver des mots en spécifiant la distance qui les sépare
series_t:"The Prydain"~2
Correspondance de Portée¶
Les requêtes de plage permettent de faire correspondre les documents dont les valeurs de champ sont comprises entre les limites inférieure et supérieure spécifiées par la requête de plage.
id:[0380014300 TO 0553573403]
Liste des opérateurs dans Solr :¶
Les Opérateurs et leurs descriptions |
|
---|---|
AND | Conjonction entre deux critères, qui doivent tous deux être satisfaits |
OR | (Une conjonction entre deux critères où au moins un doit être satisfait |
+ | Marque un terme comme obligatoire |
- ou NOT | Marque un terme comme interdit |
Si vous avez aimé cet article, vous pouvez nous soutenir en vous souscrivant à un mois gratuit de "Amazon Prime" (que vous pouvez annuler à tout moment !)