Utiliser l’API Recherche Microsoft pour effectuer une recherche avec des résultats entrelacés

La ressource searchRequest prend en charge le passage de plusieurs types d’entités dans une seule requête et retourne des résultats entrelacés avec le type d’entité demandé, classé par pertinence.

Combinaison d’entités prise en charge

Le tableau suivant montre la relation entre les différents types d’entités qui peuvent être entrelacés.

Type d’entité message chatMessage Lecteur driveItem event externalItem liste listItem Personne site
message Vrai - - - - - - - - -
chatMessage - Vrai - - - - - - - -
Lecteur - - True True - True True True - True
driveItem - - True True - True True True - True
event - - - - Vrai - - - - -
externalItem - - True True - True True True - True
liste - - True True - True True True - True
listItem - - True True - True True True - True
Personne - - - - - - - - Vrai -
site - - True True - True True True - True

Exemples

Exemple 1 : Rechercher avec des types de fichiers SharePoint et une combinaison de connecteurs

Demande

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

Réponse

Voici un exemple de réponse d’entrelacement.

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": "adce5789-c324-485a-a8bf-66bb809527ff=",
              "rank": 3,
              "summary": "Test externalItem",
              "resource": {
                "@odata.type": "#microsoft.graph.externalItem",
                "title": "Test externalItem 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"
            }
          ]
        }
      ]
    }
  ]
}

Limitations connues

  • Le tri personnalisé n’est pas pris en charge dans le scénario d’entrelacement, tous sont classés par pertinence.
  • QueryTemplate est uniquement pris en charge pour les éléments de fichier dans la requête d’entrelacement. Il ne peut pas filtrer les résultats externalItem dans la réponse. Le comportement pourrait être modifié à l’avenir et autoriser queryTemplate à filtrer les résultats externalItem, et non à suggérer d’utiliser queryTemplate dans la demande d’entrelacement.
  • La réduction n’est pas prise en charge.
  • La modification de l’orthographe n’est pas prise en charge, la suggestion d’orthographe peut être utilisée normalement.
  • Le modèle de résultat n’est pas pris en charge.
  • Limitation d’agrégation, si le même champ agrégé existe dans les types de fichiers Sharepoint (site, lecteur, driveItem, listItem, listItem) et les connecteurs. Le résultat de l’agrégation affiche deux compartiments d’agrégation identiques portant le même nom. Suggérez de renommer l’un de ses noms pour contourner la limitation.
  • La spécification d’une connexion unique dans la source de contenu n’est pas prise en charge. Par conséquent, utilisez uniquement « /external/connections/* » dans contentSource. Notez qu’il existe un plan pour modifier le comportement afin d’autoriser la recherche d’entrelacement de connexion unique à l’avenir.

Prochaines étapes