Par défaut le point d'entrée de l'API est http://api.documentation-administrative.gouv.fr/search/, donc le portail HAL
Si vous le souhaitez, vous pouvez limiter vos requêtes à un portail, en précisant l'instance du portail dans l'URL
La liste des instances de portails est disponible dans le référentiel instance
des Instances de portail.
Limiter les requêtes au portail TEL (instance: tel
) TEL :
//api.documentation-administrative.gouv.fr/search/tel/
Vous pouvez aussi limiter la recherche à une collection en précisant le code de la collection dans l'URL d'accès
Limiter les requêtes à la collection FRANCE-GRILLES :
//api.documentation-administrative.gouv.fr/search/FRANCE-GRILLES/
La casse est Importante
La casse du texte après /search/
définit si la recherche est limitée à un portail ou
une COLLECTION
/search/tel/
la recherche est limitée au portail TEL/search/FRANCE-GRILLES/
la recherche est limitée à la collection FRANCE-GRILLES
Il faut au moins un paramètre dans l'URL pour faire une requête, ce paramètre
est
q
Ce paramètre contient la requête à effectuer.
Le paramètre doit être suivi du nom du champ dans lequel rechercher puis de la valeur à chercher.
Caractères utilisés par Apache Solr à échapper + - && || ! ( ) { } [ ] ^ " ~ * ? : \
.
Vous pouvez échapper ces caractères avec un \
avant le caractère. Par exemple (1+1):2
devient \(1\+1\)\:2
.
q=exemple
Exemple recherche du terme 'test' :
http://api.documentation-administrative.gouv.fr/search/?q=test&wt=xml
Si le nom du champ dans lequel chercher est omis, par défaut la recherche
porte sur l'index
text
qui contient les valeurs de plusieurs champs.
Ainsi :
http://api.documentation-administrative.gouv.fr/ref/anrproject/?q=asie&wt=xml
donne le même résultat que :
http://api.documentation-administrative.gouv.fr/ref/anrproject/?q=text:asie&wt=xml
Pour chercher dans un champ particulier la syntaxe est champ:terme
Recherche du terme 'japon' dans le champ title_t
http://api.documentation-administrative.gouv.fr/search/?q=title_t:japon&wt=xml
AND
Utiliser (terme1 terme2)
Recherche des termes 'japon' et 'france' dans le champ title_t
http://api.documentation-administrative.gouv.fr/search/?q=title_t:(japon france)&wt=xml
Utiliser (terme1 OR terme2)
Voir aussi la liste des opérateurs booléens
Recherche des termes 'japon' ou 'france' dans le champ title_t
http://api.documentation-administrative.gouv.fr/search/?q=title_t:(japon OR france)&wt=xml
Utiliser les guillemets doubles"terme1 terme2"
Recherche de la phrase 'Dictionnaire des idées reçues' dans le champ title_t
http://api.documentation-administrative.gouv.fr/search/?q=title_t:"Dictionnaire des idées reçues"&wt=xml
?
*
~
La syntaxe aluminum~
retourne des titres qui contiennent aluminum, Aluminium, alumimium, etc.
On peut préciser le nombre de permutations possibles avec un chiffre entre 0 et 2 (par défaut) : aluminum~1
api.documentation-administrative.gouv.fr/search/?q=title_t:aluminum~&wt=xml&fl=title_s
La syntaxe "aluminium fer"~3
cherche des titres qui contiennent aluminium et fer à une distance maximale de 3 termes :
api.documentation-administrative.gouv.fr/search/?q=title_t:"aluminium fer"~3&wt=xml&fl=title_s
Opérateur booléen | Symbole | Description |
---|---|---|
AND | && | Les termes de chaque côté de l'opérateur doivent être présents |
NOT | ! | Le terme suivant l'opérateur doit être absent |
OR | || | Au moins un des 2 termes de chaque côté de l'opérateur doit être présent |
+ | Le terme suivant l'opérateur doit être présent | |
- | Le terme suivant l'opérateur doit être absent |
Paris -France +Texas
Paris AND France AND history NOT (Texas AND history)
Journal AND (Histoire OR History)
JSON
Le format de réponse est spécifié par le paramètre
wt
Par exemple
wt=json
Les réponses peuvent être obtenues dans plusieurs formats :
Format | Paramètre | Description |
---|---|---|
JSON (format par défaut) | json | Réponse de Apache Solr au format JSON |
XML | xml | Réponse de Apache Solr au format XML |
XML-TEI | xml-tei | Réponse de l'API au format XML-TEI |
BibTeX | bibtex | Réponse de l'API au format BibTeX |
Endnote | endnote | Réponse de l'API au format de Endnote |
Flux RSS | rss | Réponse de l'API au format RSS |
Flux Atom | atom | Réponse de l'API au format Atom |
CSV | csv | Réponse de Apache Solr au format CSV (séparateur de champs ,
- valeurs séparées par
" )
|
indent=true
pour indenter le format de réponse.
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=atom
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=bibtex
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=csv
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=endnote
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=json
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=rss
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml-tei
Par défaut seuls les champs
docid
et
label_s
sont retournés dans une réponse. Cependant tous les champs stockés peuvent être retournés
dans le format de réponse.
Le paramètre pour choisir les champs à retourner est
fl
.
Les champs demandés doivent être séparés par le signe
,
On peut utiliser le caractère
*
comme troncature de nom de champ, eg
fl=cha*
fl
est disponible avec les formats de sortie :
fl=champ1_s,champ2_bool,champ3_t
Exemple pour ne retourner que le champ label_s :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fl=label_s
Par défaut, les résultats sont triés par pertinence. Le tri des résultats peut
se faire sur n'importe quel champ en évitant les champs de type
text (suffixe "_t")
et les champs multi-valués qui donneront des résultats imprévisibles.
Le paramètre pour choisir les champs à retourner est
sort
+ le sens de tri
asc
ou
desc
.
sort=champ_s asc
Exemple
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&sort=docid asc
Pour limiter les résultats retournés, il est possibles d'utiliser des filtres
Le paramètre pour ajouter des filtres est
fq
suivi de la requête servant au filtre.
fq=submitType_s:file
Exemple pour n'avoir que les dépôts avec fichiers :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=submitType_s:file
Exemple pour n'avoir que les dépôts de type THESE OU HDR :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&fq=docType_s:(THESE OR HDR)&wt=xml
On peut empiler les filtres, par exemple les dépôts du mois dernier, sans les notices
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=submittedDate_tdate:[NOW-1MONTHS/DAY TO NOW/HOUR]&fq=submitType_s:(-notice)&fl=label_s,submittedDate_tdate,submitType_s&sort=submittedDate_tdate asc
Il est possible de faire des requêtes sur des intervalles avec cette syntaxe champ:[valeurDébut TO valeurFin]
[2000 TO 2013]
[2000 TO *]
depuis 2000 jusqu'à la valeur maximale.[2000 TO 2013}
fq=city_s:[Aa TO Ab]
Les champs de type
_tdate
permettent des requêtes en faisant des calculs de dates, par exemple :
NOW-2YEARS TO NOW
correspond au critère Il y a 2 ans jusqu'à ajourd'huiNOW-1MONTHS TO NOW
correspond au critère Il y a 1 mois jusqu'à ajourd'huiNOW correspond par défaut à l'heure de la requête eg 2014-11-01T23:55:08Z exprimé en temps UTC
On peut arrondir le calcul avec
/DAY pour le début du jour
ou même
/HOUR pour le début de l'heure courante
Exemple de filtre pour les documents déposés ces 2 dernières années
fq=submittedDate_tdate:[NOW-1YEARS/DAY TO NOW/HOUR]
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=submittedDate_tdate:[NOW-1YEARS/DAY TO NOW/HOUR]&fl=label_s,submittedDate_tdate
NOW
peut être remplacé par une date
2024-11-01T00:00:00Z
Exemple pour des documents 1 an avant le 2024-11-01T00:00:00Z jusqu'à aujourd'hui
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=submittedDate_tdate:[2024-11-01T00:00:00Z-1YEARS/DAY TO NOW/DAY]&fl=label_s,submittedDate_tdate,submitType_s&sort=submittedDate_tdate asc
Exemple de syntaxe pour avoir les documents sans DOI
fq=-doiId_s:["" TO *]
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=-doiId_s:["" TO *]
Exemple de syntaxe pour avoir les documents avec un DOI
fq=doiId_s:["" TO *]
http://api.documentation-administrative.gouv.fr/search/?q=*:*&wt=xml&fq=doiId_s:["" TO *]&fl=label_s,doiId_s
Le nombre de réponses à retourner est définit par le paramètre
rows
.
Le nombre total de dépôt/notices ne change pas avec ce paramètres, seul le nombre de résultats effectivement retournés varie.
Par défaut les requêtes ne retournent que les 30 premiers résultats, le maximum
autorisé est 10000.
Si vous souhaitez
plus de résultats vous devez utiliser la pagination.
Le paramètre
&rows=0
peut permettre de ne retourner que le nombre de résultats et d'enlever les documents du corps de la
réponse. Vous pouvez par exemple utiliser ce paramètre à des fins de statistiques ou si vous voulez retourner uniquement des facettes.
Récupérer 100 résultats :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=100
Les résultats peuvent être paginés/décalés avec le paramètre
start
.
Pour décaler les résultats et commencer au résultat 50 :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&start=50&rows=50
Si vous devez parcourir plusieurs milliers de résultats, pour des raisons de performance il est fortement recommandé d'utiliser les curseurs
Spécifier le nombre de résultats à retourner avec le paramètre
&rows=
Ajouter un tri par clé unique à la requête, dans nos référentiels la clé unique est
docid
. Donc ajouter
&sort=docid asc
à votre requête.
À votre première requête, ajouter le paramètre
&cursorMark=*
pour demander à solr d'ajouter un curseur dans le résultat de votre requête.
Le résultat de la requête contiendra par exemple
"nextCursorMark":"AoFakgE="
Pour la requête suivante, ajouter
&cursorMark=AoFakgE=
où
AoFakgE=
est la valeur récupérée dans le résultat de la requête précédente.
Continuer ainsi en récupérant chaque paramètre
cursorMark
de la requête précédente.
Quand la valeur de
cursorMark
dans le résultat est la même que celle envoyée avec la requête il n'y a plus de résultats à
récupérer.
Plus d'information dans le guide de référence de Solr
Obtenir un premier cursorMark :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=10&sort=docid asc&cursorMark=*
Les facettes sont des listes de termes extraits en fonction d'une requête.
On peut les utiliser pour avoir une liste de valeurs distinctes sur un champ donné.
Pour générer des facettes, il faut ajouter le paramètre facet=true
à une requête.
Il faut ensuite ajouter les champs avec lesquel construire les facettes avec le paramètre facet.field=NomDuChamp
à une requête.
Plus d'information dans la documentation sur les facettes de Apache Solr
facet=true&facet.field=keyword_s
Exemple pour avoir une liste de mots-clés :
http://api.documentation-administrative.gouv.fr/search/?q=*%3A*&rows=0&wt=json&indent=true&facet=true&facet.field=keyword_s
Ajouter le paramètre
facet.sort=index
pour un tri lexicographique :
http://api.documentation-administrative.gouv.fr/search/?q=*%3A*&rows=0&wt=json&indent=true&facet=true&facet.field=keyword_s&facet.sort=index
Ajouter le paramètre
facet.sort=count
pour trier par nombre d'occurences :
http://api.documentation-administrative.gouv.fr/search/?q=*%3A*&rows=0&wt=json&indent=true&facet=true&facet.field=keyword_s&facet.sort=count
Ajouter le paramètre
facet.prefix=
pour retourner des facettes qui commencent par un préfixe :
http://api.documentation-administrative.gouv.fr/search/?q=*%3A*&rows=0&wt=json&indent=true&facet=true&facet.field=keyword_s&facet.prefix=A
Liste de mots clés pour des documents publiés en 2006, triée par nombre d'occurences :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&fq=producedDateY_i:2006&rows=0&wt=json&indent=true&facet=true&facet.field=keyword_s
On peut demander plusieurs facettes dans la même requête :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=0&wt=xml&indent=true&facet=true&facet.field=authFullName_s&facet.field=authIdHal_s&facet.limit=5
Vous pouvez limiter les facettes retournées à celles qui commencent par une chaine avec le paramètre : facet.prefix
Vous pouvez limiter les facettes retournées à celles contenant une chaine avec le paramètre : facet.contains
En plus de facet.contains
ajouter le paramètre : facet.contains.ignoreCase=true
pour ignorer la casse
Les champs qui ne sont pas multivalués peuvent permettre de faire un pivot sur une facette. Par
exemple une liste de types de documents, avec pour chaque type une liste de type de dépôts
associée
facet.pivot=docType_s,submitType_s
Tri par nombre de documents
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=0&wt=xml&indent=true&facet=true&facet.pivot=docType_s,submitType_s
Une liste d'années de dépôt, pour chaque année : une liste de types de documents, avec pour
chaque type une liste de type de dépôts associée
facet.pivot=submittedDateY_i,docType_s,submitType_s
Tri par nombre de documents
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=0&wt=xml&indent=true&facet=true&facet.pivot=submittedDateY_i,docType_s,submitType_s
Il est possible d'obtenir des facettes avec des plages de valeurs
Paramètre | Description |
---|---|
facet.range |
Le champ pour faire la facette. |
facet.range.start |
La valeur minimale, de début de la facette. |
facet.range.end |
La valeur maximale, de fin de la facette |
facet.range.gap |
Le pas à utiliser entre chaque plage |
http://api.documentation-administrative.gouv.fr/search/?q=*:*&rows=0&wt=xml&indent=true&facet=true&facet.range=submittedDateY_i&facet.range.start=1990&facet.range.end=2010&facet.range.gap=2
Donne le résultat ci-dessous, où de 1990 à 1992 on a 3296 dépôts, de 1992 à 1994 on a 3439 dépôts, etc.
<response> <result name="response" numFound="953150" start="0"></result> <lst name="facet_ranges"> <lst name="submittedDateY_i"> <lst name="counts"> <int name="1990">3296</int> <int name="1992">3439</int> <int name="1994">4187</int> <int name="1996">3742</int> <int name="1998">6641</int> <int name="2000">14433</int> <int name="2002">6527</int> <int name="2004">27913</int> <int name="2006">136634</int> <int name="2008">167039</int> </lst> <int name="gap">2</int> <int name="start">1990</int> <int name="end">2010</int> </lst> </lst> </lst> </response>
Vous pouvez obtenir vos résultats de requêtes groupés selon un critère de votre choix, à condition que le critère soit représenté par un champ non multivalué et de type string
Paramètre | Type | Description |
---|---|---|
group | Booléen | Si true les résultats seront groupés |
group.field | chaine | Le champ doit être de type string et ne doit pas être multivalué |
group.limit | entier | Le nombre de résultats dans chaque groupe (1 par défaut). |
group.sort | Tri | Le critère de tri à l'intérieur des groupes, par défaut score desc |
group.query | requête | Requête permettant de retourner un groupe de documents, répétable |
Les 20 premiers documents de la collection FRANCE-GRILLES, triés par date de publication descendante, groupés par type de dépôt :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&fq=collCode_s:FRANCE-GRILLES&group=true&group.field=submitType_s&indent=true&group.limit=20&wt=xml&sort=producedDate_tdate desc
Les 20 premiers documents de la collection FRANCE-GRILLES, triés par date de publication descendante, groupés par type de documents :
http://api.documentation-administrative.gouv.fr/search/?q=*:*&fq=collCode_s:FRANCE-GRILLES&group=true&group.field=docType_s&indent=true&group.limit=20&wt=xml&sort=producedDate_tdate desc