Rechercher des conteneurs et des fichiers

S’applique à : Développeur

Utilisez Recherche Microsoft dans Microsoft Graph lorsque votre application a besoin de mot clé recherche dans des conteneurs ou du contenu SharePoint Embedded. L’API de recherche classe les résultats correspondants et retourne drive des ressources pour les conteneurs ou driveItem des ressources pour les fichiers et dossiers.

Remarque

La recherche SharePoint Embedded est en préversion et est disponible uniquement sur le point de terminaison Microsoft Graph /beta . Il n’existe aucune v1.0 API de recherche pour les conteneurs. La recherche prend uniquement en charge les autorisations déléguées et suit le modèle d’accès exceptionnel.

Choisir l’étendue de recherche

Limitez chaque requête au type de conteneur ou au conteneur qui appartient à votre application. La recherche s’exécute dans le contexte de l’utilisateur connecté, de sorte que le service réduit les résultats en contenu auquel l’utilisateur peut accéder. Votre application doit également avoir accès au type de conteneur correspondant avant de pouvoir ouvrir des conteneurs ou des fichiers retournés.

Utilisez ces propriétés managées dans :queryString

Portée Type d’entité Modèle de requête
Tous les conteneurs d’un type drive ContainerTypeId:{containerTypeId}
Un conteneur par titre drive Title:'contoso' AND ContainerTypeId:{containerTypeId}
Un conteneur par description drive Description:'Everything' AND ContainerTypeId:{containerTypeId}
Files dans un seul conteneur driveItem Title:'contoso' AND ContainerId:{containerId}
Files sur un type de conteneur driveItem 'contoso' AND ContainerTypeId:{containerTypeId}

Si votre application a refusé la détectabilité du contenu Microsoft 365, définissez sharePointOneDriveOptions.includeHiddenContenttrue sur dans le corps de la demande.

Rechercher des conteneurs

Envoyer une POST requête à la recherche et aux ressources de requête drive Microsoft Graph.

POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
  "requests": [
    {
      "entityTypes": ["drive"],
      "query": {
        "queryString": "ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae"
      },
      "sharePointOneDriveOptions": {
        "includeHiddenContent": true
      },
      "from": 0,
      "size": 25
    }
  ]
}

La réponse inclut hitsContainers. Chaque accès contient un hitId, rank, summaryet un resource dont @odata.type est #microsoft.graph.drive.

Rechercher des fichiers et des dossiers

Demandez des driveItem ressources lorsque l’utilisateur recherche des noms de fichiers ou du contenu de fichier. Étendue à un conteneur spécifique avec ContainerId quand l’utilisateur est déjà à l’intérieur d’un espace de travail.

{
  "requests": [
    {
      "entityTypes": ["driveItem"],
      "query": {
        "queryString": "Title:'contoso' AND ContainerId:b!UBoDBcfpTEeInnz0Rlmlsp6EC-DsPN5Kj3uW0fD1mPp9ptYmB71GRpxbhbDlGdb0"
      },
      "sharePointOneDriveOptions": {
        "includeHiddenContent": true
      },
      "from": 0,
      "size": 25
    }
  ]
}

Un driveItem résultat peut inclure des métadonnées de fichier telles que id, name, createdDateTimesize, lastModifiedDateTime, parentReference, createdBy, , lastModifiedBy, et webUrl.

Retourner les champs sélectionnés et trier les résultats

Utilisez la fields collection pour demander des propriétés managées spécifiques dans la réponse. Utilisez sortProperties uniquement avec les propriétés triables.

{
  "requests": [
    {
      "entityTypes": ["driveItem"],
      "query": { "queryString": "Everything about contoso" },
      "sharePointOneDriveOptions": { "includeHiddenContent": true },
      "fields": ["SampleOWSText", "id", "name", "parentReference", "webUrl", "createdDateTime", "lastModifiedDateTime", "size"],
      "sortProperties": [
        { "name": "Created", "isDescending": false }
      ]
    }
  ]
}

Utilisez from et size pour parcourir les résultats classés. Lisez hitsContainers[].total et hitsContainers[].moreResultsAvailable pour décider s’il faut demander une autre page.

Rechercher des propriétés personnalisées

Pour les propriétés personnalisées du conteneur, ajoutez OWSTEXT au nom de la propriété personnalisée dans la chaîne de requête.

customPropertyNametOWSTEXT:customPropertyValue AND ContainerTypeId:498c6855-8f0e-0de7-142e-4e9ff86af9ae

Utilisez la recherche en texte intégral (point de /beta/search/query terminaison ci-dessus) lorsque les utilisateurs tapent des termes en texte libre et que vous souhaitez un classement de pertinence entre les conteneurs. Utilisez l’énumération directe au lieu de la recherche lorsque votre application doit filtrer sur les valeurs de métadonnées connues sans classement de pertinence. Par exemple, interroger des éléments de lecteur avec $filter, $expandet $orderby:

GET https://graph.microsoft.com/v1.0/drives/{container-id}/items?$filter=startswith(listitem/fields/{column}, '{value}')&$expand=listitem($expand=fields)

Lorsqu’un conteneur contient plus de 5 000 éléments et que vous énumérez avec $orderby, incluez l’en-tête Prefer: HonorNonIndexedQueriesWarningMayFailRandomly requis pour les énumérations ordonnées volumineuses.

Limitations connues

La recherche applique l’accès de l’utilisateur connecté, et non l’autorisation de votre application. Les résultats incluent tous les conteneurs et les éléments auxquels l’utilisateur peut accéder qui correspondent à la requête, même les conteneurs dont le type de conteneur votre application n’est pas autorisé à utiliser. Incluez ContainerTypeId toujours dans l’étendue queryString des résultats de votre application.

Pour ouvrir un conteneur ou un fichier retourné par la recherche, votre application doit disposer d’autorisations d’accès au type de conteneur correspondant.

Étapes suivantes