Uso de la API de Microsoft Búsqueda para buscar con resultados intercalados
El recurso searchRequest de Microsoft Búsqueda admite el paso de varios tipos de entidad en una sola solicitud y devuelve resultados intercalados con los tipos de entidad solicitados clasificados por relevancia.
Combinaciones de entidades admitidas
En la tabla siguiente se muestra la relación entre los distintos tipos de entidad que se pueden intercalar. El tipo de entidad qna solo se admite en beta.
Tipo de entidad | acrónimo | marcador | mensaje | chatMessage | drive | driveItem | evento | externalItem | lista | listItem | Persona | Qna | sitio |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
acrónimo | True | True | - | - | - | - | - | - | - | - | - | True | - |
marcador | True | True | - | - | - | - | - | - | - | - | - | True | - |
mensaje | - | - | True | True | - | - | - | - | - | - | - | - | - |
chatMessage | - | - | True | True | - | - | - | - | - | - | - | - | - |
drive | - | - | - | - | True | True | - | True | True | True | - | - | True |
driveItem | - | - | - | - | True | True | - | True | True | True | - | - | True |
evento | - | - | - | - | - | - | Verdadero | - | - | - | - | - | - |
externalItem | - | - | - | - | True | True | - | True | True | True | - | - | True |
lista | - | - | - | - | True | True | - | True | True | True | - | - | True |
listItem | - | - | - | - | True | True | - | True | True | True | - | - | True |
Persona | - | - | - | - | - | - | - | - | - | - | Verdadero | - | - |
Qna | True | True | - | - | - | - | - | - | - | - | - | True | - |
sitio | - | - | - | - | True | True | - | True | True | True | - | - | True |
Ejemplos
Ejemplo 1: Búsqueda con tipos de archivo de SharePoint y combinación de todos los conectores
En el ejemplo siguiente se muestra una solicitud que busca con tipos de archivo de SharePoint y toda la combinación de conectores.
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem",
"site",
"externalItem"
],
"query": {
"queryString": "contoso"
},
"contentSources": [
"/external/connections/*"
],
"from": 0,
"size": 25
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta intercalada.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 4,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"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"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 2,
"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"
}
},
{
"hitId": "ad60906b-1317-495c-b566-7b8ce1be5555",
"rank": 4,
"summary": "Test listItem 2",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test listItem summary 2"
}
}
]
}
]
}
]
}
Ejemplo 2: Búsqueda con tipos de archivo de SharePoint y combinación específica del conector
En el ejemplo siguiente se muestra una solicitud que busca con tipos de archivo de SharePoint y una combinación específica de conectores.
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem",
"site",
"externalItem"
],
"query": {
"queryString": "contoso"
},
"contentSources": [
"/external/connections/MicrosoftPowerBI",
"/external/connections/Learning"
],
"from": 0,
"size": 25
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta intercalada.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"contoso"
],
"hitsContainers": [
{
"total": 5,
"moreResultsAvailable": false,
"hits": [
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff",
"rank": 1,
"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"
}
},
{
"hitId": "microsoft.sharepoint.com,9fb3f597-167e-4c3d-b5e6-1ddc18d22d48,c53cd46e-9033-4b42-af94-0ad76ab75fd0",
"rank": 2,
"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"
}
},
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff=",
"rank": 3,
"summary": "Test externalItem",
"contentSource": "MicrosoftPowerBI",
"resource": {
"@odata.type": "#microsoft.graph.externalConnectors.externalItem",
"title": "Test externalItem summary",
}
},
{
"hitId": "adce5789-c324-485a-a8bf-66bb809527ff=",
"rank": 4,
"summary": "Learning externalItem",
"contentSource": "Learning",
"resource": {
"@odata.type": "#microsoft.graph.externalConnectors.externalItem",
"title": "Test externalItem summary",
}
},
{
"hitId": "ad60906b-1317-495c-b566-7b8ce1be5555",
"rank": 5,
"summary": "Test listItem 2",
"resource": {
"@odata.type": "#microsoft.graph.listItem",
"createdDateTime": "2019-10-07T10:00:08Z",
"lastModifiedDateTime": "2019-10-07T10:00:11Z",
"title": "Test listItem summary 2"
}
}
]
}
]
}
]
}
Ejemplo 3: Búsqueda con combinación de marcador y acrónimo
En el ejemplo siguiente se muestra una solicitud que busca con marcador y acrónimo como tipos de entidad.
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"bookmark",
"acronym"
],
"query": {
"queryString": "POC"
},
"from": 0,
"size": 25
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta intercalada para marcador y acrónimo.
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#search",
"value": [
{
"searchTerms": [
"POC"
],
"hitsContainers": [
{
"total": 2,
"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"
}
}
]
}
]
}
]
}
Ejemplo 4: Intercalar contenido de Teams y Outlook
En el ejemplo siguiente se muestra cómo intercalar el mensaje de chat de Teams y el contenido del mensaje de Outlook.
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/v1.0/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"chatMessage",
"message"
],
"query": {
"queryString": "*"
},
"from": 0,
"size": 5
}
]
}
Respuesta
En el ejemplo siguiente se muestra la respuesta intercalada.
HTTP/1.1 200 OK
Content-type: application/json
{
"value": [
{
"searchTerms": [],
"hitsContainers": [
{
"hits": [
{
"hitId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA/PUmjl3OgEumTcnPoOXsegAAAgFYAAAA/PUmjl3OgEumTcnPoOXsegABBugTfgAAAA==",
"rank": 1,
"summary": "hi",
"resource": {
"@odata.type": "microsoft.graph.chatMessage",
"id": "1657786709667",
"createdDateTime": "2022-07-14T08:18:30Z",
"lastModifiedDateTime": "2022-07-14T08:19:07Z",
"subject": "",
"importance": "normal",
"webLink": "https://teams.microsoft.com/l/message/19%3a8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578%40unq.gbl.spaces/1657786709667?context=%7B%22contextType%22:%22chat%22%7D",
"from": {
"emailAddress": {
"name": "Tong Zheng",
"address": "Tong.Zheng@microsoft.com"
}
},
"channelIdentity": {
"channelId": "19:8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578@unq.gbl.spaces"
},
"etag": "1657786709667",
"chatId": "19:8b00f92f-63ba-4ad7-822e-862219ba93b3_ba9f3156-32ae-4308-bd33-64a92319b578@unq.gbl.spaces"
}
},
{
"hitId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA-PUmjl3OgEumTcnPoOXsegAAAgEBAAAAAPz1Jo5dzoBLpk3Jz6Dl7HoAAAIJWgAAAA==",
"rank": 2,
"summary": "",
"resource": {
"@odata.type": "#microsoft.graph.message",
"createdDateTime": "2021-06-11T23:17:11Z",
"lastModifiedDateTime": "2021-06-12T02:58:00Z",
"receivedDateTime": "2021-06-11T23:17:11Z",
"sentDateTime": "2021-06-11T23:17:11Z",
"hasAttachments": false,
"internetMessageId": "<DM5PR00MB0406C60478A4456D6B0F83F8D4349@DM5PR00MB0406.namprd00.prod.outlook.com>",
"bodyPreview": "",
"importance": "normal",
"parentFolderId": "AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgAuAAAD7MLXbKjTeUeUiM62OAqxBAEA-PUmjl3OgEumTcnPoOXsegAAAgEBAAAAAA==",
"conversationId": "AAQkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgAQANQdjNmPALIE6YAJmOz4Qn4=",
"isRead": true,
"isDraft": true,
"webLink": "https://outlook.office365.com/owa/?ItemID=AQMkAGNhZjFkYzQ3LTc2MDYtNGZiMS04ZGE3LTQ2MjUyZmRlMzA0NgBGAAAD7MLXbKjTeUeUiM62OAqxBAcA%2FPUmjl3OgEumTcnPoOXsegAAAgEBAAAAAPz1Jo5dzoBLpk3Jz6Dl7HoAAAIJWgAAAA%3D%3D&exvsurl=1&viewmodel=ReadMessageItem",
"inferenceClassification": "focused"
}
}
],
"total": 2,
"moreResultsAvailable": false
}
]
}
],
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#Collection(microsoft.graph.searchResponse)"
}
Limitaciones conocidas
- La ordenación personalizada no se admite en escenarios de intercalación, todos los elementos se ordenan por relevancia.
- QueryTemplate solo se admite para los elementos de archivo de una consulta intercalada. Los resultados de elementos externos no se filtran en la respuesta. No se recomienda usar queryTemplate para intercalar solicitudes.
- No se admite el contraer.
- No se admite la modificación del corrector ortográfico. Solo se admiten sugerencias de corrector ortográfico.
- No se admite la plantilla de resultados.
- Las limitaciones de agregación se producen si el campo agregado existe en varios tipos de archivo de SharePoint (sitio, unidad, driveItem, lista, listItem) y conectores. Los resultados de agregación muestran dos cubos de agregación con el mismo nombre; para omitir la limitación, cambie el nombre de uno de ellos.