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:
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.
Curl http: // localhost: 8983 / solr / voitures / requête?Q = *: *
Curl http: // localhost: 8983 / solr / voitures / requête?Q = id: 5
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 '
curl http: // localhost: 8983 / solr / voitures / query -d '
q = *: * &
tri = prix desc &
fl = make, modèle, prix '
curl http: // localhost: 8983 / solr / voitures / query -d '
q = *: * &
lignes = 5 &
tri = prix desc &
fl = make, modèle, prix '
curl http: // localhost: 8983 / solr / voitures / query -d '
q = *: * &
lignes = 5 &
tri = prix desc &
fl = make, modèle, prix, score '
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