Durchsuchen von Containern und Dateien

Gilt für: Entwickler

Verwenden Sie Microsoft Search in Microsoft Graph, wenn Ihre App Schlüsselwort (keyword) Suche in SharePoint Embedded-Containern oder -Inhalten benötigt. Die Such-API bewertet übereinstimmende Ergebnisse und gibt Ressourcen für Container oder driveItem Ressourcen für Dateien und Ordner zurückdrive.

Hinweis

Die SharePoint Embedded-Suche befindet sich in der Vorschauphase und ist nur auf dem Microsoft Graph-Endpunkt /beta verfügbar. Es gibt keine v1.0 Such-API für Container. Die Suche unterstützt nur delegierte Berechtigungen und folgt dem außergewöhnlichen Zugriffsmuster.

Auswählen des Suchbereichs

Legen Sie jede Anforderung auf den Containertyp oder Container fest, der zu Ihrer App gehört. Die Suche wird im Kontext des angemeldeten Benutzers ausgeführt, sodass der Dienst ergebnisse auf Inhalte schneidet, auf die der Benutzer zugreifen kann. Ihre App muss auch Zugriff auf den entsprechenden Containertyp haben, bevor sie zurückgegebene Container oder Dateien öffnen kann.

Verwenden Sie diese verwalteten Eigenschaften in queryString:

Umfang Entitätstyp Abfragemuster
Alle Container eines Typs drive ContainerTypeId:{containerTypeId}
Ein Container nach Titel drive Title:'contoso' AND ContainerTypeId:{containerTypeId}
Ein Container nach Beschreibung drive Description:'Everything' AND ContainerTypeId:{containerTypeId}
Files in einem Container driveItem Title:'contoso' AND ContainerId:{containerId}
Files für einen Containertyp driveItem 'contoso' AND ContainerTypeId:{containerTypeId}

Wenn Ihre Anwendung die Auffindbarkeit von Microsoft 365-Inhalten deaktiviert hat, legen Sie im Anforderungstext auf true festsharePointOneDriveOptions.includeHiddenContent.

Container durchsuchen

Senden Sie eine POST Anforderung an Microsoft Graph-Such- und Anforderungsressourcen drive .

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

Die Antwort enthält hitsContainers. Jeder Treffer enthält eine hitId, rank, summaryund eine resource , deren ist @odata.type#microsoft.graph.drive.

Durchsuchen von Dateien und Ordnern

Fordern Sie driveItem Ressourcen an, wenn der Benutzer Dateinamen oder Dateiinhalte durchsucht. Legen Sie den Bereich auf einen bestimmten Container fest ContainerId , wenn sich der Benutzer bereits in einem Arbeitsbereich befindet.

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

Ein driveItem Ergebnis kann Dateimetadaten wie id, , name, size, createdDateTimelastModifiedDateTime, , parentReferencecreatedBy, lastModifiedBy, und webUrlenthalten.

Zurückgeben ausgewählter Felder und Sortieren von Ergebnissen

Verwenden Sie die fields Auflistung, um bestimmte verwaltete Eigenschaften in der Antwort anzufordern. Verwenden Sie sortProperties nur mit sortierbaren Eigenschaften.

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

Verwenden Sie from und size , um rangierte Ergebnisse zu durchlaufen. Lesen Sie hitsContainers[].total und hitsContainers[].moreResultsAvailable , um zu entscheiden, ob eine andere Seite anzufordern ist.

Benutzerdefinierte Eigenschaften suchen

Fügen Sie für benutzerdefinierte Containereigenschaften in der Abfragezeichenfolge an den Namen der benutzerdefinierten Eigenschaft an OWSTEXT .

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

Verwenden Sie die Volltextsuche (den /beta/search/query obigen Endpunkt), wenn Benutzer Freitextbegriffe eingeben und Sie eine Containerübergreifende Relevanzrangfolge wünschen. Verwenden Sie die direkte Enumeration anstelle der Suche, wenn Ihre App nach bekannten Metadatenwerten ohne Relevanzrangfolge filtern muss. Beispiel: Abfragen von Laufwerkelementen mit $filter, $expandund $orderby:

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

Wenn ein Container über mehr als 5.000 Elemente verfügt und Sie mit $orderbyaufzählen, fügen Sie den Header ein, der Prefer: HonorNonIndexedQueriesWarningMayFailRandomly für groß geordnete Enumerationen erforderlich ist.

Bekannte Einschränkungen

Die Suche erzwingt den Zugriff des angemeldeten Benutzers, nicht die Autorisierung Ihrer App. Zu den Ergebnissen gehören alle Container und Elemente, auf die der Benutzer zugreifen kann, die der Abfrage entsprechen – auch Container, deren Containertyp Ihre App nicht verwenden darf. Schließen ContainerTypeId Sie immer in die queryString ein, um die Ergebnisse auf Ihre App einzuschließen.

Um einen von der Suche zurückgegebenen Container oder eine Datei zu öffnen, muss Ihre App über Zugriffsberechtigungen für den entsprechenden Containertyp verfügen.

Nächste Schritte