Pesquisar contêineres e arquivos

Aplica-se a: Desenvolvedor

Use a Pesquisa da Microsoft no Microsoft Graph quando seu aplicativo precisar de pesquisa por palavra-chave em contêineres ou conteúdo incorporados do SharePoint. A API de pesquisa classifica os resultados correspondentes e retorna drive recursos para contêineres ou driveItem recursos para arquivos e pastas.

Observação

A pesquisa inserida do SharePoint está em versão prévia. Use o ponto de extremidade do Microsoft Graph /beta porque não há nenhuma v1.0 API de pesquisa para contêineres. A pesquisa dá suporte apenas a permissões delegadas e segue o padrão de acesso excepcional.

Escolha o escopo da pesquisa

Defina o escopo de cada solicitação para o tipo de contêiner ou contêiner que pertence ao seu aplicativo. A pesquisa é executada no contexto do usuário conectado, portanto, o serviço corta os resultados para o conteúdo que o usuário pode acessar. Seu aplicativo também deve ter acesso ao tipo de contêiner correspondente antes de poder abrir contêineres ou arquivos retornados.

Use estas propriedades gerenciadas queryStringno :

Escopo Tipo de entidade Padrão de consulta
Todos os contêineres de um tipo drive ContainerTypeId:{containerTypeId}
Um contêiner por título drive Title:'contoso' AND ContainerTypeId:{containerTypeId}
Um contêiner por descrição drive Description:'Everything' AND ContainerTypeId:{containerTypeId}
Files em um contêiner driveItem Title:'contoso' AND ContainerId:{containerId}
Files em um tipo de contêiner driveItem 'contoso' AND ContainerTypeId:{containerTypeId}

Se o aplicativo tiver recusado a capacidade de descoberta de conteúdo do Microsoft 365, defina sharePointOneDriveOptions.includeHiddenContent como true no corpo da solicitação.

Pesquisar contêineres

Envie uma POST solicitação para a pesquisa do Microsoft Graph e solicite drive recursos.

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

A resposta inclui hitsContainers. Cada ocorrência contém um hitId, rank, summary, e um resource cujo @odata.type é #microsoft.graph.drive.

Pesquisar arquivos e pastas

Solicite driveItem recursos quando o usuário pesquisar nomes de arquivos ou conteúdo de arquivos. Defina o escopo para um contêiner específico quando ContainerId o usuário já estiver dentro de um contêiner.

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

Um driveItem resultado pode incluir metadados de arquivo como id, name, size, , lastModifiedDateTimecreatedDateTime, parentReference, , createdBy, lastModifiedBy, e webUrl.

Devolver campos selecionados e classificar resultados

Use a fields coleção para solicitar propriedades gerenciadas específicas na resposta. Use sortProperties apenas com propriedades classificáveis.

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

Use from e size para percorrer os resultados classificados. Leia hitsContainers[].total e hitsContainers[].moreResultsAvailable decida se deseja solicitar outra página.

Pesquisar propriedades personalizadas

Para propriedades personalizadas de contêiner, adicione OWSTEXT ao nome da propriedade personalizada na cadeia de caracteres de consulta.

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

Use a pesquisa de texto completo (o /beta/search/query ponto de extremidade acima) quando os usuários digitarem termos de texto livre e você quiser classificação de relevância entre contêineres. Use enumeração direta em vez de pesquisa quando seu aplicativo precisar filtrar valores de metadados conhecidos sem classificação de relevância. Por exemplo, consulte itens de unidade com $filter, $expande $orderby:

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

Quando um contêiner tem mais de 5.000 itens e você enumera com $orderby, inclua o Prefer: HonorNonIndexedQueriesWarningMayFailRandomly cabeçalho necessário para enumerações ordenadas grandes.

Limitações conhecidas

A pesquisa impõe o acesso do usuário conectado, não a autorização do seu aplicativo. Os resultados incluem todos os contêineres e itens que o usuário pode acessar e que correspondem à consulta, até mesmo contêineres cujo tipo de contêiner seu aplicativo não está autorizado a usar. Sempre inclua ContainerTypeId no queryString escopo os resultados para seu aplicativo.

Para abrir um contêiner ou arquivo retornado pela pesquisa, seu aplicativo deve ter permissões de acesso ao tipo de contêiner correspondente.

Próximas etapas