Freigeben über


Verwenden der Microsoft Graph-Such-API zum Übergeben mehrerer Suchanforderungen

Mit der Microsoft Search-API können Sie mehrere Suchanforderungen in einen einzelnen Anforderungstext einschließen. Diese Funktion ist derzeit für OneDrive und SharePoint sowie für externe Inhalte verfügbar, die von Microsoft 365 Copilot Connectors (früher Microsoft Graph-Connectors) und Antwortressourcentypen erfasst und indiziert werden, einschließlich Lesezeichen, Akronyme und Q&A.

Unterstützte Entitätstypen

Die unterstützten Entitätstypen zum Einschließen mehrerer Suchanforderungen in einen Anforderungstext sind: site, drive, driveItem, list, listItem, externalItem, bookmark, acronym und qna. Entitätstypen innerhalb desselben Anforderungsblocks sollten den unterstützten Entitätstypbeziehungen und -kombinationen entsprechen, die im Überlappenden Suchthema definiert sind.

Beispiele

Beispiel 1: Suche mit SharePoint-Dateitypen und Lesezeichen-/Akronym-Kombinationen

Anforderung

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

Antwort

Im Folgenden finden Sie eine Antwort, die mit SharePoint-Dateitypen und Kombinationen aus Lesezeichen/Akronym sucht.

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

Beispiele für ungültige Anforderungen

Die folgenden Beispiele zeigen Anforderungen, die zu einer fehlerhaften Anforderungsfehlerantwort führen. Ausführliche Informationen zu Einschränkungen bei Suchanforderungen finden Sie unter [Bekannte Einschränkungen(#known-einschränkungen).

Beispiel 1: Suche mit denselben Entitätstypen in separaten Anforderungsblöcken im Anforderungstext

Anforderung

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

Antwort

Es folgt ein Beispiel für eine ungültige Anforderungsantwort.

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

Beispiel 2: Suche mit den Dateientitätstypen in separaten Anforderungsblöcken im Anforderungstext

Anforderung

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

Antwort

Es folgt ein Beispiel für eine ungültige Anforderungsantwort.

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

Bekannte Einschränkungen

  • Die Werte, die für die Eigenschaften from und size in verschiedenen searchRequest-Instanzen im Anforderungstext verwendet werden, sollten identisch sein. Der Wert, der für die queryString-Eigenschaft in verschiedenen searchQuery-Instanzen in verschiedenen searchRequest-Instanzen verwendet wird, sollte identisch sein.
  • Doppelte Entitätstypen in verschiedenen Suchanforderungen im Anforderungstext sind nicht zulässig. Sie können z. B. kein LesezeichensearchRequest und ein anderes LesezeichensearchRequest in einem Anforderungstext haben.
  • Die Dateientitätstypen (site, drive, driveItem, list und listItem) können nur in derselben Suchanforderung eines Anforderungstexts vorhanden sein. Sie können z. B. keine Websiteentität in eine searchRequest - und eine Drive-Entität in einer anderen searchRequest-Instanz in den Anforderungstext einschließen.
  • Die Rechtschreibfunktion kann nur einmal verwendet werden und sollte in der ersten searchRequest im Anforderungstext enthalten sein.

Nächste Schritte