Apache Solr

Présentation d'Apache Solr. Partie 2 Interroger Solr

Présentation d'Apache Solr. Partie 2 Interroger Solr
Apache Solr [1] est un framework de moteur de recherche écrit en Java et basé sur la bibliothèque de recherche Lucene [6]. Dans l'article précédent, nous avons configuré Apache Solr sur Debian GNU/Linux 11, qui sera bientôt publié, a lancé un noyau de données unique, téléchargé des exemples de données et montré comment effectuer une recherche de base dans l'ensemble de données à l'aide d'un simple mettre en doute.

Cet article fait suite au précédent. Nous verrons comment affiner la requête, formuler des critères de recherche plus complexes avec différents paramètres et comprendre les différents formulaires Web de la page de requête Apache Solr. Nous verrons également comment post-traiter le résultat de la recherche à l'aide de différents formats de sortie tels que XML, CSV et JSON.

Interroger Apache Solr

Apache Solr est conçu comme une application Web et un service qui s'exécute en arrière-plan. Le résultat est que toute application cliente peut communiquer avec Solr en lui envoyant des requêtes (l'objectif de cet article), en manipulant le noyau du document en ajoutant, mettant à jour et supprimant des données indexées et en optimisant les données de base. Il y a deux options - via le tableau de bord/l'interface Web ou en utilisant une API en envoyant une demande correspondante.

Il est courant d'utiliser le première option à des fins de test et non pour un accès régulier. La figure ci-dessous montre le tableau de bord de l'interface utilisateur d'administration Apache Solr avec les différents formulaires de requête dans le navigateur Web Firefox.

Tout d'abord, dans le menu sous le champ de sélection de base, choisissez l'entrée de menu « Requête ». Ensuite, le tableau de bord affichera plusieurs champs de saisie comme suit :

Cliquer sur le bouton Exécuter la requête exécute la requête souhaitée. Pour des exemples pratiques, regardez ci-dessous.

Comme le deuxième option, vous pouvez envoyer une demande en utilisant une API. Il s'agit d'une requête HTTP qui peut être envoyée à Apache Solr par n'importe quelle application. Solr traite la demande et renvoie une réponse. Un cas particulier est la connexion à Apache Solr via l'API Java. Cela a été sous-traité à un projet distinct appelé SolrJ [7] - une API Java sans nécessiter de connexion HTTP.

Syntaxe de requête

La syntaxe de la requête est mieux décrite dans [3] et [5]. Les différents noms de paramètres correspondent directement aux noms des champs de saisie dans les formulaires expliqués ci-dessus. Le tableau ci-dessous les liste, ainsi que des exemples pratiques.

Index des paramètres de requête

Paramètre La description Exemple
q Le paramètre de requête principal d'Apache Solr - les noms et valeurs des champs. Leurs scores de similarité documentent les termes de ce paramètre. Identifiant : 5
voitures:*adilla*
*:X5
fq Restreindre l'ensemble de résultats aux documents de sur-ensemble qui correspondent au filtre, par exemple, défini via l'analyseur de requête de plage de fonctions maquette
identifiant, modèle
démarrer Décalages pour les résultats de page (début). La valeur par défaut de ce paramètre est 0. 5
Lignes Décalages pour les résultats de page (fin). La valeur de ce paramètre est 10 par défaut 15
sorte Il spécifie la liste des champs séparés par des virgules, sur la base desquels les résultats de la requête doivent être triés modèle asc
fl Il précise la liste des champs à retourner pour tous les documents du jeu de résultats maquette
identifiant, modèle
poids Ce paramètre représente le type de rédacteur de réponse dont nous voulions afficher le résultat. La valeur de ceci est JSON par défaut. json
xml

Les recherches sont effectuées via la requête HTTP GET avec la chaîne de requête dans le paramètre q. Les exemples ci-dessous expliqueront comment cela fonctionne. En cours d'utilisation est curl pour envoyer la requête à Solr qui est installé localement.

De plus, vous pouvez définir votre propre gestionnaire de requêtes pour envoyer les paramètres de requête facultatifs à l'analyseur de requête afin de contrôler les informations renvoyées.

Analyseurs de requêtes

Apache Solr utilise un analyseur de requêtes - un composant qui traduit votre chaîne de recherche en instructions spécifiques pour le moteur de recherche. Un analyseur de requête se tient entre vous et le document que vous recherchez.

Solr est livré avec une variété de types d'analyseurs qui diffèrent dans la façon dont une requête soumise est traitée. L'analyseur de requête standard fonctionne bien pour les requêtes structurées mais est moins tolérant aux erreurs de syntaxe. Dans le même temps, les analyseurs de requêtes DisMax et Extended DisMax sont optimisés pour les requêtes de type langage naturel. Ils sont conçus pour traiter des phrases simples saisies par les utilisateurs et pour rechercher des termes individuels dans plusieurs domaines en utilisant différentes pondérations.

De plus, Solr propose également des requêtes de fonction qui permettent de combiner une fonction avec une requête afin de générer un score de pertinence spécifique. Ces analyseurs sont nommés Function Query Parser et Function Range Query Parser. L'exemple ci-dessous montre ce dernier pour sélectionner tous les ensembles de données pour « bmw » (stockés dans le champ de données make) avec les modèles de 318 à 323 :

curl http://localhost:8983/solr/cars/query -d '
q=faire:bmw&
fq=modèle :[318 À 323] '

Post-traitement des résultats

L'envoi de requêtes à Apache Solr est une partie, mais le post-traitement du résultat de la recherche de l'autre. Tout d'abord, vous pouvez choisir entre différents formats de réponse - de JSON à XML, CSV et un format Ruby simplifié. Spécifiez simplement le paramètre wt correspondant dans une requête. L'exemple de code ci-dessous illustre cela pour récupérer l'ensemble de données au format CSV pour tous les éléments utilisant curl avec échappé & :

boucle http://localhost:8983/solr/cars/query?q=id:5\&wt=csv

La sortie est une liste séparée par des virgules comme suit :

Pour recevoir le résultat sous forme de données XML mais les deux champs de sortie make et model uniquement, exécutez la requête suivante :

boucle http://localhost:8983/solr/cars/query?q=*:*\&fl=marque,modèle\&wt=xml

La sortie est différente et contient à la fois l'en-tête de réponse et la réponse réelle :

Wget imprime simplement les données reçues sur stdout. Cela vous permet de post-traiter la réponse à l'aide d'outils de ligne de commande standard. Pour n'en citer que quelques-uns, il contient jq [9] pour JSON, xsltproc, xidel, xmlstarlet [10] pour XML ainsi que csvkit [11] pour le format CSV.

Conclusion

Cet article présente différentes manières d'envoyer des requêtes à Apache Solr et explique comment traiter le résultat de la recherche. Dans la partie suivante, vous apprendrez à utiliser Apache Solr pour rechercher dans PostgreSQL, un système de gestion de bases de données relationnelles.

À propos des auteurs

Jacqui Kabeta est environnementaliste, chercheuse passionnée, formatrice et mentor. Dans plusieurs pays africains, elle a travaillé dans l'industrie informatique et les environnements d'ONG.

Frank Hofmann est développeur informatique, formateur et auteur et préfère travailler depuis Berlin, Genève et Cape Town. Co-auteur du livre de gestion des paquets Debian disponible auprès de dpmb.organisation

Liens et références

Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...
Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...