Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A navegação facetada é usada para filtragem autodirigida nos resultados da consulta em um aplicativo de pesquisa, onde seu aplicativo oferece controles de formulário para definir o escopo da pesquisa para grupos de documentos (por exemplo, categorias ou marcas) e o Azure AI Search fornece as estruturas de dados e filtros para apoiar a experiência.
Neste artigo, aprenda as etapas para retornar uma estrutura de navegação facetada no Azure AI Search. Quando estiver familiarizado com conceitos básicos e clientes, continue a Exemplos de facetas para sintaxe sobre vários casos de uso, incluindo facetas básicas e contagens distintas.
Mais recursos de faceta estão disponíveis por meio de APIs de visualização:
- Estruturas de facetas hierárquicas
- Filtragem de facetas
- Agregações de facetas
Os exemplos de navegação de facetas fornecem a sintaxe e o uso das funcionalidades de pré-visualização.
Navegação facetada numa página de pesquisa
As facetas são dinâmicas porque se baseiam em cada conjunto de resultados de consulta específico. Uma resposta de pesquisa traz consigo todos os grupos de facetas usados para navegar pelos documentos no resultado. A consulta é executada primeiro e, em seguida, as facetas são extraídas dos resultados atuais e montadas em uma estrutura de navegação facetada.
Na Pesquisa de IA do Azure, as facetas têm uma camada de profundidade e não podem ser hierárquicas, a menos que você use a API de visualização. Se você não estiver familiarizado com estruturas de navegação facetadas, o exemplo a seguir mostra uma à esquerda. As contagens indicam o número de correspondências para cada faceta. Um mesmo documento pode ser representado em múltiplas facetas.
As facetas podem ajudá-lo a encontrar o que procura, ao mesmo tempo que garantem que não obtém resultados nulos. Como desenvolvedor, as facetas permitem que você exponha os critérios de pesquisa mais úteis para navegar em seu índice de pesquisa.
Navegação facetada no código
As facetas são habilitadas em campos suportados em um índice e, em seguida, especificadas em uma consulta. A estrutura de navegação facetada é retornada no início da resposta, seguida pelos resultados.
O exemplo REST a seguir é uma consulta vazia ("search": "*"
) que tem como escopo todo o índice (consulte o exemplo de hotéis internos). O facets
parâmetro especifica o campo "Categoria".
POST https://{{service_name}}.search.windows.net/indexes/hotels/docs/search?api-version={{api_version}}
{
"search": "*",
"queryType": "simple",
"select": "",
"searchFields": "",
"filter": "",
"facets": [ "Category"],
"orderby": "",
"count": true
}
A resposta para o exemplo começa com a estrutura de navegação com facetas. A estrutura é composta por valores de "Categoria" e uma contagem dos hotéis para cada um. É seguido pelo resto dos resultados da pesquisa, cortados aqui para apenas um documento para maior brevidade. Este exemplo funciona bem por vários motivos. O número de facetas para este campo está abaixo do limite (o padrão é 10), então todas elas aparecem, e cada hotel no índice de 50 hotéis está representado exatamente em uma dessas categorias.
{
"@odata.context": "https://demo-search-svc.search.windows.net/indexes('hotels')/$metadata#docs(*)",
"@odata.count": 50,
"@search.facets": {
"Category": [
{
"count": 13,
"value": "Budget"
},
{
"count": 12,
"value": "Resort and Spa"
},
{
"count": 9,
"value": "Luxury"
},
{
"count": 7,
"value": "Boutique"
},
{
"count": 5,
"value": "Suite"
},
{
"count": 4,
"value": "Extended-Stay"
}
]
},
"value": [
{
"@search.score": 1.0,
"HotelId": "1",
"HotelName": "Stay-Kay City Hotel",
"Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
"Category": "Boutique",
"Tags": [
"pool",
"air conditioning",
"concierge"
],
"ParkingIncluded": false,
},
. . .
]
}
Ativar facetas em campos
Você pode adicionar facetas a novos campos que contenham texto sem formatação ou conteúdo numérico. Os tipos de dados suportados incluem cadeias de caracteres, datas, campos booleanos e campos numéricos (mas não vetores).
Você pode usar o portal do Azure, APIs REST, SDKs do Azure ou qualquer método que ofereça suporte à criação ou atualização de esquemas de índice no Azure AI Search. Como primeiro passo, identifique quais campos deve usar para facetas.
Escolha quais campos atribuir
As facetas podem ser calculadas sobre campos e coleções de valor único. Os campos que funcionam melhor na navegação facetada têm estas características:
- Conteúdo legível por humanos (não vetorial).
- Baixa cardinalidade (alguns valores distintos que se repetem ao longo dos documentos no seu corpus de pesquisa).
- Valores descritivos curtos (uma ou duas palavras) que se apresentam bem numa árvore de navegação.
Os valores dentro de um campo, e não o nome do campo em si, produzem as facetas em uma estrutura de navegação facetada. Se a faceta for um campo de cadeia de caracteres chamado Cor, as facetas serão azul, verde e qualquer outro valor para esse campo. Revise os valores de campo para garantir que não haja erros de digitação, nulos ou diferenças de invólucro. Considere atribuir um normalizador a um campo filtrável e facetable para suavizar pequenas variações no texto. Por exemplo, "Canadá", "CANADÁ" e "canadá" seriam normalizados para uma única categoria.
Evitar campos sem suporte
Não é possível definir facetas em campos existentes, em campos vetoriais ou campos do tipo Edm.GeographyPoint
ou Collection(Edm.GeographyPoint)
.
Em coleções de campos complexos, "facetable" deve ser null.
Comece com novas definições de campo
Os atributos que afetam a forma como um campo é indexado só podem ser definidos quando os campos são criados. Esta restrição aplica-se a facetas e filtros.
Se o índice já existir, você poderá adicionar uma nova definição de campo que forneça facetas. Os documentos existentes no índice obtêm um valor nulo para o novo campo. Esse valor nulo é substituído na próxima vez que você atualizar o índice.
Na página de serviços de pesquisa do portal do Azure, vá para a guia Campos do índice e selecione Adicionar campo.
Forneça um nome, tipo de dados e atributos. Recomendamos adicionar a opção de filtragem, porque é comum definir filtros com base num conjunto de facetas na resposta. Recomendamos classificável porque os filtros produzem resultados não ordenados e você pode querer classificá-los em seu aplicativo.
Você também pode definir pesquisável se também quiser oferecer suporte à pesquisa de texto completo no campo e recuperável se quiser incluir o campo na resposta da pesquisa.
Salve a definição do campo.
Retornar facetas numa consulta
Lembre-se de que as facetas são calculadas dinamicamente a partir dos resultados de uma resposta de consulta. Você só obtém facetas para documentos encontrados pela consulta atual.
Use o modo de exibição JSON no Gerenciador de Pesquisa para definir parâmetros de faceta no portal do Azure.
- Selecione um índice e abra o Gerenciador de Pesquisa no Modo de Exibição JSON.
- Forneça uma consulta em JSON. Você pode digitá-lo, copiar o JSON de um exemplo REST ou usar intellisense para ajudar com a sintaxe. Consulte o exemplo REST na próxima guia para referência a expressões de faceta.
- Selecione Pesquisar para retornar resultados facetados, articulados em JSON.
Aqui está uma captura de tela do exemplo de consulta de faceta básica no índice de exemplo de hotéis. Você pode colar outros exemplos neste artigo para retornar os resultados no Search Explorer.
Práticas recomendadas para trabalhar com facetas
Esta seção é uma coleção de dicas e soluções alternativas que são úteis para o desenvolvimento de aplicativos.
Recomendamos o C#: Adicionar pesquisa a aplicativos Web para obter um exemplo de navegação facetada que inclui código para a camada de apresentação. O exemplo também inclui filtros, sugestões e preenchimento automático. Ele usa JavaScript e React para a camada de apresentação.
Inicializar uma estrutura de navegação facetada com uma cadeia de pesquisa vazia ou não qualificada
É útil inicializar uma página de pesquisa com uma consulta aberta ("search": "*"
) para preencher completamente a estrutura de navegação facetada. Assim que você passa os termos de consulta na solicitação, a estrutura de navegação facetada tem como escopo apenas as correspondências nos resultados, em vez de todo o índice. Essa prática é útil para verificar comportamentos de faceta e filtro durante o teste. Ao incluir critérios de correspondência na consulta, a resposta excluirá documentos que não coincidam, o que pode ter a consequência posterior de excluir facetas.
Facetas claras
Ao projetar a experiência do usuário, lembre-se de adicionar um mecanismo para limpar facetas. Uma abordagem comum para limpar facetas é emitir uma consulta aberta para redefinir a página.
Desative a facetagem para economizar armazenamento e melhorar o desempenho
Para otimização de desempenho e armazenamento, defina "facetable": false
para campos que nunca devem ser usados como faceta. Os exemplos incluem campos de cadeia de caracteres para valores exclusivos, como um ID ou nome de produto, para evitar seu uso acidental (e ineficaz) na navegação facetada. Essa prática recomendada é especialmente importante para a API REST, que habilita filtros e facetas em campos de cadeia de caracteres por padrão.
Lembre-se de que não é possível usar Edm.GeographyPoint
campos ou Collection(Edm.GeographyPoint)
na navegação facetada. Lembre-se de que as facetas funcionam melhor em campos com baixa cardinalidade. Devido à forma como as coordenadas geográficas se resolvem, é raro que dois conjuntos de coordenadas sejam iguais em um determinado conjunto de dados. Como tal, as facetas não são suportadas para coordenadas geográficas. Você deve usar um campo de cidade ou região para facetar por local.
Verificar se há dados incorretos
Ao preparar os dados para indexação, verifique os campos para valores nulos, erros ortográficos ou discrepâncias de maiúsculas e minúsculas e versões únicas e plurais da mesma palavra. Por padrão, filtros e facetas não passam por análise lexical ou verificação ortográfica, o que significa que todos os valores de um campo "facetable" são facetas potenciais, mesmo que as palavras difiram por um caractere.
Os normalizadores podem reduzir as discrepâncias nos dados, corrigindo diferenças de capitalização e de caracteres. Caso contrário, para inspecionar seus dados, você pode verificar os campos na origem ou executar consultas que retornam valores do índice.
Um índice não é o melhor lugar para corrigir valores nulos ou inválidos. Você deve corrigir problemas de dados em sua origem, supondo que seja um banco de dados ou armazenamento persistente, ou em uma etapa de limpeza de dados que você executa antes da indexação.
Ordenar agrupamentos de facetas
Embora você possa classificar dentro de um bucket, não há parâmetros para controlar a ordem dos buckets de facetas na estrutura de navegação como um todo. Se quiser agrupamentos de facetas numa ordem específica, deve fornecê-los no código da aplicação.
Discrepâncias na contagem de facetas
Em determinadas circunstâncias, você pode achar que as contagens de facetas não são totalmente precisas devido à arquitetura de fragmentação. Cada índice de pesquisa é distribuído em vários fragmentos, e cada fragmento relata as N principais facetas com base na contagem de documentos, que são então combinadas em um único resultado. Como são apenas as N principais facetas para cada fragmento, é possível perder ou não contabilizar corretamente os documentos correspondentes na resposta da faceta.
Para garantir a precisão, pode aumentar artificialmente o número:<número> para um valor elevado, forçando o relatório completo de cada fragmento. Você pode especificar "count": "0"
para facetas ilimitadas. Ou, pode-se definir a "contagem" para um valor maior ou igual ao número de valores exclusivos do campo facetado. Por exemplo, ao facetar por um campo de "tamanho" que tem cinco valores únicos, podes configurar "count:5"
para garantir que todas as correspondências sejam representadas na resposta da faceta.
A contrapartida com essa solução alternativa é o aumento da latência da consulta, portanto, use-a somente quando necessário.
Preservar uma estrutura de navegação de facetas de resultados filtrados de forma assíncrona
Na Pesquisa de IA do Azure, as facetas existem apenas para os resultados atuais. No entanto, é um requisito comum da aplicação manter um conjunto estático de facetas para que o utilizador possa navegar de forma inversa, retraçando passos para explorar caminhos alternativos através do conteúdo de pesquisa.
Se você quiser um conjunto estático de facetas ao lado de uma experiência de detalhamento dinâmico, poderá implementá-lo usando duas consultas filtradas: uma com escopo para os resultados, a outra usada para criar uma lista estática de facetas para fins de navegação.
Compensar grandes contagens de facetas através de filtros
Os resultados da pesquisa e os resultados de facetas muito grandes podem ser cortados adicionando filtros. No exemplo a seguir, na consulta para computação em nuvem, 254 itens têm especificação interna como um tipo de conteúdo. Se os resultados forem muito grandes, a adição de filtros pode ajudar os usuários a refinar a consulta adicionando mais critérios.
Os itens não são mutuamente exclusivos. Se um item atender aos critérios de ambos os filtros, ele será contado em cada um deles. Essa duplicação é possível ao fazer facetas em campos Collection(Edm.String)
, que são frequentemente usados para implementar a etiquetagem de documentos.
Search term: "cloud computing"
Content type
Internal specification (254)
Video (10)