Utiliser l’API Microsoft Graph Recherche pour passer plusieurs demandes de recherche

L’API Microsoft Recherche vous permet d’inclure plusieurs demandes de recherche dans un seul corps de requête. Cette fonctionnalité est actuellement disponible pour OneDrive et SharePoint, ainsi que pour le contenu externe qui est ingéré et indexé par les connecteurs Microsoft Graph et les types de ressources de réponse, y compris les signets, les acronymes et Q&A.

Types d’entités pris en charge

Les types d’entités pris en charge pour inclure plusieurs demandes de recherche dans le corps d’une requête sont : site, lecteur, driveItem, listItem, externalItem, bookmark, acronyme et qna. Les types d’entités dans le même bloc de requête doivent respecter les relations de type d’entité prises en charge et les combinaisons définies dans la rubrique de recherche d’entrelacement .

Exemples

Exemple 1 : Recherche avec des types de fichiers SharePoint et des combinaisons signet/acronyme

Demande

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

Réponse

L’exemple suivant montre une réponse qui effectue une recherche avec les types de fichiers SharePoint et les combinaisons signet/acronyme.

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

Exemples de requêtes incorrectes

Les exemples suivants illustrent les demandes qui entraînent une réponse d’erreur de requête incorrecte. Pour plus d’informations sur les limitations avec les demandes de recherche, consultez [Limitations connues(#known-limitations).

Exemple 1 : Recherche avec les mêmes types d’entité dans des blocs de requête distincts dans le corps de la demande

Demande

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

Réponse

Voici un exemple de réponse de demande incorrecte.

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

Exemple 2 : Recherche avec les types d’entités de fichier dans des blocs de requête distincts dans le corps de la demande

Demande

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

Réponse

Voici un exemple de réponse de demande incorrecte.

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

Limitations connues

  • Les valeurs utilisées pour les propriétés from et size dans différentes instances searchRequest dans le corps de la requête doivent être identiques. La valeur utilisée pour la propriété queryString dans différentes instances searchQuery dans différentes instances searchRequest doit être la même.
  • Les types d’entités en double dans différentes demandes de recherche dans le corps de la demande ne sont pas autorisés. Par exemple, vous ne pouvez pas avoir un signetsearchRequest et un autre bookmarksearchRequest dans le corps d’une demande.
  • Les types d’entités de fichier (site, lecteur, driveItem, list et listItem) ne peuvent être présents que dans la même demande de recherche du corps d’une requête. Par exemple, vous ne pouvez pas inclure une entité de site dans un searchRequest et une entité de lecteur dans un autre searchRequest dans le corps de la demande.
  • La fonctionnalité d’orthographe ne peut être utilisée qu’une seule fois et doit être incluse dans la première requête searchRequest dans le corps de la demande.

Étapes suivantes