Différences entre versions de « Recherche en JSON »

De WIKI-BOKEH
Aller à : navigation, rechercher
(8 versions intermédiaires par 3 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
 +
<translate><!--T:1-->
 
Il est possible d'interroger le moteur de recherche de Bokeh et d'obtenir une réponse JSON avec pagination.
 
Il est possible d'interroger le moteur de recherche de Bokeh et d'obtenir une réponse JSON avec pagination.
  
== Requête ==
+
== Requête == <!--T:2-->
  
=== Minimale ===
+
=== Minimale === <!--T:3-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json</pre>
 
Renvoie en JSON un résultat correspondant à tout le catalogue.<br />
 
Renvoie en JSON un résultat correspondant à tout le catalogue.<br />
 
À partir de cette requête tous les autres critères peuvent être ajoutés et combinés.
 
À partir de cette requête tous les autres critères peuvent être ajoutés et combinés.
  
=== Critères supplémentaires ===
+
=== Critères supplémentaires === <!--T:4-->
  
 +
<!--T:5-->
 
Cette liste non exhaustive est tirée du model [http://git.afi-sa.fr/afi/opacce/blob/master/library/Class/CriteresRecherche.php Class_CriteresRecherche].
 
Cette liste non exhaustive est tirée du model [http://git.afi-sa.fr/afi/opacce/blob/master/library/Class/CriteresRecherche.php Class_CriteresRecherche].
  
==== expressionRecherche ====
+
==== expressionRecherche ==== <!--T:6-->
  
 +
<!--T:7-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]</pre>
 
Filtre les résultats par les termes saisis sur les axes titres, auteurs, éditeurs, collections, matières et dewey.<br />
 
Filtre les résultats par les termes saisis sur les axes titres, auteurs, éditeurs, collections, matières et dewey.<br />
Ligne 20 : Ligne 23 :
 
<pre>(pertinence des termes dans le titre * 1.5) + (pertinence des termes dans les auteurs)</pre>
 
<pre>(pertinence des termes dans le titre * 1.5) + (pertinence des termes dans les auteurs)</pre>
  
==== no_extension ====
+
==== no_extension ==== <!--T:8-->
  
 +
<!--T:9-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]/no_extension/1</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]/no_extension/1</pre>
 
Permet de désactiver le comportement d'élargissement automatique de la recherche en mode OU.<br />
 
Permet de désactiver le comportement d'élargissement automatique de la recherche en mode OU.<br />
 
Ce critère n'a donc de sens que dans une requête ayant aussi le critère expressionRecherche contenant plus d'un terme.
 
Ce critère n'a donc de sens que dans une requête ayant aussi le critère expressionRecherche contenant plus d'un terme.
  
==== type_doc ====
+
==== type_doc ==== <!--T:10-->
  
 +
<!--T:11-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/type_doc/[identifiant]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/type_doc/[identifiant]</pre>
 
Filter les résultats par le type de document spécifié.<br />
 
Filter les résultats par le type de document spécifié.<br />
 
La liste par défaut des identifiants est disponible dans le model [http://git.afi-sa.fr/afi/opacce/blob/master/library/Class/TypeDoc.php#L187 Class_TypeDoc]
 
La liste par défaut des identifiants est disponible dans le model [http://git.afi-sa.fr/afi/opacce/blob/master/library/Class/TypeDoc.php#L187 Class_TypeDoc]
  
==== nouveaute ====
+
==== nouveaute ==== <!--T:12-->
  
 +
<!--T:13-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/nouveaute/[nombre de mois]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/nouveaute/[nombre de mois]</pre>
 
Filtre les résultats sur les notices dont la date de fin de nouveauté est supérieur à aujourd'hui moins [nombre de mois].
 
Filtre les résultats sur les notices dont la date de fin de nouveauté est supérieur à aujourd'hui moins [nombre de mois].
  
==== annee_debut, annee_fin ====
+
==== annee_debut, annee_fin ==== <!--T:14-->
  
 +
<!--T:15-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/annee_debut/[debut]/annee_fin/[fin]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/annee_debut/[debut]/annee_fin/[fin]</pre>
 
Filtre les résultats par l'année d'édition comprise entre [debut] et [fin].<br />
 
Filtre les résultats par l'année d'édition comprise entre [debut] et [fin].<br />
 
Si une des années est passée vide, le filtre se transforme soit en à partir si l'annee_debut est donnée, soit en jusqu'à si l'annee_fin est donné.
 
Si une des années est passée vide, le filtre se transforme soit en à partir si l'annee_debut est donnée, soit en jusqu'à si l'annee_fin est donné.
  
==== tri ====
+
==== tri ==== <!--T:16-->
  
 +
<!--T:17-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/tri/[tri]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/tri/[tri]</pre>
 
Permet de gérer l'ordre des résultats par défaut par pertinence, sinon par la valeur spécifiée dans [tri] parmi:
 
Permet de gérer l'ordre des résultats par défaut par pertinence, sinon par la valeur spécifiée dans [tri] parmi:
Ligne 54 : Ligne 62 :
 
* nb_visu desc : Consultation
 
* nb_visu desc : Consultation
  
==== page ====
+
==== page ==== <!--T:18-->
  
 +
<!--T:19-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page/[numéro de page]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page/[numéro de page]</pre>
 
Permet d'accéder à une page de résultat, par défaut la première page est renvoyée.
 
Permet d'accéder à une page de résultat, par défaut la première page est renvoyée.
  
==== page_size ====
+
==== page_size ==== <!--T:20-->
  
 +
<!--T:21-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page_size/[nombre d'éléments par page]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page_size/[nombre d'éléments par page]</pre>
 
Permet de spécifier le nombre d'éléments renvoyés par page. Si non-spécifié, prend la taille de page paramétrée dans Bokeh. Taille maximale limitée à 50.
 
Permet de spécifier le nombre d'éléments renvoyés par page. Si non-spécifié, prend la taille de page paramétrée dans Bokeh. Taille maximale limitée à 50.
  
==== digital_lib ====
+
==== digital_lib ==== <!--T:22-->
  
 +
<!--T:23-->
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/digital_lib/[1]</pre>
 
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/digital_lib/[1]</pre>
 
Permet de filtrer le résultat sur les notices ayant un type document de la bibliothèque numérique.
 
Permet de filtrer le résultat sur les notices ayant un type document de la bibliothèque numérique.
  
== Réponse ==
+
==== from ====
 +
<pre>[http://adresse.de.mon.bokeh]/recherche/simple/format/json/from/[aaaa-mm-jj]</pre>
 +
Permet de filtrer le résultat sur les notices ayant une date de mise à jour supérieur au paramètre *from*.
  
 +
== Réponse == <!--T:24-->
 +
 +
<!--T:25-->
 
La réponse est composée d'un entête et d'une liste de notices.
 
La réponse est composée d'un entête et d'une liste de notices.
  
 +
<!--T:26-->
 
<pre>
 
<pre>
 
{
 
{
Ligne 83 : Ligne 100 :
 
</pre>
 
</pre>
  
=== Entête ===
+
=== Entête === <!--T:27-->
  
 +
<!--T:28-->
 
* url : rappel de l'url ayant servi à obtenir le résultat
 
* url : rappel de l'url ayant servi à obtenir le résultat
 
* total : nombre total de résultats
 
* total : nombre total de résultats
Ligne 91 : Ligne 109 :
 
* records : liste des notices de la page courante
 
* records : liste des notices de la page courante
  
=== Notice ===
+
=== Notice === <!--T:29-->
 +
 
 +
Vous pouvez demander une notice au format JSON directement à l'adresse :
 +
 
 +
<pre>[http://adresse.de.mon.bokeh]/recherche/viewnotice/format/json/id/xx/clef/xxxx-xxxx</pre>
 +
 
 
Le format s'inspire de dublin-core en ajoutant des champs.
 
Le format s'inspire de dublin-core en ajoutant des champs.
  
 +
<!--T:30-->
 
<pre>
 
<pre>
 
{
 
{
Ligne 109 : Ligne 133 :
 
   "description": "Le jour de ses onze ans, Harry Potter, un orphelin élevé par un oncle ...",
 
   "description": "Le jour de ses onze ans, Harry Potter, un orphelin élevé par un oncle ...",
 
   "collections": ["Folio junior"],
 
   "collections": ["Folio junior"],
   "classifications": [...]
+
   "classifications": [...],
 +
  "items": [...],
 +
  "relations": [...]
 
}
 
}
 
</pre>
 
</pre>
  
 +
<!--T:31-->
 
* identifier : clef alpha interne Bokeh
 
* identifier : clef alpha interne Bokeh
 
* permalink : url d'accès à la notice
 
* permalink : url d'accès à la notice
Ligne 120 : Ligne 147 :
 
* date : année d'édition
 
* date : année d'édition
  
==== Classification ====
+
==== Classification ==== <!--T:32-->
  
 +
<!--T:33-->
 
Les classifications rattachées à une notice sont regroupées par type de classification.
 
Les classifications rattachées à une notice sont regroupées par type de classification.
  
 +
<!--T:34-->
 
<pre>
 
<pre>
 
{
 
{
Ligne 132 : Ligne 161 :
 
}
 
}
 
</pre>
 
</pre>
 +
</translate>
 +
 +
==== Items ====
 +
 +
Les exemplaires rattachés à une notice sont regroupés dans le champs *items*
 +
<pre>
 +
{
 +
"id" : "identifiant unique",
 +
"id_notice" : "identifiant unique de la notice parente",
 +
"id_bib" : "identifiant unique de la biliothèque parente",
 +
"code_barres" : "code barre",
 +
"cote" : "cote",
 +
"genre" : "genre",
 +
"documentaire" : "documentaire",
 +
"section" : "section",
 +
"activite" : "activité",
 +
"emplacement" : "emplacement",
 +
"annexe" : "annexe",
 +
"date_nouveaute" : "date_nouveaute",
 +
"zone995" : [],
 +
"id_origine" : "identifiant unique d'origine externe"
 +
"id_int_bib" : "identifiant unique de l'import"
 +
"is_available" : "flag de disponibilité"
 +
"url" : "url de l'exemplaire"
 +
}
 +
</pre>
 +
 +
==== zone995 ====
 +
La zone 995 se trouve dans le tableau de l'exemplaire. Elle est composé de plusieurs tableaux.
 +
<pre>
 +
{
 +
"code" : "a",
 +
"valeur" : "a"
 +
}
 +
</pre>
 +
 +
===== zone995 exemplaire PNB Dilicom =====
 +
<pre>
 +
{"code": "a", "valeur": "libelle de la biliotheque"},
 +
{"code": "c", "valeur": "date de la commande"},
 +
{"code": "f", "valeur": "identifiant unique de l'exemplaire"},
 +
{"code": "n", "valeur": "identifiant unique de la transaction"},
 +
{"code": "v", "valeur": "activité de l'exemplaire"}
 +
</pre>
 +
==== relations ====
 +
 +
Les relations de la notice avec d'autres entités sons regroupées dans la collection "relations".
 +
 +
Elles sont regroupées par type de relation:
 +
<pre>
 +
{"id": "identifiant unique",
 +
  "label": "Libellé du type de relation",
 +
  "from_source": "Libellé de la relation du point de vue de l'entité source",
 +
  "from_target": "Libellé de la relation du point de vue de l'entité destination",
 +
  "entries": [...]
 +
}
 +
</pre>
 +
 +
Imaginons un type de relation "Imprimé / Numérique", les libellés de relations pourraient être "A pour version numérique" et "A pour version imprimée".
 +
 +
Chaque relation dans la collection "entries" se compose ainsi:
 +
<pre>
 +
{"id": "identifiant unique",
 +
  "type_id": "identifiant unique du type",
 +
  "source": "URI de la source",
 +
  "target": "URI de la destination",
 +
  "source_type": "type d'entité source détecté par Bokeh",
 +
  "target_type":"type d'entité destination détecté par Bokeh",
 +
  "source_key": "identifiant de l'entité source si type connu par Bokeh",
 +
  "target_key":"identifiant de l'entité destination si type connu par Bokeh"}
 +
</pre>
 +
 +
Les champs '''..._type''' peuvent avoir une valeur parmi
 +
* afi:notice : l'URI est un permalien de notice Bokeh
 +
* afi:album : l'URI est un permalien d'album de la bibliothèque numérique Bokeh
 +
* afi:external : l'URI n'est pas reconnue
 +
  
 
[[Catégorie:Développement]]
 
[[Catégorie:Développement]]

Version du 15 novembre 2018 à 15:16

<translate> Il est possible d'interroger le moteur de recherche de Bokeh et d'obtenir une réponse JSON avec pagination.

Requête[ ]

Minimale[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json

Renvoie en JSON un résultat correspondant à tout le catalogue.
À partir de cette requête tous les autres critères peuvent être ajoutés et combinés.

Critères supplémentaires[ ]

Cette liste non exhaustive est tirée du model Class_CriteresRecherche.

expressionRecherche[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]

Filtre les résultats par les termes saisis sur les axes titres, auteurs, éditeurs, collections, matières et dewey.
Tout d'abord en requérant la présence de tous les termes (mode ET), puis si aucun résultat n'est trouvé en requérant la présence d'au moins un terme (mode OU).
Les résultats sont triés par pertinence calculée suivant la formule:

(pertinence des termes dans le titre * 1.5) + (pertinence des termes dans les auteurs)

no_extension[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/expressionRecherche/[termes de la recherche]/no_extension/1

Permet de désactiver le comportement d'élargissement automatique de la recherche en mode OU.
Ce critère n'a donc de sens que dans une requête ayant aussi le critère expressionRecherche contenant plus d'un terme.

type_doc[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/type_doc/[identifiant]

Filter les résultats par le type de document spécifié.
La liste par défaut des identifiants est disponible dans le model Class_TypeDoc

nouveaute[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/nouveaute/[nombre de mois]

Filtre les résultats sur les notices dont la date de fin de nouveauté est supérieur à aujourd'hui moins [nombre de mois].

annee_debut, annee_fin[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/annee_debut/[debut]/annee_fin/[fin]

Filtre les résultats par l'année d'édition comprise entre [debut] et [fin].
Si une des années est passée vide, le filtre se transforme soit en à partir si l'annee_debut est donnée, soit en jusqu'à si l'annee_fin est donné.

tri[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/tri/[tri]

Permet de gérer l'ordre des résultats par défaut par pertinence, sinon par la valeur spécifiée dans [tri] parmi:

  • * : Pertinence (par défaut)
  • alpha_titre : Titre
  • annee desc : Année de publication
  • type_doc,alpha_titre : Type de document
  • date_creation desc : Date de nouveauté
  • nb_visu desc : Consultation

page[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page/[numéro de page]

Permet d'accéder à une page de résultat, par défaut la première page est renvoyée.

page_size[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/page_size/[nombre d'éléments par page]

Permet de spécifier le nombre d'éléments renvoyés par page. Si non-spécifié, prend la taille de page paramétrée dans Bokeh. Taille maximale limitée à 50.

digital_lib[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/digital_lib/[1]

Permet de filtrer le résultat sur les notices ayant un type document de la bibliothèque numérique.

from[ ]

[http://adresse.de.mon.bokeh]/recherche/simple/format/json/from/[aaaa-mm-jj]

Permet de filtrer le résultat sur les notices ayant une date de mise à jour supérieur au paramètre *from*.

Réponse[ ]

La réponse est composée d'un entête et d'une liste de notices.

{
  "url": "http://bokeh.pas.net/recherche/simple/format/json",
  "total": 3,
  "page_size": 10,
  "page": 1,
  "records": [...]
}

Entête[ ]

  • url : rappel de l'url ayant servi à obtenir le résultat
  • total : nombre total de résultats
  • page_size : maximum de notices par page
  • page : page courante de résultat
  • records : liste des notices de la page courante

Notice[ ]

Vous pouvez demander une notice au format JSON directement à l'adresse :

[http://adresse.de.mon.bokeh]/recherche/viewnotice/format/json/id/xx/clef/xxxx-xxxx

Le format s'inspire de dublin-core en ajoutant des champs.

{
  "identifier": "HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1",
  "permalink": "http://[adresse.de.mon.bokeh]/recherche/viewnotice/clef/HARRYPOTTERALECOLEDESSORCIERS--ROWLINGJ-1-GALLIMARDJEUNESSE-2011-1/id/234",
  "type": {"code": 1, "label": "livre"},
  "titles": ["Harry Potter", "Harry Potter à l'école des sorciers"],
  "serial": "Harry Potter",
  "thumbnail" : "http://www.gallimard.fr/var/storage/images/product/4ea/product_9782070612369_195x320.jpg",
  "creators": ["Joanne Kathleen Rowling"],
  "publishers": ["Gallimard-Jeunesse"],
  "date": 2011,
  "volume": 1,
  "language": "fre",
  "description": "Le jour de ses onze ans, Harry Potter, un orphelin élevé par un oncle ...",
  "collections": ["Folio junior"],
  "classifications": [...],
  "items": [...],
  "relations": [...]
}
  • identifier : clef alpha interne Bokeh
  • permalink : url d'accès à la notice
  • type : type de document, voir le model Class_TypeDoc
  • titles : liste des titres, titre principale en premier
  • creators : liste des auteurs, auteur principal en premier
  • date : année d'édition

Classification[ ]

Les classifications rattachées à une notice sont regroupées par type de classification.

{
  "type": "genre",
  "label": "Genre",
  "entries": [ {"code": "G10", "label": "Roman jeunesse"}, 
               {"code": "G67", "label": "Aventure"} ],
}

</translate>

Items[ ]

Les exemplaires rattachés à une notice sont regroupés dans le champs *items*

{
 "id" : "identifiant unique",
 "id_notice" : "identifiant unique de la notice parente",
 "id_bib" : "identifiant unique de la biliothèque parente",
 "code_barres" : "code barre",
 "cote" : "cote",
 "genre" : "genre",
 "documentaire" : "documentaire",
 "section" : "section",
 "activite" : "activité",
 "emplacement" : "emplacement",
 "annexe" : "annexe",
 "date_nouveaute" : "date_nouveaute",
 "zone995" : [],
 "id_origine" : "identifiant unique d'origine externe"
 "id_int_bib" : "identifiant unique de l'import"
 "is_available" : "flag de disponibilité"
 "url" : "url de l'exemplaire"
}

zone995[ ]

La zone 995 se trouve dans le tableau de l'exemplaire. Elle est composé de plusieurs tableaux.

{
"code" : "a",
"valeur" : "a"
}
zone995 exemplaire PNB Dilicom[ ]
{"code": "a", "valeur": "libelle de la biliotheque"},
{"code": "c", "valeur": "date de la commande"},
{"code": "f", "valeur": "identifiant unique de l'exemplaire"},
{"code": "n", "valeur": "identifiant unique de la transaction"},
{"code": "v", "valeur": "activité de l'exemplaire"}

relations[ ]

Les relations de la notice avec d'autres entités sons regroupées dans la collection "relations".

Elles sont regroupées par type de relation:

{"id": "identifiant unique",
  "label": "Libellé du type de relation",
  "from_source": "Libellé de la relation du point de vue de l'entité source",
  "from_target": "Libellé de la relation du point de vue de l'entité destination",
  "entries": [...]
}

Imaginons un type de relation "Imprimé / Numérique", les libellés de relations pourraient être "A pour version numérique" et "A pour version imprimée".

Chaque relation dans la collection "entries" se compose ainsi:

{"id": "identifiant unique",
  "type_id": "identifiant unique du type",
  "source": "URI de la source",
  "target": "URI de la destination",
  "source_type": "type d'entité source détecté par Bokeh",
  "target_type":"type d'entité destination détecté par Bokeh",
  "source_key": "identifiant de l'entité source si type connu par Bokeh",
  "target_key":"identifiant de l'entité destination si type connu par Bokeh"}

Les champs ..._type peuvent avoir une valeur parmi

  • afi:notice : l'URI est un permalien de notice Bokeh
  • afi:album : l'URI est un permalien d'album de la bibliothèque numérique Bokeh
  • afi:external : l'URI n'est pas reconnue