Share via


Creare indice (API REST ricerca intelligenza artificiale di Azure)

Un indice è il mezzo principale per organizzare e cercare documenti in Ricerca intelligenza artificiale di Azure, analogamente a come una tabella organizza i record in un database. Ogni indice include una raccolta di documenti che sono tutti conformi allo schema di indice (nomi di campo, tipi di dati e attributi), ma gli indici specificano anche costrutti aggiuntivi (suggerisci, profili di assegnazione dei punteggi e configurazione CORS) che definiscono altri comportamenti di ricerca.

È possibile usare POST o PUT nella richiesta. Per uno, il documento JSON nel corpo della richiesta fornisce la definizione dell'oggetto.

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

In alternativa, è possibile usare PUT e specificare il nome dell'indice nell'URI.

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

Per tutte le richieste del servizio, è necessario usare il protocollo HTTPS. Se l'indice non esiste, viene creato. Se esiste già, viene aggiornato alla nuova definizione.

Con la creazione di un indice vengono definiti lo schema e i metadati. Il popolamento dell'indice è un'operazione separata. Per questo passaggio, è possibile usare un indicizzatore (vedere Operazioni dell'indicizzatore, disponibili per le origini dati supportate) o aggiungi, aggiornare o eliminare documenti. Gli indici invertita vengono generati quando vengono pubblicati i documenti.

Nota

Il numero massimo di indici che è possibile creare varia in base al piano tariffario. Per altre informazioni, vedere Limiti del servizio.

Parametri dell'URI

Parametro Descrizione
nome servizio Obbligatorio. Impostare questo valore sul nome univoco definito dall'utente del servizio di ricerca.
nome indice Obbligatorio nell'URI se si usa PUT. Il nome deve essere minuscolo, iniziare con una lettera o un numero, non avere barre o punti e essere inferiore a 128 caratteri. L'inizio del nome deve iniziare con una lettera o un numero, ma il resto del nome può includere qualsiasi lettera, numero, caratteri di sottolineatura e trattini, purché i trattini e i caratteri di sottolineatura non siano consecutivi.
api-version Obbligatorio. Per un elenco di versioni supportate, vedere Versioni API .

Intestazioni richiesta

La tabella seguente descrive le intestazioni della richiesta obbligatorie e facoltative.

Campi Descrizione
Content-Type Obbligatorio. Impostare il valore su application/json
api-key Facoltativo se si usano ruoli di Azure e viene fornito un token di connessione nella richiesta, altrimenti è necessaria una chiave. Le richieste di creazione devono includere un api-key set di intestazioni sulla chiave di amministrazione , anziché una chiave di query. Per informazioni dettagliate, vedere Connettersi a Ricerca intelligenza artificiale di Azure usando l'autenticazione delle chiavi .

Corpo della richiesta

Il corpo della richiesta contiene una definizione di schema che include l'elenco dei campi dati all'interno dei documenti che verranno inseriti nell'indice.

Il codice JSON seguente è una rappresentazione generale delle parti principali della definizione.

{  
  "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) { }  
}  

La richiesta contiene le proprietà seguenti:

Proprietà Descrizione
name Obbligatorio. Nome dell'indice. Un nome di indice deve contenere solo lettere minuscole, cifre o trattini, non può iniziare o terminare con trattini ed è limitato a 128 caratteri.
campi Obbligatorio. Raccolta di campi che verranno inseriti in questo indice, tra cui nome, tipo di dati e attributi che definiscono azioni consentite in tale campo. I tipi di dati sono conformi al modello di dati entity (EDM). Per altre informazioni, vedere Tipi di dati supportati. Deve essere presente un campo nell'insieme specificato come campo chiave . e tale campo deve essere di tipo stringa. Questo campo rappresenta l'identificatore univoco, talvolta denominato ID documento, per ogni documento archiviato con l'indice. Le chiavi del documento sono distinzione tra maiuscole e minuscole. Ad esempio, un documento con la chiave "abc" viene considerato distinto da un documento con la chiave "ABC".
somiglianza facoltativo. Per i servizi creati prima del 15 luglio 2020, impostare questa proprietà per usare l'algoritmo di classificazione BM25. I valori validi sono "#Microsoft.Azure.Search.ClassicSimilarity" o "#Microsoft.Azure.Search.BM25Similarity". Le versioni API che supportano questa proprietà includono 2020-06-30 e 2019-05-06-Preview. Per altre informazioni, vedere Classificazione degli algoritmi in Ricerca intelligenza artificiale di Azure.
suggeritori facoltativo. Usato per le query completate automaticamente o i risultati di ricerca suggeriti, uno per indice. Si tratta di una struttura di dati che archivia i prefissi per la corrispondenza nelle query parziali, ad esempio il completamento automatico e i suggerimenti. È costituito da campi consapevoli di un name e suggeritore che forniscono contenuto per le query completate automaticamente e i risultati suggeriti. searchMode è obbligatorio e sempre impostato su analyzingInfixMatching. Specifica che la corrispondenza si verificherà in qualsiasi termine nella stringa di query.
assegnazione dei punteggiProfile facoltativo. Usato per la classificazione del punteggio di ricerca personalizzato. Impostare defaultScoringProfile per usare un profilo personalizzato come impostazione predefinita, richiamato ogni volta che un profilo personalizzato non è specificato nella stringa di query. Per altre informazioni sugli elementi, vedere Aggiungere profili di punteggio a un indice di ricerca e l'esempio nella sezione successiva.
analizzatori, charFilters, tokenizer, tokenFilters facoltativo. Specificare queste sezioni dell'indice se si definiscono analizzatori personalizzati. Per impostazione predefinita, queste sezioni sono Null.
defaultScoringProfile facoltativo. Nome di un profilo di assegnazione dei punteggi personalizzato che sovrascrive i comportamenti di assegnazione dei punteggi predefiniti.
corsOptions facoltativo. JavaScript lato client non può chiamare alcuna API per impostazione predefinita poiché il browser impedirà tutte le richieste tra origini. Per consentire query con origini diverse nell'indice, abilitare CORS (Cross-Origin Resource Sharing) impostando l'attributo corsOptions. Per motivi di sicurezza, solo le API di query supportano CORS. La corsOptions sezione include:
allowedOrigins
(Obbligatorio) Elenco delimitato da virgole di origini che verranno concesse all'indice, dove ogni origine è in genere del modulo protocol://< qualificata-nome-dominio>:<port> (anche se la <porta> viene spesso omessa). Questo significa che al codice JavaScript servito da queste origini sarà consentito eseguire query sull'indice (presupponendo che venga fornito il valore api-key corretto). Se si vuole consentire l'accesso a tutte le origini, specificare * come singolo elemento della allowedOrigins matrice. Non è consigliabile per la produzione, ma potrebbe essere utile per lo sviluppo o il debug.

maxAgeInSeconds (Facoltativo) I browser usano questo valore per determinare la durata (in secondi) per memorizzare nella cache le risposte preliminare CORS. Questo valore deve essere un intero non negativo. A un valore più grande corrispondono prestazioni migliori, ma deve trascorrere più tempo prima che le modifiche dei criteri CORS diventino effettive. Se non è impostato, verrà usata una durata predefinita di 5 minuti.
EncryptionKey facoltativo. Usato per crittografare una mappa sinonimo, con chiavi personalizzate, gestite nell'Key Vault di Azure. Disponibile per i servizi di ricerca fatturabili creati in o dopo il 2019-01-01.

Una encryptionKey sezione contiene un oggetto definito keyVaultKeyName dall'utente (obbligatorio), un sistema generato keyVaultKeyVersion dal sistema (obbligatorio) e una keyVaultUri chiave (richiesta, definita anche come nome DNS). Un URI di esempio potrebbe essere "https://my-keyvault-name.vault.azure.net".

Facoltativamente, è possibile specificare accessCredentials se non si usa un'identità del sistema gestita. Proprietà di inclusione applicationId (Microsoft Entra ID ID applicazione che è stato concesso le autorizzazioni di accesso all'Key Vault di Azure specificato) e applicationSecret (chiave di accessCredentials autenticazione dell'applicazione registrata). Un esempio nella sezione successiva illustra la sintassi.

Definizioni di campo

Gli attributi seguenti possono essere impostati in un campo durante la creazione di un indice.

Attributo Descrizione
name Obbligatorio. Imposta il nome del campo, che deve essere univoco all'interno dell'insieme campi del campo indice o padre.
tipo Obbligatorio. Imposta il tipo di dati per il campo. I campi possono essere semplici o complessi. I campi semplici sono di tipi primitivi, ad esempio Edm.String per il testo o Edm.Int32 per gli interi. I campi complessi possono avere campi secondari che si trovano in sé semplici o complessi. Ciò consente di modellare oggetti e matrici di oggetti, che a sua volta consentono di caricare la maggior parte delle strutture di oggetti JSON nell'indice. Per l'elenco completo dei tipi di tipi supportati, vedere Tipi di dati supportati (Ricerca intelligenza artificiale di Azure).
Key Obbligatorio. Impostare questo attributo su true per designare che i valori di un campo identificano in modo univoco i documenti nell'indice. La lunghezza massima dei valori in un campo chiave è di 1024 caratteri. È necessario scegliere esattamente un campo di primo livello in ogni indice come campo chiave e deve essere di tipo Edm.String. Il valore predefinito è false per i campi semplici e null per i campi complessi.

I campi chiave possono essere usati per cercare i documenti direttamente ed aggiornare o eliminare documenti specifici. I valori dei campi chiave vengono gestiti in modo distinzione tra maiuscole e minuscole durante la ricerca o l'indicizzazione dei documenti. Per informazioni dettagliate, vedere Documento di ricerca (API REST ricerca intelligenza artificiale di Azure) e Aggiungi, Aggiornare o eliminare documenti (API REST ricerca intelligenza artificiale di Azure).
retrievable Indica se il campo può essere restituito in un risultato di ricerca. Impostare questo attributo su false se si vuole usare un campo (ad esempio, margine) come filtro, ordinamento o meccanismo di assegnazione dei punteggi, ma non si vuole che il campo sia visibile all'utente finale. Questo attributo deve essere per i campi chiave e deve essere truenull per campi complessi. Questo attributo può essere modificato nei campi esistenti. L'impostazione di recuperabile su true non causa un aumento dei requisiti di archiviazione dell'indice. Il valore predefinito è true per i campi semplici e null per i campi complessi.
searchable Indica se il campo è ricercabile full-text e può essere fatto riferimento nelle query di ricerca. Ciò significa che verrà eseguita un'analisi lexicale , ad esempio l'interruzione delle parole durante l'indicizzazione. Se si imposta un campo ricercabile su un valore simile a "Sunny day", verrà normalizzato e suddiviso in singoli token "sunny" e "day". È così possibile eseguire ricerche full-text di questi termini. I campi di tipo Edm.String o Collection(Edm.String) sono ricercabili per impostazione predefinita. Questo attributo deve essere false per i campi semplici di altri tipi di dati non stringa e deve essere null per campi complessi.

Un campo ricercabile usa spazio aggiuntivo nell'indice poiché Ricerca intelligenza artificiale di Azure elabora il contenuto di tali campi e li organizza in strutture di dati ausiliarie per la ricerca efficiente. Se si vuole risparmiare spazio nell'indice e non è necessario includere un campo nelle ricerche, impostare ricercabile su false. Per informazioni dettagliate, vedere Funzionamento della ricerca full-text in Ricerca intelligenza artificiale di Azure .
filterable Indica se abilitare il campo a cui fare riferimento nelle $filter query. Il filtro è diverso dal modo in cui vengono gestite le stringhe. I campi di tipo Edm.String o Collection(Edm.String) che sono filtrabili non subiscono analisi lessicali, quindi i confronti sono solo per corrispondenze esatte. Ad esempio, se si imposta un campo di questo tipo f su "Sunny day", $filter=f eq 'sunny' non troverà corrispondenze, ma $filter=f eq 'Sunny day' lo farà. Questo attributo deve essere null per campi complessi. Il valore predefinito è true per i campi semplici e null per i campi complessi. Per ridurre le dimensioni dell'indice, impostare questo attributo su false su campi in cui non verrà eseguito il filtro.
sortable Indica se abilitare il campo a cui fare riferimento nelle $orderby espressioni. Per impostazione predefinita, Ricerca intelligenza artificiale di Azure ordina i risultati per punteggio, ma in molte esperienze gli utenti vogliono ordinare in base ai campi nei documenti. Un campo semplice può essere ordinabile solo se è a valore singolo (ha un singolo valore nell'ambito del documento padre).

I campi di raccolta semplici non possono essere ordinabili, poiché sono multivalore. I campi secondari semplici delle raccolte complesse sono anche multivalore e pertanto non possono essere ordinati. Questo è vero se si tratta di un campo padre immediato o di un campo predecessore, ovvero la raccolta complessa. I campi complessi non possono essere ordinabili e l'attributo ordinabile deve essere null per tali campi. Il valore predefinito per l'ordinamento è true per i campi semplici con valore singolo, false per i campi semplici con più valori e null per i campi complessi.
facetable Indica se abilitare il campo a cui fare riferimento nelle query facet. In genere usato in una presentazione dei risultati della ricerca che includono il numero di hit per categoria (ad esempio, cercare fotocamere digitali e vedere le hit per marchio, da megalie, per prezzo e così via). Questo attributo deve essere null per campi complessi. I campi di tipo Edm.GeographyPoint o Collection(Edm.GeographyPoint) non possono essere visibili. Il valore predefinito è true per tutti gli altri campi semplici. Per ridurre le dimensioni dell'indice, impostare questo attributo su false su campi in cui non verrà eseguito il facet.
Analyzer Imposta l'analizzatore lessicale per l'indicizzazione delle stringhe durante le operazioni di indicizzazione e query. I valori validi per questa proprietà includono analizzatori del linguaggio, analizzatori predefiniti e analizzatoripersonalizzati. Il valore predefinito è standard.lucene. Questo attributo può essere usato solo con campi stringa ricercabili e non può essere impostato insieme a searchAnalyzer o indexAnalyzer. Dopo aver scelto l'analizzatore e il campo viene creato nell'indice, non può essere modificato per il campo. Deve essere null per campi complessi.
searchAnalyzer Impostare questa proprietà insieme a indexAnalyzer per specificare diversi analizzatori lessicali per l'indicizzazione e le query. Se si usa questa proprietà, impostare analizzatore su null e assicurarsi che indexAnalyzer sia impostato su un valore consentito. I valori validi per questa proprietà includono analizzatori predefiniti e analizzatori personalizzati. Questo attributo può essere usato solo con campi ricercabili. L'analizzatore di ricerca può essere aggiornato in un campo esistente perché viene usato solo in fase di query. Deve essere null per campi complessi.
indexAnalyzer Impostare questa proprietà insieme a searchAnalyzer per specificare diversi analizzatori lessicali per l'indicizzazione e le query. Se si usa questa proprietà, impostare analizzatore su null e assicurarsi che searchAnalyzer sia impostato su un valore consentito. I valori validi per questa proprietà includono analizzatori predefiniti e analizzatori personalizzati. Questo attributo può essere usato solo con campi ricercabili. Dopo aver scelto l'analizzatore di indici, non può essere modificato per il campo. Deve essere null per campi complessi.
sinonimoMaps Elenco dei nomi delle mappe sinonimi da associare a questo campo. Questo attributo può essere usato solo con campi ricercabili. Attualmente è supportata solo una mappa sinonimo per campo. L'assegnazione di un mapping sinonimo a un campo garantisce che i termini di query destinati al campo vengano espansi in fase di query usando le regole nella mappa sinonimia. Questo attributo può essere modificato nei campi esistenti. Deve essere null o una raccolta vuota per campi complessi.
fields Elenco di campi secondari se si tratta di un campo di tipo Edm.ComplexType o Collection(Edm.ComplexType). Deve essere null o vuoto per i campi semplici. Per altre informazioni su come usare i campi secondari, vedere Come modellare tipi di dati complessi in Ricerca intelligenza artificiale di Azure .

Nota

I campi di tipo Edm.String filtrabili, ordinabili o visobili possono essere al massimo 32 kilobyte di lunghezza. Questo è dovuto al fatto che i valori di tali campi vengono considerati come un singolo termine di ricerca e la lunghezza massima di un termine in Ricerca intelligenza artificiale di Azure è di 32 kilobyte. Se è necessario archiviare più testo di questo in un singolo campo stringa, è necessario impostare in modo esplicito filtrabili, ordinabili e visobili false nella definizione dell'indice.

L'impostazione di un campo come ricercabile, filtrabile, ordinabile o facetable ha un impatto sulle dimensioni dell'indice e sulle prestazioni delle query. Non impostare tali attributi nei campi a cui non si intende fare riferimento nelle espressioni di query.

Se un campo non è impostato per essere ricercabile, filtrabile, ordinabile o facetable, il campo non può essere fatto riferimento in alcuna espressione di query. Ciò è utile per i campi che non vengono usati nelle query, ma sono necessari nei risultati della ricerca.

Nota

Il numero massimo di indici che è possibile creare varia in base al piano tariffario. Per altre informazioni, vedere Limiti del servizio.

Risposta

In caso di richiesta eseguita correttamente, viene visualizzato il codice di stato "201 - Creato".

Per impostazione predefinita, il corpo della risposta contiene il codice JSON per la definizione dell'indice. Tuttavia, se l'intestazione della richiesta è impostata su return=minimal, il corpo della risposta è vuoto e il codice di stato dell'esito Prefer positivo è "204 Nessun contenuto" anziché "201 Creato". Questo vale indipendentemente dal fatto che sia stato usato il metodo PUT o POST per creare l'indice.

Esempio

Esempio: uno schema di indice

{
  "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"
    }
  ]
}  

Esempio: Suggeritori

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

Un suggerimento viene fatto riferimento per nome alle richieste di query che includono l'API Suggerimenti o l'API Completamento automatico, a seconda che si voglia restituire una corrispondenza o il resto di un termine di query. Per altre informazioni sulla creazione e l'uso di un suggerimento, vedere Creare un suggerimento.

Esempio: somiglianza per la pertinenza della ricerca

Questa proprietà imposta l'algoritmo di classificazione usato per creare un punteggio di pertinenza nei risultati della ricerca di una query di ricerca full-text. Nei servizi creati dopo il 15 luglio 2020 questa proprietà viene ignorata perché l'algoritmo di somiglianza è sempre BM25. Per i servizi esistenti creati prima del 15 luglio 2020, è possibile acconsentire esplicitamente a BM25 impostando questo costrutto come indicato di seguito:

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

Esempio: Opzioni CORS

JavaScript lato client non può chiamare alcuna API per impostazione predefinita poiché il browser impedirà tutte le richieste tra origini. Per consentire query tra origini all'indice, abilitare CORS (Cross-origin resource sharing (Wikipedia)) impostando l'attributo corsOptions . Per motivi di sicurezza, solo le API di query supportano 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)  
     }
}

Esempio: Chiavi di crittografia

Le chiavi di crittografia sono chiavi gestite dal cliente usate per una crittografia aggiuntiva. Per altre informazioni, vedere Crittografia con chiavi gestite dal cliente in 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)"}
      }
} 

Esempio: Profili di assegnazione dei punteggi

Un profilo di assegnazione dei punteggi è una sezione dello schema che definisce comportamenti di assegnazione dei punteggi personalizzati che consentono di influenzare i documenti visualizzati più in alto nei risultati della ricerca. I profili di punteggio sono costituiti da funzioni e campi ponderati. Per utilizzarli, è necessario specificare il nome di un profilo nella stringa di query. Per altre informazioni, vedere Aggiungere profili di punteggio a un indice di ricerca per informazioni dettagliate.

{
   "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"  
       }  
 ]
}

Esempio: Mappe sinonimi

Dopo aver creato la mappa sinonimo nel servizio di ricerca, è possibile assegnarla ai searchable campi di tipo Edm.String o Collection(Edm.String) in un indice. La definizione dell'indice seguente configura il campo "genere" per usare la mappa sinonimo 'mysynonymmap'.

È possibile usare Update Index per aggiungere questa proprietà a un campo esistente. Una proprietà synonymMaps campo specifica la mappa (una per campo). È possibile aggiornare le synonymMaps proprietà dei campi esistenti in qualsiasi momento.

Eseguire una query come di consueto usando termini o frasi (racchiuse tra virgolette). In Ricerca intelligenza artificiale di Azure, i termini in due parti, ad esempio "vasca calda", devono essere espressi come frase, altrimenti ogni termine viene valutato in modo indipendente. Se si esegue una query su "vasca calda", il motore di ricerca eseguirà l'analisi di tale frase e di tutti i sinonimi definiti, ad esempio l'idromassaggio.

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

Vedi anche