Criar índice (API REST do Azure AI Search)

Um índice é o principal meio de organizar e pesquisar documentos no Azure AI Search, semelhante a como uma tabela organiza registros em um banco de dados. Cada índice tem uma coleção de documentos que estão em conformidade com o esquema de índice (nomes de campo, tipos de dados e atributos), mas os índices também especificam constructos adicionais (sugestores, perfis de pontuação e configuração cors) que definem outros comportamentos de pesquisa.

Você pode usar POST ou PUT na solicitação. Para qualquer um deles, o documento JSON no corpo da solicitação fornece a definição de objeto.

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

Como alternativa, você pode usar 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]

HTTPS é necessário para todas as solicitações de serviço. Se o índice não existir, ele será criado. Se ele já existir, ele será atualizado para a nova definição.

Criar um índice estabelece o esquema e os metadados. Popular o índice é uma operação separada. Para esta etapa, você pode usar um indexador (consulte Operações do indexador, disponíveis para fontes de dados com suporte) ou adicionar , atualizar ou excluir documentos. Os índices invertidos são gerados quando os documentos são postados.

Observação

O número máximo de índices que você pode criar varia de acordo com a faixa de preços. Para saber mais, confira Limites do serviço.

Parâmetros de URI

Parâmetro Descrição
nome do serviço Obrigatórios. Defina isso como o nome exclusivo definido pelo usuário do serviço de pesquisa.
nome do índice Necessário no URI se estiver usando PUT. O nome deve ser minúsculo, começar com uma letra ou número, não ter barras ou pontos e ter menos de 128 caracteres. O início do nome deve começar com uma letra ou número, mas o restante do nome pode incluir qualquer letra, número, sublinhados e traços, desde que os sublinhados e traços não sejam consecutivos.
api-version Obrigatórios. Consulte versões de API para obter uma lista de versões com suporte.

Cabeçalhos de solicitação

A tabela a seguir descreve os cabeçalhos de solicitação necessários e opcionais

Campos Descrição
Tipo de conteúdo Obrigatórios. Defina-o como application/json
chave de API Opcional se você estiver usando funções do Azure e um token de portador for fornecido na solicitação, caso contrário, uma chave será necessária. As solicitações de criação devem incluir um api-key cabeçalho definido como sua chave de administrador (em vez de uma chave de consulta). Confira Conectar-se ao Azure AI Search usando a autenticação de chave para obter detalhes.

Corpo da solicitação

O corpo da solicitação contém uma definição de esquema, que inclui a lista de campos de dados em documentos que serão inseridos nesse índice.

O JSON a seguir é uma representação de alto nível das partes main 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) { }  
}  

A contém as seguintes propriedades:

Propriedade Descrição
name Obrigatórios. O nome do índice. Um nome de índice deve conter apenas letras minúsculas, dígitos ou traços, não pode iniciar ou terminar com traços e é limitado a 128 caracteres.
campos Obrigatórios. Uma coleção de campos que serão alimentados nesse índice, incluindo nome, tipo de dados e atributos que definem ações permitidas nesse campo. Os tipos de dados estão em conformidade com o EDM (Modelo de Dados de Entidade). Para obter mais informações, confira Tipos de dados com suporte. Deve haver um campo na coleção especificado como o campo de chave . Ele deve ser um campo de cadeia de caracteres. Esse campo representa o identificador exclusivo, às vezes chamado de ID do documento, para cada documento armazenado com o índice. As chaves do documento diferenciam maiúsculas de minúsculas. Por exemplo, um documento com a chave "abc" é considerado distinto de um documento com a chave "ABC".
similaridade Opcional. Para serviços criados antes de 15 de julho de 2020, defina essa propriedade para usar o algoritmo de classificação BM25. Os valores válidos incluem "#Microsoft.Azure.Search.ClassicSimilarity" ou "#Microsoft.Azure.Search.BM25Similarity". As versões de API que dão suporte a essa propriedade incluem 2020-06-30 e 2019-05-06-Preview. Para obter mais informações, consulte Classificação de algoritmos no Azure AI Search.
sugestores Opcional. Usado para consultas autocompletadas ou resultados de pesquisa sugeridos, um por índice. É uma estrutura de dados que armazena prefixos para correspondência em consultas parciais, como preenchimento automático e sugestões. Consiste em campos name com reconhecimento de sugestão e que fornecem conteúdo para consultas autocompletadas e resultados sugeridos. searchMode é necessário e sempre definido como analyzingInfixMatching. Ele especifica que a correspondência ocorrerá em qualquer termo na cadeia de caracteres de consulta.
scoreProfiles Opcional. Usado para classificação de pontuação de pesquisa personalizada. Defina defaultScoringProfile para usar um perfil personalizado como o padrão, invocado sempre que um perfil personalizado não for especificado na cadeia de caracteres de consulta. Para obter mais informações sobre elementos, consulte Adicionar perfis de pontuação a um índice de pesquisa e o exemplo na próxima seção.
analisadores, charFilters, tokenizers, tokenFilters Opcional. Especifique estas seções do índice se você estiver definindo analisadores personalizados. Por padrão, essas seções são nulas.
defaultScoringProfile Opcional. Nome de um perfil de pontuação personalizado que substitui os comportamentos de pontuação padrão.
corsOptions Opcional. O JavaScript do lado do cliente não pode chamar nenhuma APIs por padrão, pois o navegador impedirá todas as solicitações entre origens. Para permitir ao índice as consultas entre origens, habilite o CORS (Compartilhamento de Recursos entre Origens) definindo o atributo corsOptions. Por motivos de segurança, apenas APIs de consulta dão suporte para CORS. A corsOptions seção inclui:
allowedOrigins
(Obrigatório) Uma lista delimitada por vírgulas de origens que receberá acesso ao índice, em que cada origem normalmente é do formulário protocol://< fully-qualified-domain-name>:<port> (embora a <porta> seja frequentemente omitida). Isso significa que qualquer código de JavaScript exibido a partir dessas origens terá permissão para consultar o índice (supondo que ele forneça a api-key correta). Se você quiser permitir o acesso a todas as origens, especifique * como um único item na allowedOrigins matriz. Isso não é recomendado para produção, mas pode ser útil para desenvolvimento ou depuração.

maxAgeInSeconds (Opcional) Os navegadores usam esse valor para determinar a duração (em segundos) para armazenar em cache as respostas de pré-vôo cors. Esse deve ser um inteiro não negativo. Quanto maior for esse valor, melhor será o desempenho, porém, mais tempo levará para que as alterações de política CORS entrem em vigor. Se não estiver definido, uma duração padrão de 5 minutos será usada.
encryptionKey Opcional. Usado para criptografar um mapa de sinônimos, com suas próprias chaves, gerenciado no Key Vault do Azure. Disponível para serviços de pesquisa faturáveis criados em ou após 01-01/2019.

Uma encryptionKey seção contém um definido keyVaultKeyName pelo usuário (obrigatório), um gerado pelo keyVaultKeyVersion sistema (obrigatório) e um keyVaultUri que fornece a chave (necessária, também conhecida como nome DNS). Um exemplo de URI pode ser "https://my-keyvault-name.vault.azure.net".

Opcionalmente, você pode especificar accessCredentials se não está usando uma identidade do sistema gerenciado. Propriedades de accessCredentials include applicationId (Microsoft Entra ID ID do aplicativo que recebeu permissões de acesso para o Key Vault do Azure especificado) e applicationSecret (chave de autenticação do aplicativo registrado). Um exemplo na próxima seção ilustra a sintaxe.

Definições de campo

Os atributos a seguir podem ser definidos em um campo ao criar um índice.

Atributo Descrição
name Obrigatórios. Define o nome do campo, que deve ser exclusivo na coleção de campos do campo de índice ou pai.
type Obrigatórios. Define o tipo de dados do campo. Os campos podem ser simples ou complexos. Campos simples são de tipos primitivos, como Edm.String para texto ou Edm.Int32 para inteiros. Campos complexos podem ter subcampos que são simples ou complexos. Isso permite modelar objetos e matrizes de objetos, o que, por sua vez, permite carregar a maioria das estruturas de objeto JSON no índice. Consulte Tipos de dados com suporte (Pesquisa de IA do Azure) para obter a lista completa de tipos com suporte.
chave Obrigatórios. Defina esse atributo como true para designar que os valores de um campo identifiquem documentos exclusivamente no índice. O comprimento máximo de valores em um campo de chave é de 1024 caracteres. Exatamente um campo de nível superior em cada índice deve ser escolhido como o campo de chave e deve ser do tipo Edm.String. O padrão é false para campos simples e null para campos complexos.

Os campos de chave podem ser usados para pesquisar documentos diretamente e atualizar ou excluir documentos específicos. Os valores dos campos de chave são tratados de maneira que diferencia maiúsculas de minúsculas ao pesquisar ou indexar documentos. Consulte Documento de Pesquisa (API REST da Pesquisa de IA do Azure) e Adicionar, Atualizar ou Excluir Documentos (API REST da Pesquisa de IA do Azure) para obter detalhes.
retrievable Indica se o campo pode ser retornado em um resultado de pesquisa. Defina esse atributo false como se você quiser usar um campo (por exemplo, margem) como um filtro, classificação ou mecanismo de pontuação, mas não quiser que o campo fique visível para o usuário final. Esse atributo deve ser true para campos de chave e deve ser null para campos complexos. Esse atributo pode ser alterado em campos existentes. A configuração recuperável como true não causa nenhum aumento nos requisitos de armazenamento de índice. O padrão é true para campos simples e null para campos complexos.
searchable Indica se o campo é pesquisável em texto completo e pode ser referenciado em consultas de pesquisa. Isso significa que ele passará por uma análise lexical , como quebra de palavras durante a indexação. Se você definir um campo pesquisável para um valor como "Dia ensolarado", internamente ele será normalizado e dividido nos tokens individuais "ensolarado" e "dia". Isso habilita pesquisas de texto completo para esses termos. Campos do tipo Edm.String ou Collection(Edm.String) são pesquisáveis por padrão. Esse atributo deve ser false para campos simples de outros tipos de dados que não são de cadeia de caracteres e deve ser null para campos complexos.

Um campo pesquisável consome espaço extra em seu índice, pois o Azure AI Search processará o conteúdo desses campos e os organizará em estruturas de dados auxiliares para pesquisa de desempenho. Se você quiser economizar espaço em seu índice e não precisar que um campo seja incluído nas pesquisas, defina pesquisável como false. Confira Como funciona a pesquisa de texto completo na Pesquisa de IA do Azure para obter detalhes.
filterable Indica se o campo deve ser referenciado em $filter consultas. Filterable difere do pesquisável em como as cadeias de caracteres são tratadas. Campos do tipo Edm.String ou Collection(Edm.String) que são filtres não passam por análise lexical, portanto, as comparações são apenas para correspondências exatas. Por exemplo, se você definir esse campo f como "Dia ensolarado", $filter=f eq 'sunny' não encontrará correspondências, mas $filter=f eq 'Sunny day' o fará. Esse atributo deve ser null para campos complexos. O padrão é true para campos simples e null para campos complexos. Para reduzir o tamanho do índice, defina esse atributo como false em campos nos quais você não filtrará.
sortable Indica se o campo deve ser referenciado em $orderby expressões. Por padrão, o Azure AI Search classifica os resultados por pontuação, mas em muitas experiências os usuários desejarão classificar por campos nos documentos. Um campo simples só poderá ser classificado se for de valor único (ele tem um único valor no escopo do documento pai).

Campos de coleção simples não podem ser classificados, pois são de vários valores. Subcampos simples de coleções complexas também são de vários valores e, portanto, não podem ser classificados. Isso é verdade se é um campo pai imediato ou um campo ancestral, que é a coleção complexa. Campos complexos não podem ser classificáveis e o atributo classificável deve ser null para esses campos. O padrão para classificável é true para campos simples de valor único, false para campos simples com valores múltiplos e null para campos complexos.
facetable Indica se o campo deve ser referenciado em consultas de faceta. Normalmente usado em uma apresentação de resultados de pesquisa que inclui contagem de ocorrências por categoria (por exemplo, pesquise câmeras digitais e veja ocorrências por marca, por megapixels, por preço e assim por diante). Esse atributo deve ser null para campos complexos. Campos do tipo Edm.GeographyPoint ou Collection(Edm.GeographyPoint) não podem ser facetas. O padrão é true para todos os outros campos simples. Para reduzir o tamanho do índice, defina esse atributo como false em campos nos quais você não estará enfrentando.
Analyzer Define o analisador lexical para tokenizar cadeias de caracteres durante operações de indexação e consulta. Os valores válidos para essa propriedade incluem analisadores de linguagem, analisadores internos e analisadores personalizados. O padrão é standard.lucene. Esse atributo só pode ser usado com campos de cadeia de caracteres pesquisáveis e não pode ser definido junto com searchAnalyzer ou indexAnalyzer. Depois que o analisador é escolhido e o campo é criado no índice, ele não pode ser alterado para o campo. Deve ser null para campos complexos.
searchAnalyzer Defina essa propriedade em conjunto com indexAnalyzer para especificar diferentes analisadores léxicos para indexação e consultas. Se você usar essa propriedade, defina o analisador como null e verifique se indexAnalyzer está definido como um valor permitido. Os valores válidos para essa propriedade incluem analisadores internos e analisadores personalizados. Esse atributo só pode ser usado com campos pesquisáveis. O analisador de pesquisa pode ser atualizado em um campo existente, pois ele só é usado em tempo de consulta. Deve ser null para campos complexos.
indexAnalyzer Defina essa propriedade em conjunto com searchAnalyzer para especificar diferentes analisadores léxicos para indexação e consultas. Se você usar essa propriedade, defina analyzer como null e verifique se searchAnalyzer está definido como um valor permitido. Os valores válidos para essa propriedade incluem analisadores internos e analisadores personalizados. Esse atributo só pode ser usado com campos pesquisáveis. Depois que o analisador de índice for escolhido, ele não poderá ser alterado para o campo. Deve ser null para campos complexos.
synonymMaps Uma lista dos nomes dos mapas de sinônimos a serem associados a esse campo. Esse atributo só pode ser usado com campos pesquisáveis. Atualmente, há suporte para apenas um mapa de sinônimos por campo. Atribuir um mapa de sinônimos a um campo garante que os termos de consulta direcionados a esse campo sejam expandidos em tempo de consulta usando as regras no mapa de sinônimos. Esse atributo pode ser alterado em campos existentes. Deve ser null ou uma coleção vazia para campos complexos.
fields Uma lista de subcampos se este for um campo do tipo Edm.ComplexType ou Collection(Edm.ComplexType). Deve ser null ou vazio para campos simples. Confira Como modelar tipos de dados complexos na Pesquisa de IA do Azure para obter mais informações sobre como e quando usar subcampos.

Observação

Os campos do tipo Edm.String que são filtráveis, classificáveis ou facetáveis podem ter no máximo 32 quilobytes de comprimento. Isso ocorre porque os valores desses campos são tratados como um único termo de pesquisa e o comprimento máximo de um termo no Azure AI Search é de 32 quilobytes. Se você precisar armazenar mais texto do que isso em um único campo de cadeia de caracteres, precisará definir explicitamente filtre, classificável e facetável como false em sua definição de índice.

Definir um campo como pesquisável, filtráveis, classificáveis ou facetas tem um impacto no tamanho do índice e no desempenho da consulta. Não defina esses atributos em campos que não devem ser referenciados em expressões de consulta.

Se um campo não estiver definido como pesquisável, filtráveis, classificáveis ou facetas, o campo não poderá ser referenciado em nenhuma expressão de consulta. Isso é útil para campos que não são usados em consultas, mas são necessários nos resultados da pesquisa.

Observação

O número máximo de índices que você pode criar varia de acordo com o tipo de preço. Para saber mais, confira Limites do serviço.

Resposta

Para uma solicitação bem-sucedida, você deverá ver o código de status “201 (Criado)”.

Por padrão, o corpo da resposta contém o JSON para a definição de índice. No entanto, se o cabeçalho da Prefer solicitação estiver definido return=minimalcomo , o corpo da resposta estará vazio e o êxito status código será "204 Sem Conteúdo" em vez de "201 Criado". Isso é verdadeiro independentemente de a operação PUT ou POST ser usada 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 sugestor é referenciado por nome em solicitações de consulta que incluem a API de Sugestões ou a API de Preenchimento Automático, dependendo se você deseja retornar uma correspondência ou o restante de um termo de consulta. Para obter mais informações sobre como criar e usar um sugestor, consulte Criar um sugestor.

Exemplo: similaridade para relevância de pesquisa

Essa propriedade define o algoritmo de classificação usado para criar uma pontuaçã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, essa propriedade é ignorada porque o algoritmo de similaridade é sempre BM25. Para serviços existentes criados antes de 15 de julho de 2020, você pode aceitar o BM25 definindo esse constructo da seguinte maneira:

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

Exemplo: opções de CORS

O JavaScript do lado do cliente não pode chamar nenhuma APIs por padrão, pois o navegador impedirá todas as solicitações entre origens. Para permitir consultas entre origens ao índice, habilite o CORS (compartilhamento de recursos entre origens (Wikipédia)) definindo o corsOptions atributo . Por motivos de segurança, apenas APIs de consulta dão suporte para 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 criptografia

As chaves de criptografia são chaves gerenciadas pelo cliente usadas para criptografia adicional. Para obter mais informações, consulte Criptografia usando chaves gerenciadas 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 Pontuação

Um perfil de pontuação é uma seção do esquema que define comportamentos de pontuação personalizados que permitem influenciar quais documentos aparecem mais alto nos resultados da pesquisa. Perfis de pontuação são compostos de funções e pesos de campos. Para usá-las, você pode especificar um perfil por nome na sequência de consulta. Para obter mais informações, consulte Adicionar perfis de pontuaçã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 em seu serviço de pesquisa, você pode atribuí-lo a searchable campos do tipo Edm.String ou Collection(Edm.String) em um índice. A definição de índice abaixo configura o campo "gênero" para usar o mapa de sinônimos 'mysynonymmap'.

Você pode usar Atualizar Índice para adicionar essa propriedade a um campo existente. Uma propriedade synonymMaps de campo especifica o mapa (um por campo). Você pode atualizar as propriedades dos campos existentes a synonymMaps qualquer momento.

Consulte como de costume, usando termos ou frases (entre aspas). No Azure AI Search, termos de duas partes, como "banheira de hidromassagem", devem ser expressos como uma frase, caso contrário, cada termo é avaliado de forma independente. Se você consultar "banheira de hidromassagem", o mecanismo de pesquisa verificará essa frase, bem como quaisquer sinônimos que você definiu, como jacuzzi.

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

Confira também