Recherche¶
Il est possible re rechercher des contenus dans GEVER à l’aide de l’Endpoint /@search
:
GET /plone/@search HTTP/1.1
Accept: application/json
Par défaut, une recherche est contextuelle, ce qui veut dire que seuls les contenus de la ressource sur laquelle @search
a été exécuté seront parcourus. Si @search
est par exemple exécuté sur un dossier, la recherche couvrira tous les objets qui se trouvent dans ce dossier (y compris l’objet lui-même).
Si /@search
est exécuté à la racine du client GEVER, la recherche sera globale, puisque tous les objets se trouvent directement ou indirectement sous celle-ci.
Les résultats de recherche sont affichés au même format que les contenus dans des objets de type dossier:
HTTP/1.1 200 OK
Content-Type: application/json
{
"@id": "http://example.org/ordnungssystem/fuehrung/gemeinderecht/@search",
"items": [
{
"@id": "http://example.org/ordnungssystem/fuehrung/gemeinderecht",
"@type": "opengever.repository.repositoryfolder",
"description": "",
"title": "0.0. Gemeinderecht"
},
{
"@id": "http://example.org/ordnungssystem/fuehrung/gemeinderecht/dossier-15",
"@type": "opengever.dossier.businesscasedossier",
"description": "",
"title": "Ein Geschäftsdossier"
}
],
"items_total": 2
}
La représentation standard d’un résultat de recherche est un bref résumé des propriétés les plus importantes de l’objet. Pour retourner des attributs additionnels provenant du catalogue de recherche, il faut utiliser le paramètre metadata_fields
décrit plus bas.
Note
Les résultats de recherche sont paginés lorsque le nombre de résultats dépasse la taille de page prévue (25 par défaut). Pour plus de détails concernant la gestion de résultats paginés, voir Pagination.
Format de requête¶
Les requêtes (queries) et options de recherche sont transmis à la request en tant que paramètres strings de requête, par l’intermédiaire de /@search
:
GET /plone/@search?SearchableText=lorem HTTP/1.1
SearchableText
fait référence au soi-disant index. Un index est une structure de données maintenant une liste d’informations concernant les objets optimisé pour la recherche. Pour pouvoir chercher sur une propriété ou un attribut d’objet spécifique, un index qui y est spécifique doit exister.
L’index SearchableText
est l’un des index le plus utilisés et est conçu pour la recherche plein-texte. Cet index contient donc une liste de tous les termes par lesquels l’objet doit être trouvable via la recherche plein-texte:
Titre et description, métadonnées GEVER importantes tel que les Numéros de classement et de dossiers, et pour les documents, le contenu textuel extrait de chaque fichier.
Autres index utilisés couramment:
Index | Description |
---|---|
Title |
Titre |
Description |
Description |
path |
Chemin (p.ex. /fd/plandeclassment/general/dossier-27 ) |
portal_type |
Type de l’objet, voir Types d’objets |
reference |
No de classement (p.ex. FD 0.0.0 / 1 / 39 ) |
modified |
Date/heure de la dernière modification |
Une requête de recherche complexe peut être composée à partir d’une combinaison de filtres sur plusieurs indexes. Par exemple, pour ne rechercher que des documents contenant le terme “décision”, la requête suivante peut être utilisée:
GET /plone/@search?SearchableText=décision&portal_type=opengever.document.document HTTP/1.1
Métadonnées Additionnelles¶
Par défaut, les résultats de recherche sont présentés comme un bref résumé des propriétés les plus importantes de l’objet.
Pour inclure des métadonnées additionnelles directement dans les résultats de recherche, celles-ci peuvent être demandées par l’intermédliaire de l’option metadata_fields
:
GET /plone/@search?SearchableText=lorem&metadata_fields=modified HTTP/1.1
Pour représenter directement toutes les données disponibles dans le catalogue de recherche, il est possibe d’utiliser metadata_fields=_all
.
Note
L’utilisation du paramètre metadata_fields
implique une familiarité avec les noms d’index internes et devrait être utilisé après consultation de 4teamwork. Pour la liste succincte pour l’utilisation de GET requests, il existe un mécanisme séparé.
Il existe également les paramètres preview_image_url
et preview_pdf_url
, qui ne représentent pas réellement des métadonnées
Recherche Solr¶
L’Endpoint @solrsearch
est à disposition pour soumettre directement une recherche au service Solr. pour la requête, il faut la syntaxe de l’API SOLR et ses paramètres. L’Endpoint retourne une liste des résultats avec les champs définis par le paramètre fl
. Les paramètres suivants sont actuellement supportés par l’Endpoint:
Query¶
q
: Expression recherchée
Exemple pour la recherche de “Court”:
GET /plone/@solrsearch?q=Court HTTP/1.1
L’expression de recherche peut également être soumise en syntaxe Solr Query avec le paramètre q.raw
.
Exemple pour la recherche de “Court” Dans le champ “Title”:
GET /plone/@solrsearch?q.raw=Title:Court HTTP/1.1
Filters¶
fq
: Filtrer selon une valeur spécifique du champ.
Exemple d’une recherche filtrés selon portal_type uniquement sur les documents et dossiers.
GET /plone/@solrsearch?fq=portal_type:(opengever.document.document%20OR%20opengever.dossier.businesscasedossier) HTTP/1.1
Fields¶
fl
: Liste des champs qui doivent être retournées. Par défaut, les champs @id
, @type
, title
, description
et review_state
sont retournés.
Exemple pour une recherche retournant UID, Title et numéro de séquence
GET /plone/@solrsearch?q=Court&fl=UID,Title,sequence_number HTTP/1.1
Autres paramètres optionnels:
start
: Le premier élément à retournerrows
: Le nombre maximal d’éléments à retournersort
: Tri selon un champ indexé
Facettes¶
facet
: Doit être défini en tant que true
pour que Solr retourne les facettes.
facet.field
: Champ pour lequel Solr doit retourner des facettes.
Exemple pour une recherche avec des facettes pour responsible
et portal_type
:
GET /plone/@solrsearch?facet=true&facet.field=portal_type&facet.field=responsible HTTP/1.1HTTP/1.1 200 OK Content-Type: application/json { "@id": "/plone/@solrsearch?facet=true&facet.field=portal_type&facet.field=responsible", "facet_counts": { "portal_type": { "opengever.document.document": { "count": 2 } }, "responsible": { "committee:161": { "count": 2, "label": "Commission juridique" }, "hugo.boss": { "count": 1, "label": "Hugo Boss" } } }, "items": [ { "@id": "/plone/ordnungssystem/direction/dossier-23/document-59", "filesize": 12303, "modified": "2019-03-11T13:50:14+00:00", "title": "Une Lettre" }, { "@id": "/plone/ordnungssystem/direction/dossier-23/document-54", "filesize": 8574, "modified": "2019-03-11T12:32:24+00:00", "title": "Un Dossier" } ], "items_total": 2, "rows": 25, "start": 0 }