Поиск контейнеров и файлов

Применимо к: Разработчик

Используйте поиск (Майкрософт) в Microsoft Graph, когда приложению требуется ключевое слово поиска в контейнерах или содержимом SharePoint Embedded. API поиска ранжирует соответствующие результаты и возвращает drive ресурсы для контейнеров или driveItem ресурсы для файлов и папок.

Примечание.

Поиск SharePoint Embedded доступен в предварительной версии. Используйте конечную точку Microsoft Graph /beta , так как для контейнеров нет v1.0 API поиска. Поиск поддерживает только делегированные разрешения и соответствует шаблону исключительного доступа.

Выберите область поиска

Укажите для каждого запроса тип контейнера или контейнер, принадлежащий вашему приложению. Поиск выполняется в контексте вошедшего пользователя, поэтому служба обрезает результаты по содержимому, к которой пользователь может получить доступ. Ваше приложение также должно иметь доступ к соответствующему типу контейнера, прежде чем оно сможет открывать возвращенные контейнеры или файлы.

Используйте эти управляемые свойства в queryString:

Scope Тип сущности Шаблон запроса
Все контейнеры типа drive ContainerTypeId:{containerTypeId}
Один контейнер по названию drive Title:'contoso' AND ContainerTypeId:{containerTypeId}
Один контейнер по описанию drive Description:'Everything' AND ContainerTypeId:{containerTypeId}
Files в одном контейнере driveItem Title:'contoso' AND ContainerId:{containerId}
Files в типе контейнера driveItem 'contoso' AND ContainerTypeId:{containerTypeId}

Если ваше приложение отказались от возможности обнаружения содержимого Microsoft 365, задайте для параметра значение sharePointOneDriveOptions.includeHiddenContenttrue в тексте запроса.

Поиск контейнеров

POST Отправьте запрос в ресурсы поиска и запроса 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
    }
  ]
}

Ответ включает в себя hitsContainers. Каждое нажатие содержит hitId, rank, summaryи , resource для которых @odata.type имеет значение #microsoft.graph.drive.

Поиск файлов и папок

Запрашивайте driveItem ресурсы, когда пользователь выполняет поиск имен файлов или содержимого файлов. Область действия для определенного контейнера с ContainerId параметром , когда пользователь уже находится внутри контейнера.

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

Результат driveItem может включать метаданные файла, такие как id, name, size, createdDateTime, lastModifiedDateTime, parentReference, createdBy, lastModifiedByи webUrl.

Возврат выбранных полей и результаты сортировки

Используйте коллекцию fields для запроса определенных управляемых свойств в ответе. Используйте sortProperties только с сортируемыми свойствами.

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

Используйте from и size для просмотра ранжированных результатов. Чтение hitsContainers[].total и hitsContainers[].moreResultsAvailable решение о том, следует ли запрашивать другую страницу.

Поиск настраиваемых свойств

Для пользовательских свойств контейнера добавьте OWSTEXT к имени пользовательского свойства в строке запроса.

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

Используйте полнотекстовый поиск ( /beta/search/query конечная точка выше), когда пользователи вводит термины свободного текста и требуется ранжирование релевантности между контейнерами. Используйте прямое перечисление вместо поиска, если приложение должно фильтровать значения известных метаданных без ранжирования релевантности. Например, запросите элементы диска с $filterпомощью , $expandи $orderby:

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

Если контейнер содержит более 5000 элементов и выполняется перечисление с $orderbyпомощью , включите заголовок, необходимый Prefer: HonorNonIndexedQueriesWarningMayFailRandomly для больших упорядоченных перечислений.

Известные ограничения

Поиск обеспечивает доступ пользователя, выполнившего вход, а не авторизацию вашего приложения. Результаты включают все контейнеры и элементы, к которым пользователь может получить доступ, соответствующие запросу, даже контейнеры, тип контейнера которых приложение не авторизовано на использование. Всегда включайте ContainerTypeId в область queryString результаты в приложение.

Чтобы открыть контейнер или файл, возвращенный поиском, приложение должно иметь разрешения на доступ к соответствующему типу контейнера.

Дальнейшие действия