Apache Solr : une douce introduction
![](https://www.thepingouin.com/wp-content/uploads/2019/12/facet-735x400.jpg)
Mais c’est du n'importe quoi this blog
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..
Lien de téléchargement : https://www.java.com/fr/download/manual.jsp>
https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
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
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
Solr s’exécute en arrière-plan, si vous voulez l’exécuter en premier plan, il faut utiliser la commande suivante
:
start -f -p 8983
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.
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
Nous pouvons “indexer” plusieurs types de documents avec le serveur Solr, parmi ces documents, nous avons :
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">2019</field>
<field name="cat">book</field>
<field name="name">linguistique</field>
<field name="price">19</field>
<field name="inStock">true</field>
<field name="author">Tesnière</field>
<field name="series_t">Taliste</field>
<field name="sequence_i">1</field>
<field name="genre_s">TAL</field>
</doc>
<doc>
<field name="id">9782253088752</field>
<field name="cat">book</field>
<field name="name">Frankenstein</field>
<field name="price">18</field>
<field name="inStock">3</field>
<field name="author">Mary W. Shelley</field>
<field name="series_t">Esotérisme et paranormal</field>
<field name="sequence_i">2</field>
<field name="genre_s">TAL</field>
</doc>
<doc>
<field name="id">2019</field>
<field name="cat">book</field>
<field name="name">to del</field>
<field name="price">01</field>
<field name="inStock">02</field>
<field name="author">delete</field>
<field name="series_t">delete me</field>
<field name="sequence_i">1</field>
<field name="genre_s">solr</field>
</doc>
</add>
add : Ceci est la balise racine qui nous permet d’ajouter un ou plusieurs documents à indexer.
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éé.
<add>
<doc>
<field name = "id">9782253088752</field>
<field name = "price" update = "add">16.99</field>
<field name = "inStock" update = "set">true</field>
</doc>
</add>
Nous pouvons aussi mettre à jour les documents en utilisant l’invite de commandes et la méthode poste :
- Sous Linux et Mac OS <br /><code>post -c nom_core update.xml </code>
<p>-Sous Windows</p>
java -jar -Dc=nom_core -Dauto=yes -Dport=8983 post.jar C:\chemin\update.xml
<delete>
<id>2019</id>
</delete>
<delete>
<query>price:1.0</query>
</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
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
<commit/> : Enregistre les dernières modifications.
<optimize/> : Enregistre les dernières modifications et opére certaines optimisations.
Avant de valider toute modification en attente, il est possible d’émettre une restauration pour supprimer les opérations d’ajout et de suppression non validées avec la commande suivante :
<rollback/>
# Nous pouvons aussi faire appel à la commande <rollback/> en utilisant une requête HTTP :
http://localhost:8983/solr/nom_core/update?rollback=true
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.
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.
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.
Exemple d’une requête HTTP :
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 :
https://developer.mozilla.org/fr/docs/Web/HTTP/M%C3%A9thodeSolr 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 |
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
Exemple :
Trouver les documents qui ont le champ : "book"
cat:book
Exemple :
Trouver les documents dont l'auteur est "George R.R. Martin"
author:"George R.R. Martin"
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"
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 tous les noms de documents qui commencent par "the"
name : the*
series_t: chr*les
Trouver des mots en spécifiant la distance qui les sépare
series_t:"The Prydain"~2
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]
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 |
Maintenant, vous avez les compétences requises pour bien commencer avec Apache Solr ! À vous de jouer 😉
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 !)