Rechercher dans des conteneurs et des fichiers

S’applique à : Développeur

Utilisez Recherche Microsoft dans Microsoft Graph lorsque votre application nécessite une recherche par mot clé dans SharePoint Conteneurs ou contenu Embedded. L’API de recherche classe les résultats correspondants et renvoie drive des ressources pour les conteneurs ou driveItem des ressources pour les fichiers et les dossiers.

Remarque

La recherche SharePoint Embedded est en version préliminaire. Microsoft Graph fournit une v1.0 API de recherche, mais la propriété utilisée par les exemples de cet article n’est disponible qu’en sharePointOneDriveOptions.includeHiddenContent version bêta. Conservez ces demandes afin /beta qu’elles puissent inclure du contenu SharePoint Embedded masqué. La recherche SharePoint Embedded 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 demande au type de conteneur ou au conteneur appartenant à votre application. La recherche s’exécute dans le contexte de l’utilisateur connecté, de sorte que le service limite les résultats au contenu auquel l’utilisateur peut accéder. Votre application doit également avoir accès au type de conteneur correspondant avant de pouvoir ouvrir les conteneurs ou fichiers retournés.

Utilisez ces propriétés gérées dans le 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 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, paramétrez-la sharePointOneDriveOptions.includeHiddenContent dans true le corps de la demande.

Rechercher dans les conteneurs

Envoyez une POST demande à Microsoft Graph Rechercher et demander drive des ressources.

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 est #microsoft.graph.drive.@odata.type

Rechercher dans les fichiers et dossiers

Demandez driveItem des ressources lorsque l’utilisateur recherche des noms de fichiers ou du contenu de fichiers. Portée à un conteneur spécifique lorsque ContainerId l’utilisateur se trouve déjà à l’intérieur d’un conteneur.

{
  "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, size, createdDateTime, createdBylastModifiedBylastModifiedDateTimeparentReferenceet .webUrl

Renvoyer les champs sélectionnés et les résultats du tri

Utilisez la fields collection pour demander des propriétés gérées spécifiques dans la réponse. À utiliser sortProperties uniquement avec des 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. Lire hitsContainers[].total et hitsContainers[].moreResultsAvailable décider s’il faut demander une autre page.

Rechercher dans les propriétés personnalisées

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

customPropertyNameOWSTEXT: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 des valeurs de métadonnées connues sans classement par pertinence. Par exemple, interrogez 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 effectuez une dénombrement avec $orderby, incluez l’en-tête Prefer: HonorNonIndexedQueriesWarningMayFailRandomly requis pour les grandes énumérations commandées.

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 éléments auxquels l’utilisateur peut accéder et qui correspondent à la requête, même les conteneurs dont le type de conteneur n’est pas autorisé à être utilisé par votre application. Toujours inclure ContainerTypeId dans l’étendue des queryString résultats à votre application.

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

Étapes suivantes