Além de outros parâmetros de consulta OData, o Microsoft Graph dá suporte ao parâmetro de consulta $search para restringir os resultados de uma solicitação para corresponder a um critério de pesquisa.
O suporte para o $search parâmetro de consulta varia de acordo com a entidade, com alguns, como Microsoft Entra recursos que derivam do diretórioObject, com suporte $search apenas em consultas avançadas.
Observação
O parâmetro de consulta $search não está disponível no momento nos locatários Azure AD B2C.
Você pode pesquisar mensagens com base em um valor em propriedades de mensagem específicas. Os resultados da pesquisa são classificados pela data e hora em que a mensagem foi enviada. Uma solicitação $search retorna até 1000 resultados.
Se você realizar uma pesquisa em mensagens e especificar apenas um valor sem as propriedades de mensagens específicas, a pesquisa será realizada nas propriedades de pesquisa padrão from, subject e body.
O exemplo a seguir retorna todas as mensagens na Caixa de Entrada do usuário que contenham "pizza" em qualquer uma das três propriedades de pesquisa padrão:
GET https://graph.microsoft.com/v1.0/me/messages?$search="pizza"
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.Messages.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Search = "\"pizza\"";
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
MessageCollectionResponse result = graphClient.me().messages().get(requestConfiguration -> {
requestConfiguration.queryParameters.search = "\"pizza\"";
});
Como alternativa, você pode pesquisar mensagens especificando os nomes de propriedade da mensagem na tabela a seguir, que são reconhecidos pela sintaxe da Linguagem de Consulta de Palavra-chave (KQL). Esses nomes de propriedades correspondem às propriedades definidas na entidade mensagem do Microsoft Graph. O Outlook e outros aplicativos do Microsoft 365 como o SharePoint são compatíveis com a sintaxe KQL, proporcionando a conveniência de um domínio de descoberta comum para seus repositórios de dados.
Propriedades de emails pesquisáveis
Descrição
Exemplo
attachment
Os nomes dos arquivos anexados a uma mensagem de email.
Para saber mais sobre as propriedades de email pesquisáveis, KQL como a sintaxe, operadores com suporte e dicas de pesquisa, confira os seguintes artigos:
Você pode usar a API de Pessoas do Microsoft Graph para recuperar as pessoas mais relevantes para um usuário. A relevância é determinada pelos padrões de comunicação e colaboração do usuário e pelas relações comerciais. A API de Pessoas é compatível com o parâmetro de consulta $search. Uma solicitação de $search retorna até 250 resultados.
As pesquisas de pessoas ocorrem nas propriedades displayName e emailAddress do recurso person.
A seguinte solicitação faz uma pesquisa por uma pessoa chamada "Clara Barbosa" nas propriedades displayName e emailAddress em todos os indivíduos no conjunto de Pessoas do usuário conectado. Como uma pessoa denominada "Clara Barbosa" é relevante para o usuário conectado, as informações para "Clara Barbosa" são retornadas.
GET https://graph.microsoft.com/v1.0/me/people/?$search="Irene McGowen"
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Me.People.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Search = "\"Irene McGowen\"";
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
PersonCollectionResponse result = graphClient.me().people().get(requestConfiguration -> {
requestConfiguration.queryParameters.search = "\"Irene McGowen\"";
});
Como usar $search nos conjuntos de objetos do diretório
Observação
Há um problema conhecido relacionado a $search objetos de diretório para valores que contêm um símbolo ampersand (&).
Microsoft Entra ID recursos e suas relações que derivam do diretórioObject dão suporte ao $search parâmetro de consulta somente em consultas avançadas. A implementação da pesquisa não dá suporte à lógica "contém". Em vez disso, ele usa uma abordagem de geração de tokens que funciona extraindo palavras do valor da propriedade e da cadeia de caracteres de pesquisa usando espaços, números, maiúsculas e minúsculas diferentes, e símbolos conforme mostrado nos exemplos a seguir:
Espaços: hello world =>hello, world
Casing diferente⁽1⁾: HelloWorld ou helloWORLD =>hello, world
⁽1⁾ Atualmente, a tokenização só funciona quando o invólucro está mudando de minúscula para maiúsculas, portanto HELLOworld , é considerado um único token: helloworld, e HelloWORld é dois tokens: hello, world.
⁽2⁾ A lógica de tokenização também combina palavras separadas apenas por símbolos; por exemplo, pesquisar helloworld localizará hello-world e hello.world.
Observação
Observação: após a geração de tokens, os tokens são combinados independentemente da capitalização original e são combinados em qualquer ordem. Por exemplo, displayName 李四(David Li) corresponde a cadeias de caracteres de pesquisa como 李四(David Li), 李四, , DavidLi, David), (李四, Li 李.
Uma alteração no alfabeto, como do latim para cirílico ou chinês, não cria um novo token. Por exemplo, displayName 蓝色group corresponde às 蓝色group cadeias de caracteres e 蓝色 pesquisa, mas não group; enquanto displayName group蓝色 corresponde às group蓝色 cadeias de caracteres e group pesquisa, mas não 蓝色 ou 蓝.
O suporte à pesquisa com token funciona apenas nos campos displayName e descrição. Qualquer campo do tipo String pode ser colocado em $search; campos diferentes de displayName e descrição padrão para o $filterstartswith comportamento.
Por exemplo:
GET https://graph.microsoft.com/v1.0/groups/?$search="displayName:OneVideo" OR "mail:onevideo"
ConsistencyLevel: eventual
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Search = "\"displayName:OneVideo\" OR \"mail:onevideo\"";
requestConfiguration.Headers.Add("ConsistencyLevel", "eventual");
});
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
GroupCollectionResponse result = graphClient.groups().get(requestConfiguration -> {
requestConfiguration.queryParameters.search = "\"displayName:OneVideo\" OR \"mail:onevideo\"";
requestConfiguration.headers.add("ConsistencyLevel", "eventual");
});
GET https://graph.microsoft.com/v1.0/groups/?$filter=mailEnabled eq true&$search="displayName:OneVideo"
ConsistencyLevel: eventual
// Code snippets are only available for the latest version. Current version is 5.x
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Groups.GetAsync((requestConfiguration) =>
{
requestConfiguration.QueryParameters.Filter = "mailEnabled eq true";
requestConfiguration.QueryParameters.Search = "\"displayName:OneVideo\"";
requestConfiguration.Headers.Add("ConsistencyLevel", "eventual");
});
// THE CLI IS IN PREVIEW. NON-PRODUCTION USE ONLY
mgc groups list --search ""displayName:OneVideo"" --filter "mailEnabled eq true" --consistency-level "eventual"
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
GroupCollectionResponse result = graphClient.groups().get(requestConfiguration -> {
requestConfiguration.queryParameters.filter = "mailEnabled eq true";
requestConfiguration.queryParameters.search = "\"displayName:OneVideo\"";
requestConfiguration.headers.add("ConsistencyLevel", "eventual");
});
procurar todos os grupos habilitados para email com nomes de exibição que se pareçam com "OneVideo".
Os resultados são restringidos com base em uma conjunção lógica (um “AND”) do parâmetro $filter e na consulta inteira no parâmetro $search.
O número de cláusulas (clause) não é limitado. O uso de parênteses para a precedência também é suportado.
A sintaxe de cada cláusula é: "<property>:<text to search>".
O nome da propriedade deve ser especificado na cláusula. Qualquer propriedade que possa ser usada em $filter também pode ser usada dentro de $search. Dependendo da propriedade, o comportamento de pesquisa será "search" ou "startsWith" se a pesquisa não tiver suporte na propriedade.
A cláusula inteira deve ser declarada entre aspas duplas. Se ele contiver aspas duplas ou barra invertida, ele deverá ser escapado com uma barra invertida. Todos os outros caracteres especiais devem ser codificados em URL.
Operadores lógicos AND e OR devem ser colocados fora das aspas duplas e devem estar em maiúsculas.
Ambas as entradas da cadeia de caracteres fornecidas em $search, bem como as propriedades pesquisáveis, são divididas em partes por espaços, uso de maiúsculas/minúsculas e tipos de caracteres (números e caracteres especiais).
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulte https://aka.ms/ContentUserFeedback.