Criar Índice (API REST da Pesquisa de IA do Azure)

Um índice é o principal meio de organizar e pesquisar documentos na Pesquisa de IA do Azure, semelhante à forma como uma tabela organiza registos numa base de dados. Cada índice tem uma coleção de documentos em conformidade com o esquema de índice (nomes de campos, tipos de dados e atributos), mas os índices também especificam construções adicionais (sugestores, perfis de classificação e configuração CORS) que definem outros comportamentos de pesquisa.

Pode utilizar POST ou PUT no pedido. Para qualquer um deles, o documento JSON no corpo do pedido fornece a definição do objeto.

POST https://[servicename].search.windows.net/indexes?api-version=[api-version]  
  Content-Type: application/json
  api-key: [admin key]  

Em alternativa, pode utilizar PUT e especificar o nome do índice no URI.

PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
  Content-Type: application/json
  api-key: [admin key]

O HTTPS é necessário para todos os pedidos de serviço. Se o índice não existir, será criado. Se já existir, será atualizado para a nova definição.

A criação de um índice estabelece o esquema e os metadados. Preencher o índice é uma operação separada. Para este passo, pode utilizar um indexador (veja Operações do indexador, disponíveis para origens de dados suportadas) ou Adicionar, Atualizar ou Eliminar Documentos. Os índices invertidos são gerados quando os documentos são publicados.

Nota

O número máximo de índices que pode criar varia de acordo com o escalão de preço. Para obter mais informações, veja Limites de serviço.

Parâmetros do URI

Parâmetro Description
nome do serviço Obrigatório. Defina-o como o nome exclusivo definido pelo utilizador do seu serviço de pesquisa.
nome do índice Necessário no URI se estiver a utilizar PUT. O nome tem de ser minúsculo, começar com uma letra ou número, não ter barras ou pontos e ter menos de 128 carateres. O início do nome tem de começar com uma letra ou número, mas o resto do nome pode incluir qualquer letra, número, carateres de sublinhado e travessões, desde que os carateres de sublinhado e os traços não sejam consecutivos.
api-version Obrigatório. Veja Versões da API para obter uma lista de versões suportadas.

Cabeçalhos de Pedido

A tabela seguinte descreve os cabeçalhos de pedido obrigatórios e opcionais.

Campos Description
Content-Type Obrigatório. Defina esta opção como application/json
api-key Opcional se estiver a utilizar funções do Azure e for fornecido um token de portador no pedido, caso contrário, é necessária uma chave. A opção Criar pedidos tem de incluir um api-key cabeçalho definido para a chave de administrador (em oposição a uma chave de consulta). Veja Connect to Azure AI Search using key authentication (Ligar à Pesquisa de IA do Azure com a autenticação de chaves ) para obter detalhes.

Corpo do Pedido

O corpo do pedido contém uma definição de esquema, que inclui a lista de campos de dados dentro de documentos que serão inseridos neste índice.

O seguinte JSON é uma representação de alto nível das partes principais da definição.

{  
  "name": (optional on PUT; required on POST) "Name of the index",  
  "fields": [  
    {  
      "name": "name_of_field",  
      "type": "Edm.String | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint | Edm.ComplexType | Collection(Edm.String) | Collection(Edm.Int32) | Collection(Edm.Int64) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",  
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),  
      "filterable": true (default) | false,  
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),  
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),  
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "retrievable": true (default) | false,  
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "synonymMaps": [ "name_of_synonym_map" ] (optional, only one synonym map per field is currently supported),
      "fields" : [ ... ] (optional, a list of sub-fields if this is a field of type Edm.ComplexType or Collection(Edm.ComplexType). Must be null or empty for simple fields.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "analyzers":(optional) [ ... ],
  "charFilters":(optional) [ ... ],
  "tokenizers":(optional) [ ... ],
  "tokenFilters":(optional) [ ... ],
  "defaultScoringProfile": (optional) "Name of a custom scoring profile to use as the default",  
  "corsOptions": (optional) { },
  "encryptionKey":(optional) { }  
}  

O pedido contém as seguintes propriedades:

Propriedade Descrição
name Obrigatório. O nome do índice. Um nome de índice só tem de conter letras minúsculas, dígitos ou travessões, não pode iniciar ou terminar com travessões e está limitado a 128 carateres.
campos Obrigatório. Uma coleção de campos que serão inseridos neste índice, incluindo nome, tipo de dados e atributos que definem ações permitidos nesse campo. Os tipos de dados estão em conformidade com o Modelo de Dados de Entidade (EDM). Para obter mais informações, veja Tipos de dados suportados. Tem de existir um campo na coleção especificado como o campo de chave . Tem de ser um campo de cadeia. Este campo representa o identificador exclusivo, por vezes denominado ID do documento, para cada documento armazenado com o índice. As chaves do documento são sensíveis às maiúsculas e minúsculas. Por exemplo, um documento com a chave "abc" é considerado distinto de um documento com a chave "ABC".
semelhança Opcional. Para serviços criados antes de 15 de julho de 2020, defina esta propriedade para utilizar o algoritmo de classificação BM25. Os valores válidos incluem "#Microsoft.Azure.Search.ClassicSimilarity" ou "#Microsoft.Azure.Search.BM25Similarity". As versões da API que suportam esta propriedade incluem 2020-06-30 e 2019-05-06-Preview. Para obter mais informações, veja Classificar algoritmos na Pesquisa de IA do Azure.
sugestores Opcional. Utilizado para consultas de conclusão automática ou resultados de pesquisa sugeridos, um por índice. É uma estrutura de dados que armazena prefixos para correspondência em consultas parciais, como conclusão automática e sugestões. Consiste em campos name com suporte para sugestões e que fornecem conteúdo para consultas de conclusão automática e resultados sugeridos. searchMode é necessário e está sempre definido como analyzingInfixMatching. Especifica que a correspondência ocorrerá em qualquer termo na cadeia de consulta.
scoreProfiles Opcional. Utilizado para classificação de classificação de pesquisa personalizada. Defina defaultScoringProfile para utilizar um perfil personalizado como predefinição, invocado sempre que não for especificado um perfil personalizado na cadeia de consulta. Para obter mais informações sobre elementos, veja Adicionar perfis de classificação a um índice de pesquisa e o exemplo na secção seguinte.
analisadores, charFilters, tokenizers, tokenFilters Opcional. Especifique estas secções do índice se estiver a definir analisadores personalizados. Por predefinição, estas secções são nulas.
defaultScoringProfile Opcional. Nome de um perfil de classificação personalizado que substitui os comportamentos de classificação predefinidos.
corsOptions Opcional. O JavaScript do lado do cliente não pode chamar nenhuma APIs por predefinição, uma vez que o browser irá impedir todos os pedidos de várias origens. Para permitir consultas entre origens ao seu índice, ative o CORS (Partilha de Recursos Transversais à Origem) ao definir o atributo corsOptions. Por motivos de segurança, apenas as APIs de consulta suportam CORS. A corsOptions secção inclui:allowedOrigins

(Obrigatório) Uma lista delimitada por vírgulas de origens que terá acesso ao seu índice, em que cada origem é normalmente do formulário protocol://< fully-qualified-domain-name>:<port> (embora a <porta> seja frequentemente omitida). Isto significa que qualquer código JavaScript servido a partir dessas origens terá permissão para consultar o índice (partindo do princípio de que fornece o ).api-key Se quiser permitir o acesso a todas as origens, especifique * como um único item na allowedOrigins matriz. Isto não é recomendado para produção, mas pode ser útil para desenvolvimento ou depuração.

maxAgeInSeconds (Opcional) Os browsers utilizam este valor para determinar a duração (em segundos) para colocar em cache as respostas de verificação prévia CORS. Tem de ser um número inteiro não negativo. Quanto maior for este valor, melhor será o desempenho, mas quanto mais tempo demorar a que as alterações da política CORS entrem em vigor. Se não estiver definido, será utilizada uma duração predefinida de 5 minutos.
encryptionKey Opcional. Utilizado para encriptar um mapa de sinónimos, com as suas próprias chaves, gerido no seu Key Vault do Azure. Disponível para serviços de pesquisa faturáveis criados em ou depois de 2019-01-01.

Uma encryptionKey secção contém uma definição do keyVaultKeyName utilizador (necessária), uma gerada pelo keyVaultKeyVersion sistema (necessária) e uma keyVaultUri chave fornecida (necessária, também referida como nome DNS). Um URI de exemplo pode ser "https://my-keyvault-name.vault.azure.net".

Opcionalmente, pode especificar accessCredentials se não está a utilizar uma identidade de sistema gerida. Propriedades de accessCredentials include applicationId (Microsoft Entra ID ID da aplicação a quem foram concedidas permissões de acesso ao seu Key Vault do Azure especificado) e applicationSecret (chave de autenticação da aplicação registada). Um exemplo na secção seguinte ilustra a sintaxe.

Definições de campo

Os seguintes atributos podem ser definidos num campo ao criar um índice.

Atributo Descrição
name Obrigatório. Define o nome do campo, que tem de ser exclusivo na coleção de campos do campo principal ou índice.
tipo Obrigatório. Define o tipo de dados para o campo. Os campos podem ser simples ou complexos. Os campos simples são de tipos primitivos, como Edm.String para texto ou Edm.Int32 para números inteiros. Os campos complexos podem ter sub-campos que são, por si só, simples ou complexos. Isto permite-lhe modelar objetos e matrizes de objetos, o que, por sua vez, lhe permite carregar a maioria das estruturas de objetos JSON para o índice. Veja Tipos de dados suportados (Azure AI Search) para obter a lista completa de tipos suportados.
key Obrigatório. Defina este atributo como verdadeiro para designar que os valores de um campo identificam exclusivamente documentos no índice. O comprimento máximo dos valores num campo de chave é de 1024 carateres. Exatamente um campo de nível superior em cada índice tem de ser escolhido como o campo chave e tem de ser do tipo Edm.String. A predefinição é false para campos simples e null para campos complexos.

Os campos-chave podem ser utilizados para procurar documentos diretamente e atualizar ou eliminar documentos específicos. Os valores dos campos-chave são processados de forma sensível às maiúsculas e minúsculas ao procurar ou indexar documentos. Veja Documento de Pesquisa (API REST da Pesquisa de IA do Azure) e Adicionar, Atualizar ou Eliminar Documentos (API REST de Pesquisa de IA do Azure) para obter detalhes.
recuperável Indica se o campo pode ser devolvido num resultado de pesquisa. Defina este atributo como false se pretender utilizar um campo (por exemplo, margem) como um mecanismo de filtragem, ordenação ou classificação, mas não quer que o campo seja visível para o utilizador final. Este atributo tem de ser true para campos chave e tem de ser null para campos complexos. Este atributo pode ser alterado em campos existentes. Definir o recuperável para true não causa qualquer aumento nos requisitos de armazenamento de índices. A predefinição é true para campos simples e null para campos complexos.
pesquisável Indica se o campo é pesquisável em texto completo e pode ser referenciado em consultas de pesquisa. Isto significa que será submetido a uma análise lexical , como quebra de palavras durante a indexação. Se definir um campo pesquisável para um valor como "Dia ensolarado", será normalizado internamente e dividido nos tokens individuais "ensolarado" e "dia". Isto permite pesquisas em texto completo para estes termos. Os campos do tipo Edm.String ou Collection(Edm.String) são pesquisáveis por predefinição. Este atributo tem de ser false para campos simples de outros tipos de dados não de cadeia e tem de ser null para campos complexos.

Um campo pesquisável consome espaço extra no índice, uma vez que o Azure AI Search irá processar os conteúdos desses campos e organizá-los em estruturas de dados auxiliares para uma pesquisa eficaz. Se quiser poupar espaço no índice e não precisar que um campo seja incluído nas pesquisas, defina pesquisável como false. Veja Como funciona a pesquisa em texto completo na Pesquisa de IA do Azure para obter detalhes.
filtráveis Indica se pretende ativar o campo para ser referenciado em $filter consultas. Filtráveis difere do pesquisável na forma como as cadeias são processadas. Os campos do tipo Edm.String ou Collection(Edm.String) que são filtráveis não são submetidos a análise lexical, pelo que as comparações destinam-se apenas a correspondências exatas. Por exemplo, se definir esse campo f como "Dia ensolarado", $filter=f eq 'sunny' não encontrará correspondências, mas $filter=f eq 'Sunny day' irá. Este atributo tem de ser null para campos complexos. A predefinição é true para campos simples e null para campos complexos. Para reduzir o tamanho do índice, defina este atributo como false em campos nos quais não estará a filtrar.
sortable Indica se pretende ativar o campo para ser referenciado em $orderby expressões. Por predefinição, a Pesquisa de IA do Azure ordena os resultados por classificação, mas em muitas experiências os utilizadores vão querer ordenar por campos nos documentos. Um campo simples só pode ser ordenado se for de valor único (tem um único valor no âmbito do documento principal).

Os campos de coleção simples não podem ser ordenados, uma vez que são de valores múltiplos. Os sub-campos simples de coleções complexas também têm valores múltiplos e, por conseguinte, não podem ser ordenados. Isto é verdade, quer seja um campo principal imediato, ou um campo ancestral, essa é a coleção complexa. Os campos complexos não podem ser ordenados e o atributo sortível tem de ser null para esses campos. A predefinição para o sortable é true para campos simples de valor único, false para campos simples de valores múltiplos e null para campos complexos.
facetável Indica se pretende ativar o campo para ser referenciado em consultas facetas. Normalmente utilizado numa apresentação de resultados de pesquisa que inclui a contagem de resultados por categoria (por exemplo, procure câmaras digitais e veja acessos por marca, por megapixéis, por preço e assim por diante). Este atributo tem de ser null para campos complexos. Campos do tipo Edm.GeographyPoint ou Collection(Edm.GeographyPoint) não podem ser facetáveis. A predefinição é true para todos os outros campos simples. Para reduzir o tamanho do índice, defina este atributo como false em campos nos quais não se irá deparar.
analisador Define o analisador lexical para tokenizar cadeias durante as operações de indexação e consulta. Os valores válidos para esta propriedade incluem analisadores de idiomas, analisadores incorporados e analisadores personalizados. A predefinição é standard.lucene. Este atributo só pode ser utilizado com campos de cadeia pesquisáveis e não pode ser definido em conjunto com searchAnalyzer ou indexAnalyzer. Assim que o analisador for escolhido e o campo for criado no índice, não poderá ser alterado para o campo. Tem de ser null para campos complexos.
searchAnalyzer Defina esta propriedade em conjunto com indexAnalyzer para especificar diferentes analisadores lexical para indexação e consultas. Se utilizar esta propriedade, defina o analisador como null e certifique-se de que indexAnalyzer está definido como um valor permitido. Os valores válidos para esta propriedade incluem analisadores incorporados e analisadores personalizados. Este atributo só pode ser utilizado com campos pesquisáveis. O analisador de pesquisa pode ser atualizado num campo existente, uma vez que só é utilizado no momento da consulta. Tem de ser null para campos complexos.
indexAnalyzer Defina esta propriedade em conjunto com searchAnalyzer para especificar diferentes analisadores lexical para indexação e consultas. Se utilizar esta propriedade, defina o analisador como null e certifique-se de que searchAnalyzer está definido como um valor permitido. Os valores válidos para esta propriedade incluem analisadores incorporados e analisadores personalizados. Este atributo só pode ser utilizado com campos pesquisáveis. Uma vez escolhido o analisador de índices, este não pode ser alterado para o campo. Tem de ser null para campos complexos.
sinónimoMaps Uma lista dos nomes dos mapas de sinónimos a associar a este campo. Este atributo só pode ser utilizado com campos pesquisáveis. Atualmente, apenas é suportado um mapa de sinónimos por campo. Atribuir um mapa de sinónimos a um campo garante que os termos de consulta direcionados para esse campo são expandidos no momento da consulta com as regras no mapa de sinónimos. Este atributo pode ser alterado em campos existentes. Tem de ser null ou uma coleção vazia para campos complexos.
fields Uma lista de sub-campos se este for um campo do tipo Edm.ComplexType ou Collection(Edm.ComplexType). Tem de estar null ou vazio para campos simples. Veja Como modelar tipos de dados complexos no Azure AI Search para obter mais informações sobre como e quando utilizar sub campos.

Nota

Os campos do tipo Edm.String que são filtráveis, ordenáveis ou facetáveis podem ter, no máximo, 32 quilobytes de comprimento. Isto deve-se ao facto de os valores desses campos serem tratados como um termo de pesquisa único e o comprimento máximo de um termo no Azure AI Search ser de 32 quilobytes. Se precisar de armazenar mais texto do que este num único campo de cadeia, terá de definir explicitamente filtráveis, ordenáveis e facetáveis para false na definição do índice.

Definir um campo como pesquisável, filtrável, ordenável ou facetável tem um impacto no tamanho do índice e no desempenho das consultas. Não defina esses atributos em campos que não se destinam a ser referenciados em expressões de consulta.

Se um campo não estiver definido como pesquisável, filtráveis, ordenáveis ou facetáveis, o campo não pode ser referenciado em nenhuma expressão de consulta. Isto é útil para campos que não são utilizados em consultas, mas que são necessários nos resultados da pesquisa.

Nota

O número máximo de índices que pode criar varia consondo o escalão de preço. Para obter mais informações, veja Limites de serviço.

Resposta

Para um pedido com êxito, deverá ver o código de estado "201 Criado".

Por predefinição, o corpo da resposta contém o JSON para a definição de índice. No entanto, se o cabeçalho do Prefer pedido estiver definido como return=minimal, o corpo da resposta está vazio e o código de estado de êxito é "204 Sem Conteúdo" em vez de "201 Criado". Isto é verdade independentemente de PUT ou POST ser utilizado para criar o índice.

Exemplos

Exemplo: um esquema de índice

{
  "name": "hotels",  
  "fields": [
    { "name": "HotelId", "type": "Edm.String", "key": true, "filterable": true },
    { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": true, "facetable": false },
    { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
    { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
    { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
    { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "sortable": false, "facetable": true, "analyzer": "tagsAnalyzer" },
    { "name": "ParkingIncluded", "type": "Edm.Boolean", "filterable": true, "sortable": true, "facetable": true },
    { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },
    { "name": "Address", "type": "Edm.ComplexType", 
      "fields": [
          { "name": "StreetAddress", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false, "searchable": true },
          { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true },
          { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "sortable": true, "facetable": true }
        ]
    },
    { "name": "Location", "type": "Edm.GeographyPoint", "filterable": true, "sortable": true },
    { "name": "Rooms", "type": "Collection(Edm.ComplexType)", 
      "fields": [
          { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "en.lucene" },
          { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false, "analyzer": "fr.lucene" },
          { "name": "Type", "type": "Edm.String", "searchable": true },
          { "name": "BaseRate", "type": "Edm.Double", "filterable": true, "facetable": true },
          { "name": "BedOptions", "type": "Edm.String", "searchable": true },
          { "name": "SleepsCount", "type": "Edm.Int32", "filterable": true, "facetable": true },
          { "name": "SmokingAllowed", "type": "Edm.Boolean", "filterable": true, "facetable": true },
          { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "facetable": true, "analyzer": "tagsAnalyzer" }
        ]
    }
  ],
  "suggesters": [
      { "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ]
}  

Exemplo: Sugestores

 "suggesters": [  
   {  
     "name": "name of suggester",  
     "searchMode": "analyzingInfixMatching",  
     "sourceFields": ["field1", "field2", ...]  
   }  
 ]

Um sugeridor é referenciado por nome em pedidos de consulta que incluem a API de Sugestões ou a API de Conclusão Automática, dependendo se pretende devolver uma correspondência ou o resto de um termo de consulta. Para obter mais informações sobre como criar e utilizar um sugeridor, consulte Criar um sugeridor.

Exemplo: Semelhança para a relevância da pesquisa

Esta propriedade define o algoritmo de classificação utilizado para criar uma classificação de relevância nos resultados da pesquisa de uma consulta de pesquisa de texto completo. Nos serviços criados após 15 de julho de 2020, esta propriedade é ignorada porque o algoritmo de semelhança é sempre BM25. Para serviços existentes criados antes de 15 de julho de 2020, pode optar ativamente por participar no BM25 ao definir esta construção da seguinte forma:

 "similarity": {
     "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
 }

Exemplo: Opções CORS

O JavaScript do lado do cliente não pode chamar nenhuma APIs por predefinição, uma vez que o browser irá impedir todos os pedidos de origem cruzada. Para permitir consultas entre origens ao índice, ative o CORS (Partilha de recursos de várias origens (Wikipédia)) ao definir o corsOptions atributo. Por motivos de segurança, apenas as APIs de consulta suportam CORS.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "corsOptions": (optional) {  
       "allowedOrigins": ["*"] | ["https://docs.microsoft.com:80", "https://azure.microsoft.com:80", ...],  
       "maxAgeInSeconds": (optional) max_age_in_seconds (non-negative integer)  
     }
}

Exemplo: Chaves de encriptação

As chaves de encriptação são chaves geridas pelo cliente utilizadas para encriptação adicional. Para obter mais informações, veja Encriptação com chaves geridas pelo cliente no Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity],
    "suggesters": [ omitted for brevity  ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
      "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
      "keyVaultKeyVersion": "Version of the Azure Key Vault key",
      "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
      "accessCredentials": (optional, only if not using managed system identity) {
        "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
        "applicationSecret": "Authentication key of the specified AAD application)"}
      }
} 

Exemplo: Perfis de Classificação

Um perfil de classificação é uma secção do esquema que define comportamentos de classificação personalizados que lhe permitem influenciar os documentos que aparecem mais alto nos resultados da pesquisa. Os perfis de classificação são compostos por pesos e funções de campo. Para utilizá-los, especifique um perfil por nome na cadeia de consulta. Para obter mais informações, veja Adicionar perfis de classificação a um índice de pesquisa para obter detalhes.

{
   "name": "hotels",  
   "fields": [ omitted for brevity],
   "suggesters": [ omitted for brevity  ],
   "analyzers": [ omitted for brevity ],
   "scoringProfiles": [  
   {  
     "name": "name of scoring profile",  
     "text": (optional, only applies to searchable fields) {  
       "weights": {  
         "searchable_field_name": relative_weight_value (positive #'s),  
         ...  
       }  
     },  
     "functions": (optional) [  
       {  
         "type": "magnitude | freshness | distance | tag",  
         "boost": # (positive number used as multiplier for raw score != 1),  
         "fieldName": "...",  
         "interpolation": "constant | linear (default) | quadratic | logarithmic",  
         "magnitude": {  
           "boostingRangeStart": #,  
           "boostingRangeEnd": #,  
           "constantBoostBeyondRange": true | false (default)  
         },  
         "freshness": {  
           "boostingDuration": "..." (value representing timespan leading to now over which boosting occurs)  
         },  
         "distance": {  
           "referencePointParameter": "...", (parameter to be passed in queries to use as reference location)  
           "boostingDistance": # (the distance in kilometers from the reference location where the boosting range ends)  
         },  
         "tag": {  
           "tagsParameter": "..." (parameter to be passed in queries to specify a list of tags to compare against target fields)  
         }  
       }  
     ],  
     "functionAggregation": (optional, applies only when functions are specified)   
       "sum (default) | average | minimum | maximum | firstMatching"  
       }  
 ]
}

Exemplo: Mapas de sinónimos

Depois de criar um mapa de sinónimos no seu serviço de pesquisa, pode atribuí-lo a searchable campos do tipo Edm.String ou Collection(Edm.String) num índice. A definição de índice abaixo configura o campo "género" para utilizar o mapa de sinónimos "mysynonymmap".

Pode utilizar o Índice de Atualização para adicionar esta propriedade a um campo existente. Uma propriedade synonymMaps de campo especifica o mapa (um por campo). Pode atualizar as synonymMaps propriedades dos campos existentes em qualquer altura.

Consulte como habitualmente, utilizando termos ou expressões (entre aspas). No Azure AI Search, os termos em duas partes, como "banheira de hidromassagem", têm de ser expressos como uma expressão, caso contrário, cada termo é avaliado de forma independente. Se consultar "banheira de hidromassagem", o motor de busca procurará essa expressão, bem como quaisquer sinónimos que tenha definido, como o jacuzzi.

POST /indexes?api-version=2020-06-30
{
    "name":"myindex",
    "fields":[
    ...
        {
            "name":"genre",
            "type":"Edm.String",
            "searchable":true,
            "analyzer":"en.lucene",
            "synonymMaps": [
                "mysynonymmap"
            ]
        }
    ]
    ...
}

Ver também