Usar a API de Pesquisa do Microsoft Graph para transmitir várias solicitações de pesquisa

A API de Pesquisa da Microsoft permite incluir várias solicitações de pesquisa em um único corpo de solicitação. Esse recurso está disponível atualmente para OneDrive e SharePoint, bem como para conteúdo externo ingerido e indexado por conectores Microsoft 365 Copilot (anteriormente conectores do Microsoft Graph) e tipos de recursos de resposta, incluindo indicadores, acrônimos e P&R.

Tipos de entidade com suporte

Os tipos de entidade com suporte para incluir várias solicitações de pesquisa em um corpo de solicitação são: site, drive, driveItem, list,listItem, externalItem, bookmark,acronym e qna. Os tipos de entidade dentro do mesmo bloco de solicitação devem aderir aos relacionamentos e combinações de tipo de entidade suportados definidos no tópico de pesquisa de intercalação .

Exemplos

Exemplo 1: Pesquisar com tipos de arquivo do SharePoint e combinações de marcador/acrônimo

Solicitação

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
    }
  ]
}

Resposta

Veja a seguir uma resposta que pesquisa com tipos de arquivo do SharePoint e combinações de marcador/acrônimo.

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"
              }
            }
          ]
        }
      ]
    }
  ]
}

Exemplos de solicitação inválida

Os exemplos a seguir mostram solicitações que resultam em uma resposta de erro de solicitação incorreta. Para obter detalhes sobre limitações com solicitações de pesquisa, consulte [Limitações conhecidas(#known-limitações).

Exemplo 1: Pesquisar com os mesmos tipos de entidade em blocos de solicitação separados no corpo da solicitação

Solicitação

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
    }
  ]
}

Resposta

Veja a seguir um exemplo de uma resposta de solicitação incorreta.

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
    }
}

Exemplo 2: Pesquise com os tipos de entidade de arquivo em blocos de solicitação separados no corpo da solicitação

Solicitação

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
    }
  ]
}

Resposta

Veja a seguir um exemplo de uma resposta de solicitação incorreta.

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
    }
}

Limitações conhecidas

  • Os valores usados para as propriedades from e size em diferentes instâncias searchRequest no corpo da solicitação devem ser os mesmos. O valor usado para a propriedade queryString em diferentes instâncias de searchQuery em diferentes instâncias de searchRequest deve ser o mesmo.
  • Não são permitidos tipos de entidade duplicados em diferentes solicitações de pesquisa no corpo da solicitação. Por exemplo, você não pode ter um indicadorsearchRequest e outro indicadorsearchRequest em um corpo de solicitação.
  • Os tipos de entidade de arquivo (site, drive, driveItem, list e listItem) só podem estar presentes na mesma solicitação de pesquisa de um corpo de solicitação. Por exemplo, você não pode incluir uma entidade de site em um searchRequest e uma entidade de unidade em um searchRequest diferente no corpo da solicitação.
  • A funcionalidade do verificador ortográfico só pode ser usada uma vez e deve ser incluída no primeiro searchRequest no corpo da solicitação.

Próximas etapas