Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Pode utilizar a API de Pesquisa da Microsoft no Microsoft Graph para refinar os resultados da pesquisa e mostrar a respetiva distribuição no índice.
Para refinar os resultados, no pedido de pesquisa, especifique aggregationOption. Cada aggregationOption especifica a propriedade na qual a agregação deve ser calculada e o número de itens searchBucket a devolver na resposta.
Exemplo 1: Pedir agregações por campos de cadeia
O exemplo seguinte procura recursos listItem e agrega os resultados pelo respetivo tipo de ficheiro, classe de conteúdo e hora da última modificação, todos os quais são valores de cadeia.
A resposta inclui dois objetos searchBucket para as duas agregações:
- A propriedade da chave especifica o valor real (por
fileType,contentclassoulastModifiedTime) para os objetos listItem correspondentes que são agregados no mesmo registo por esse valor. - A propriedade count especifica o número desses objetos agregados no mesmo registo. Este número é uma aproximação do número de correspondências e não fornece um número exato de correspondências.
- Os registos de resultados agregados por tipo de ficheiro são ordenados por contagem por ordem descendente. Neste exemplo, existem três registos para 3 tipos de ficheiro:
docx,xlsxepptx. - Os registos de resultados agregados pela classe de conteúdo são ordenados pelo valor de cadeia da classe de conteúdo por ordem descendente. Neste exemplo, existe apenas um registo com todos os objetos correspondentes a partilhar a mesma classe de conteúdo,
STS_ListItem_DocumentLibrary. - Os registos de resultados agregados por lastModifiedTime são ordenados pelo valor da cadeia de carateres lastModifiedTime por ordem descendente. Este exemplo inclui três registos:
Before 2021-09-01T09:08:19.6224752Z,From 2021-09-01T09:08:19.6224752Z up to 2021-11-09T09:08:19.6224752Ze2021-11-09T09:08:19.6224752Z or later.
Solicitação
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"listItem"
],
"query": {
"queryString": "test"
},
"from": 0,
"size": 25,
"aggregations": [
{
"field": "fileType",
"size": 20,
"bucketDefinition": {
"sortBy": "count",
"isDescending": "true",
"minimumCount": 0
}
},
{
"field": "contentclass",
"size": 15,
"bucketDefinition": {
"sortBy": "keyAsString",
"isDescending": "true",
"minimumCount": 0
}
},
{
"field": "lastModifiedTime",
"size": 2,
"bucketDefinition": {
"sortBy": "KeyAsString",
"isDescending": "true",
"minimumCount": 0,
"ranges": [
{
"to": "2021-09-01T09:08:19.6224752Z"
},
{
"from": "2021-09-01T09:08:19.6224752Z",
"to": "2021-11-09T09:08:19.6224752Z"
},
{
"from": "2021-11-09T09:08:19.6224752Z"
}
]
}
}
]
}
]
}
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.type": "#microsoft.graph.searchResponse",
"hitsContainers": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hits": [
"..."
],
"total": 9,
"moreResultsAvailable": false,
"aggregations": [
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "fileType",
"buckets": [
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "docx",
"count": 5,
"aggregationFilterToken": "\"ǂǂ646f6378\""
},
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "xlsx",
"count": 3,
"aggregationFilterToken": "\"ǂǂ786c7378\""
},
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "pptx",
"count": 1,
"aggregationFilterToken": "\"ǂǂ70707478\""
}
]
},
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "contentclass",
"buckets": [
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "STS_ListItem_DocumentLibrary",
"count": 9,
"aggregationFilterToken": "\"ǂǂ5354535f4c6973744974656d5f446f63756d656e744c696272617279\""
}
]
},
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "lastModifiedTime",
"buckets": [
{
"key": "Before 2021-09-01T09:08:19.6224752Z",
"count": 5,
"aggregationFilterToken": "range(min, 2021-09-01T09:08:19.6224752Z)"
},
{
"key": "From 2021-09-01T09:08:19.6224752Z up to 2021-11-09T09:08:19.6224752Z",
"count": 3,
"aggregationFilterToken": "range(2021-09-01T09:08:19.6224752Z, 2021-11-09T09:08:19.6224752Z)"
},
{
"key": "2021-11-09T09:08:19.6224752Z or later",
"count": 1,
"aggregationFilterToken": "range(2021-11-09T09:08:19.6224752Z, max, to=\"le\")"
}
]
}
]
}
]
}
Exemplo 2: Aplicar um filtro de agregação com base num pedido anterior
Este exemplo aplica um filtro de agregação baseado na agregaçãoFilterToken devolvido como docx campo fileType e From 2021-09-01T09:08:19.6224752Z up to 2021-11-09T09:08:19.6224752Z como o lastModifiedTime campo no exemplo 1.
O valor da cadeia atribuída à propriedade aggregationFilters segue o formato "{field}:\"{aggregationFilterToken}\"". Se forem necessários múltiplos valores para o mesmo filtro, o valor de cadeia atribuído à propriedade aggregationFilters deve seguir este formato: "{field}:or(\"{aggregationFilterToken1}\",\"{aggregationFilterToken2}\")".
O valor da cadeia de formatação datetime atribuído à propriedade aggregationFilters segue o formato "{field}:{aggregationFilterToken}".
Solicitação
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "test"
},
"from": 0,
"size": 20,
"aggregations": [
{
"field": "fileType",
"size": 10,
"bucketDefinition": {
"sortBy": "count",
"isDescending": "true",
"minimumCount": 0
}
}
],
"aggregationFilters": [
"fileType:\"ǂǂ68746d6c\"",
"lastModifiedTime:range(2021-09-01T09:08:19.6224752Z, 2021-11-09T09:08:19.6224752Z)"
]
}
]
}
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.type": "#microsoft.graph.searchResponse",
"hitsContainers": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hits": [
"..."
],
"total": 69960,
"moreResultsAvailable": true,
"aggregations": [
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "fileType",
"buckets": [
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "html",
"count": 69960,
"aggregationFilterToken": "\"ǂǂ68746d6c\""
}
]
},
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "lastModifiedTime",
"buckets": [
{
"key": "Before 2021-09-01T09:08:19.6224752Z",
"count": 0,
"aggregationFilterToken": "range(min, 2021-09-01T09:08:19.6224752Z)"
},
{
"key": "From 2021-09-01T09:08:19.6224752Z up to 2021-11-09T09:08:19.6224752Z",
"count": 69960,
"aggregationFilterToken": "range(2021-09-01T09:08:19.6224752Z, 2021-11-09T09:08:19.6224752Z)"
},
{
"key": "2021-11-09T09:08:19.6224752Z or later",
"count": 0,
"aggregationFilterToken": "range(2021-11-09T09:08:19.6224752Z, max, to=\"le\")"
}
]
}
]
}
]
}
Exemplo 3: Pedir agregação por um campo numérico
O exemplo seguinte procura recursos driveItem e agrega os resultados pelo respetivo tamanho que é um valor numérico. O pedido especifica a agregação por 3 intervalos de tamanho:
- Tamanho inferior a 100
- Tamanho entre 100 e 1000
- Tamanho 1000 e superior
A resposta inclui 3 objetos searchBucket , um para cada agregação de intervalo de tamanho:
- Os dois registos dos intervalos de tamanho inferior não incluem correspondências de pesquisa.
- Todas as 9 correspondências de pesquisa têm tamanhos 1000 ou superiores.
Solicitação
POST https://graph.microsoft.com/beta/search/query
Content-Type: application/json
{
"requests": [
{
"entityTypes": [
"driveItem"
],
"query": {
"queryString": "test"
},
"from": 0,
"size": 10,
"aggregations": [
{
"field": "Size",
"size": 5,
"bucketDefinition": {
"sortBy": "keyAsNumber",
"isDescending": "true",
"minimumCount": 0,
"ranges": [
{
"to": "100"
},
{
"from": "100",
"to": "1000"
},
{
"from": "1000"
}
]
}
}
]
}
]
}
Resposta
HTTP/1.1 200 OK
Content-type: application/json
{
"@odata.type": "#microsoft.graph.searchResponse",
"hitsContainers": [
{
"@odata.type": "#microsoft.graph.searchHitsContainer",
"hits": [
"..."
],
"total": 9,
"moreResultsAvailable": false,
"aggregations": [
{
"@odata.type": "#microsoft.substrateSearch.searchAggregation",
"field": "Size",
"buckets": [
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "Less than 100",
"count": 0,
"aggregationFilterToken": "range(min, 100)"
},
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "100 up to 1000",
"count": 0,
"aggregationFilterToken": "range(100, 1000)"
},
{
"@odata.type": "#microsoft.substrateSearch.searchBucket",
"key": "1000 and up",
"count": 9,
"aggregationFilterToken": "range(1000, max, to=\"le\")"
}
]
}
]
}
]
}
Limitações conhecidas
As agregações são suportadas apenas para itens do SharePoint, OneDrive ou externos. Não são suportados para tipos de mensagens ou eventos .