Introduction à Apache Solr. Partie 2 Interroger Solr

Introduction à Apache Solr. Partie 2 Interroger Solr
Apache Solr [1] est un cadre 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 seul noyau de données, téléchargé d'exemples de données et démontré comment effectuer une recherche de base dans l'ensemble de données en utilisant un simple mettre en doute.

Ceci est un article de suivi de la précédente. Nous couvrirons 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 d'Apache Solr. De plus, nous discuterons de la façon de post-processus le résultat de la recherche en utilisant 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 client peut communiquer avec SOLR en lui envoyant des requêtes (au centre de cet article), en manipulant le noyau du document en ajoutant, mise à jour et supprimer des données indexées, et en optimisant les données de base. Il existe deux options - via un tableau de bord / interface Web ou à l'aide d'une API en envoyant une demande correspondante.

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

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

  • Gestionnaire de demandes (QT):
    Définissez le type de demande que vous souhaitez envoyer à Solr. Vous pouvez choisir entre les gestionnaires de demande par défaut «/ select» (requête des données indexées), «/ mise à jour» (données indexées à jour) et «/ supprimer» (supprimer les données indexées spécifiées), ou une auto-définie.
  • Événement de requête (Q):
    Définissez les noms et valeurs de champ à sélectionner.
  • Requêtes de filtre (FQ):
    Restreindre le superset des documents qui peuvent être retournés sans affecter le score du document.
  • Ordre de tri (tri):
    Définissez l'ordre de tri des résultats de la requête à l'ascendant ou à la descente
  • Fenêtre de sortie (démarrage et lignes):
    Limitez la sortie aux éléments spécifiés
  • Liste des champs (FL):
    Limite les informations incluses dans une réponse de requête à une liste spécifiée de champs.
  • Format de sortie (WT):
    Définissez le format de sortie souhaité. La valeur par défaut est JSON.

Cliquez sur le bouton Exécuter Requête exécute la demande souhaitée. Pour des exemples pratiques, jetez un œil ci-dessous.

Comme le deuxième option, Vous pouvez envoyer une demande à l'aide d'une API. Il s'agit d'une demande 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 de ceci est la connexion à Apache Solr via l'API Java. Cela a été externalisé à un projet séparé appelé Solrj [7] - une API Java sans nécessiter de connexion HTTP.

Syntaxe de requête

La syntaxe de requête est mieux décrite dans [3] et [5]. Les différents noms de paramètres correspondent directement aux noms des champs d'entrée dans les formulaires expliqués ci-dessus. Le tableau ci-dessous les répertorie, plus des exemples pratiques.

Index des paramètres de requête

Paramètre Description Exemple
q Le paramètre de requête principale d'Apache Solr - les noms et valeurs de champ. Leurs scores de similitude documentent aux termes de ce paramètre. ID: 5
voitures: * Adilla *
*: X5
fq Restreignez l'ensemble de résultats sur les documents de superset qui correspondent au filtre, par exemple, défini via l'analyseur de requête de la plage de fonction modèle
ID, modèle
commencer Compense pour les résultats de la page (commencer). La valeur par défaut de ce paramètre est 0. 5
Lignes Compense pour les résultats de la page (fin). La valeur de ce paramètre est 10 par défaut 15
trier 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 spécifie la liste des champs à retourner pour tous les documents de l'ensemble de résultats modèle
ID, modèle
wt Ce paramètre représente le type d'écrivain de réponse que nous voulions voir le résultat. La valeur de ceci est JSON par défaut. json
xml

Les recherches sont effectuées via la demande de GET HTTP avec la chaîne de requête dans le paramètre Q. Les exemples ci-dessous clarifieront comment cela fonctionne. Dans l'utilisation est une boucle pour envoyer la requête à SOLR qui est installée localement.

  • Récupérez tous les ensembles de données des voitures de base
    Curl http: // localhost: 8983 / solr / voitures / requête?Q = *: *
  • Récupérez tous les ensembles de données des voitures de base qui ont un ID de 5
    Curl http: // localhost: 8983 / solr / voitures / requête?Q = id: 5
  • Récupérez le modèle de terrain à partir de tous les ensembles de données des voitures de base
    Option 1 (avec échappé et):
    Curl http: // localhost: 8983 / solr / voitures / requête?q = id: * \ & fl = modèle

    Option 2 (requête en tiques simples):

    curl 'http: // localhost: 8983 / solr / voitures / requête?q = id: * & fl = modèle '
  • Récupérez tous les ensembles de données des voitures de base triées par prix dans l'ordre descendant et émettez les champs fabriquer, modèle et prix, uniquement (version en tiques uniques):
    curl http: // localhost: 8983 / solr / voitures / query -d '
    q = *: * &
    tri = prix desc &
    fl = make, modèle, prix '
  • Récupérez les cinq premiers ensembles de données des voitures de base triées par prix dans l'ordre descendant et émettez les champs fabriquer, modèle et prix, uniquement (version en tiques uniques):
    curl http: // localhost: 8983 / solr / voitures / query -d '
    q = *: * &
    lignes = 5 &
    tri = prix desc &
    fl = make, modèle, prix '
  • Récupérez les cinq premiers ensembles de données des voitures de base triées par prix dans l'ordre descendant et émettez les champs fabriquer, modèle et prix plus son score de pertinence, uniquement (version en tiques uniques):
    curl http: // localhost: 8983 / solr / voitures / query -d '
    q = *: * &
    lignes = 5 &
    tri = prix desc &
    fl = make, modèle, prix, score '
  • Renvoyez tous les champs stockés ainsi que le score de pertinence:
    curl http: // localhost: 8983 / solr / voitures / query -d '
    q = *: * &
    fl = *, score '

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

Analyseurs de requête

Apache Solr utilise un animal d'analyse de la requête - un composant qui traduit votre chaîne de recherche en instructions spécifiques pour le moteur de recherche. Un analyseur de requête se situe 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érante aux erreurs de syntaxe. Dans le même temps, l'analyseur de requête Dismmax et étendue est optimisé pour les requêtes de type langue naturelle. Ils sont conçus pour traiter les phrases simples entrées par les utilisateurs et pour rechercher des termes individuels sur plusieurs champs en utilisant une pondération différente.

En outre, Solr propose également des requêtes dits de fonction qui permettent à une fonction d'être combinée avec une requête afin de générer un score de pertinence spécifique. Ces analyseurs sont nommés l'analyseur de requête de fonction et l'analyseur de requête de gamme de fonctions de fonction. L'exemple ci-dessous montre ce dernier pour choisir tous les ensembles de données pour «BMW» (stocké dans la marque de champ de données) avec les modèles de 318 à 323:

curl http: // localhost: 8983 / solr / voitures / 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 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 rubis simplifié. Spécifiez simplement le paramètre WT correspondant dans une requête. L'exemple de code ci-dessous le démontre pour récupérer l'ensemble de données au format CSV pour tous les éléments utilisant Curl avec Escaped &:

Curl http: // localhost: 8983 / solr / voitures / requête?q = id: 5 \ & wt = csv

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

Afin de recevoir le résultat sous forme de données XML, mais les deux champs de sortie font et modèle uniquement, exécutez la requête suivante:

Curl http: // localhost: 8983 / solr / voitures / requête?q = *: * \ & fl = make, 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-traitement de la réponse à l'aide d'outils de ligne de commande standard. Pour en énumérer quelques-uns, cela contient JQ [9] pour JSON, XSLTProc, Xidel, XMLStarlet [10] pour XML ainsi que CSVKIT [11] pour le format CSV.

Conclusion

Cet article montre différentes façons 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 base de données relationnel.

À propos des auteurs

Jacqui Kabeta est un environnementaliste, un chercheur passionné, un entraîneur et un mentor. Dans plusieurs pays africains, elle a travaillé dans l'industrie informatique et les environnements d'ONG.

Frank Hofmann est un développeur, entraîneur et auteur informatique et préfère travailler à Berlin, Genève et Cape Town. Co-auteur du livre de gestion des packages Debian disponible auprès de DPMB.org

Liens et références

  • [1] Apache Solr, https: // lunene.apache.org / solr /
  • [2] Frank Hofmann et Jacqui Kabeta: Introduction à Apache Solr. Partie 1, http: // Linuxhint.com
  • [3] Yonik Seelay: syntaxe de requête Solr, http: // yonik.com / solr / query-syntax /
  • [4] Yonik Seelay: Solr Tutorial, http: // yonik.com / solr-tutorial /
  • [5] Apache Solr: requête des données, tutorielpoint, https: // www.tutorielpoint.com / apache_solr / apache_solr_querying_data.htm
  • [6] Lucene, https: // lunene.apache.org /
  • [7] Solrj, https: // lunene.apache.org / solr / guide / 8_8 / using-solrj.html
  • [8] Curl, https: // curl.se /
  • [9] JQ, https: // github.com / Stedolan / jq
  • [10] Xmlstarlet, http: // xmlstar.sourceforge.filet/
  • [11] CSVKIT, https: // csvkit.lecture.IO / EN / DERNIT /