Requêtes sur ISTEX : Différence entre versions

De Wicri Manuel
imported>Jacques Ducloy
(Requête avec des groupes de termes)
imported>Jacques Ducloy
(Requête avec des groupes de termes)
Ligne 79 : Ligne 79 :
 
  IstexGetCorpus -q "rabelais AND pantagruel AND  gargantua" -s 5| grep title
 
  IstexGetCorpus -q "rabelais AND pantagruel AND  gargantua" -s 5| grep title
 
  IstexGetCorpus -q "rabelais pantagruel gargantua" -s 5| grep title
 
  IstexGetCorpus -q "rabelais pantagruel gargantua" -s 5| grep title
 +
</source>
 +
 +
On peut observer le comportement du moteur en jouant sur la taille de la requête pour voir à quel niveau les résultats commencent à diverger. On pourra par exemple faire
 +
<source lang="sh">
 +
IstexGetCorpus -q "rabelais AND pantagruel AND gargantua" -s 50 |  grep title | tail -5
 +
IstexGetCorpus -q "rabelais pantagruel gargantua" -s 50 |  grep title | tail -5
 +
IstexGetCorpus -q "rabelais AND pantagruel AND gargantua" -s 150 |  grep title | tail -5
 +
IstexGetCorpus -q "rabelais pantagruel gargantua" -s 150 |  grep title | tail -5
 
</source>
 
</source>

Version du 8 mars 2016 à 09:40

Cette page présente des requêtes simples sur ISTEX dans un environnement Unix avec les commandes de la famille IstexGetCorpus.

Introduction

La plateforme ISTEX utilise le serveur de recherche Elasticsearch. Celui-ci est une application paramétrable qui s'appuie sur le moteur de recherche Lucene.

La compréhension d'une requête ISTEX avancée demande donc la compréhension de trois niveaux de fonctionnalités :

  • le langage de requête du moteur Lucene syntaxe Lucene,
  • le fonctionnement de l'application Elastichsearcb
  • le paramétrage réalisé par l'INIST

Pour un premier contact avec l'api ISTEX, il est conseillé de démarrer avec un navigateur en s'appuyant sur la documentation associée.

Requête portant sur un seul terme

L’adaptation de cette documentation au contexte Unix cause quelques problèmes de conflit entre la syntaxe acceptée par le moteur Lucene et celle du shell Unix.

Pour une recherche sur un terme unique (Single Term), la formulation d'une requête se réduit à « -q term ». Exemples :

 IstexGetCorpusSize -q rabelais
 IstexFlashCorpus   -q rabelais -s 20
 IstexExplorCorpus  -q rabelais -s 200 -d testRabelais

Le terme rabelais est alors recherché dans l'ensemble du document, indépendamment de la casse, ainsi les requêtes suivantes sont équivalentes :

 IstexGetCorpusSize -q rabelais
 IstexGetCorpusSize -q Rabelais
 IstexGetCorpusSize -q rabelaiS

Requête avec des groupes de termes

Il est possible de poser des requêtes avec des groupes de termes avec un fonctionnement proche de celui de Google.

Dans les lignes de commande shell, il suffira de regrouper les termes entre des guillemets droits ( " ) ou double quotes. Attention, la requête envoyée à l'API ne contiendra pas ces caractères.

Pour sélectionner tous les documents contenant Rabelais ou Pantagruel ou Gargantua, il faudra écrire :

 IstexGetCorpusSize -q "rabelais pantagruel gargantua"

A la date de rédaction de ce paragraphe on obtient : 9938.

En fait cette requête utilise de façon implicite l'opérateur booléen OU (OR en anglais dans la syntaxe Lucene). La requête précédente est donc équivalente à :

 IstexGetCorpusSize -q "rabelais OR pantagruel OR gargantua"

Si l'on souhaite obtenir tous les documents contenant à la fois les trois termes, il faudra écrire :

 IstexGetCorpusSize -q "rabelais AND pantagruel AND gargantua"

On obtient alors : 472.

Dans la restitution des résultats, le service ISTEX trie les documents avec des mécanismes de pondération. Un document qui contient 10 fois le terme « rabelais » sera par exemple classé avant celui qui n'en contiendra qu'un seul.

Ceci peut être mis en évidence avec l'utilisation de l'option -s (size) dans la commande IstexGetCorpus. La requête suivante :

 IstexGetCorpus -q "rabelais AND pantagruel AND gargantua" -s 2

provoque l'impression de :

{
  "total": 472,
  "nextPageURI": "https://api.istex.fr/document/?q=rabelais%20AND%20pantagruel%20AND%20%20gargantua&size=2&from=2",
  "firstPageURI": "https://api.istex.fr/document/?q=rabelais%20AND%20pantagruel%20AND%20%20gargantua&size=2&from=0",
  "lastPageURI": "https://api.istex.fr/document/?q=rabelais%20AND%20pantagruel%20AND%20%20gargantua&size=2&from=470",
  "hits": [
    {
      "title": "Gargantua, Pantagruel , and renaissance cooking tracts: Texts for consumption",
      "id": "456AC60BC74560F8AA789699F40828F1A00D46C7"
    },
    {
      "title": "L'œuvre de rabelais d'après les recherches les plus récentes",
      "id": "C625D476CAD3E04B33A09D459C919026D04AA7B8"
    }
  ]
}

En combinant avec un filtrage par un grep sur les titres, le jour où cette page a été écrite, les 2 requêtes suivantes ont donné un résultat identique :

 IstexGetCorpus -q "rabelais AND pantagruel AND  gargantua" -s 5| grep title
 IstexGetCorpus -q "rabelais pantagruel gargantua" -s 5| grep title

On peut observer le comportement du moteur en jouant sur la taille de la requête pour voir à quel niveau les résultats commencent à diverger. On pourra par exemple faire

IstexGetCorpus -q "rabelais AND pantagruel AND gargantua" -s 50 |  grep title | tail -5
IstexGetCorpus -q "rabelais pantagruel gargantua" -s 50 |  grep title | tail -5
IstexGetCorpus -q "rabelais AND pantagruel AND gargantua" -s 150 |  grep title | tail -5
IstexGetCorpus -q "rabelais pantagruel gargantua" -s 150 |  grep title | tail -5