Uso de La API de búsqueda de Microsoft Graph para pasar varias solicitudes de búsqueda
Microsoft Search API permite incluir varias solicitudes de búsqueda en un único cuerpo de solicitud. Esta funcionalidad está disponible actualmente para OneDrive y SharePoint, así como para contenido externo ingerido e indexado por conectores de Microsoft Graph y tipos de recursos de respuesta, incluidos marcadores, acrónimos y Q&A.
Tipos de entidad admitidos
Los tipos de entidad admitidos para incluir varias solicitudes de búsqueda en un cuerpo de solicitud son: site, drive, driveItem, list,listItem,externalItem,bookmark,acronym y qna. Los tipos de entidad del mismo bloque de solicitudes deben cumplir las relaciones y combinaciones de tipo de entidad admitidas definidas en el tema de búsqueda intercalada .
Ejemplos
Ejemplo 1: Búsqueda con tipos de archivo de SharePoint y combinaciones de marcadores y acrónimos
Solicitud
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark", "acronym"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"listItem",
"site"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
Respuesta
A continuación se muestra una respuesta que busca con tipos de archivo de SharePoint y combinaciones de marcadores y acrónimos.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/beta/$metadata#search",
"value": [
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 1,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.search.acronym",
"id": "adce5789-c324-485a-a8bf-66bb809527ff",
"displayName": "POC",
"description": "Acronym in Spanish",
"webUrl": "",
"standsFor": "prueba de concepto"
}
},
{
"hitId": "1c0599db-2e89-4327-827a-3935c999f6cc",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.search.bookmark",
"id": "1c0599db-2e89-4327-827a-3935c999f6cc",
"displayName": "POC",
"description": "A proof of concept (POC) is an exercise in which work is focused on determining whether an idea can be turned into a reality. ",
"webUrl": "https://en.wikipedia.org/wiki/POC"
}
}
]
}
]
},
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 2,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 3,
"summary": "Test listItem 1",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Here is a summary of your messages from last week - New Feature: Live captions in English-US a POC"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 4,
"summary": "Test site",
"resource": {
"@odata.type": "#microsoft.graph.site",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test site summary POC"
}
}
]
}
]
}
]
}
Ejemplos de solicitudes incorrectas
En los ejemplos siguientes se muestran solicitudes que dan como resultado una respuesta de error de solicitud incorrecta. Para obtener más información sobre las limitaciones con las solicitudes de búsqueda, consulte [Limitaciones conocidas(#known-limitaciones).
Ejemplo 1: Búsqueda con los mismos tipos de entidad en bloques de solicitud independientes en el cuerpo de la solicitud
Solicitud
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"bookmark",
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
Respuesta
A continuación se muestra un ejemplo de una respuesta de solicitud incorrecta.
HTTP/1.1 200 OK
Content-type: application/json
{
"error": {
"code": "BadRequest",
"message": "SearchRequest Invalid (Entity types must not be duplicates in multiple entity requests)",
"target": "",
"details": [
{
"code": "Microsoft.SubstrateSearch.Api.ErrorReporting.ResourceBasedExceptions.BadRequestException",
"message": "Entity types must not be duplicates in multiple entity requests",
"target": "",
"httpCode": 400
}
],
"httpCode": 400
}
}
Ejemplo 2: Búsqueda con los tipos de entidad de archivo en bloques de solicitud independientes en el cuerpo de la solicitud
Solicitud
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"site"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
},
{
"entityTypes": [
"drive",
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
Respuesta
A continuación se muestra un ejemplo de una respuesta de solicitud incorrecta.
HTTP/1.1 200 OK
Content-type: application/json
{
"error": {
"code": "BadRequest",
"message": "SearchRequest Invalid (Entity types must not be duplicates in multiple entity requests)",
"target": "",
"details": [
{
"code": "Microsoft.SubstrateSearch.Api.ErrorReporting.ResourceBasedExceptions.BadRequestException",
"message": "File entity types can only appear in one entity request",
"target": "",
"httpCode": 400
}
],
"httpCode": 400
}
}
Limitaciones conocidas
- Los valores usados para las propiedades from y size en diferentes instancias searchRequest del cuerpo de la solicitud deben ser los mismos. El valor usado para la propiedad queryString en distintas instancias de searchQuery en distintas instancias de searchRequest debe ser el mismo.
- No se permiten tipos de entidad duplicados en diferentes solicitudes de búsqueda en el cuerpo de la solicitud. Por ejemplo, no puede tener una searchRequest de marcador y otra searchRequest de marcador en el cuerpo de una solicitud.
- Los tipos de entidad de archivo (site, drive, driveItem, list y listItem) solo pueden estar presentes en la misma solicitud de búsqueda de un cuerpo de solicitud. Por ejemplo, no puede incluir una entidad de sitio en una searchRequest y una entidad de unidad en una searchRequest diferente en el cuerpo de la solicitud.
- La funcionalidad del corrector ortográfico solo se puede usar una vez y debe incluirse en la primera searchRequest del cuerpo de la solicitud.