Operazioni di indice (API REST Ricerca cognitiva di Azure)

È possibile creare e gestire gli indici in Ricerca cognitiva di Azure servizio tramite semplici richieste HTTP (POST, GET, PUT, DELETE) su una determinata risorsa di indice. Un indice specifica la struttura di un documento di ricerca tramite la raccolta campi dell'indice. I nomi dei campi, i tipi di dati e gli attributi determinano il modo in cui i singoli campi sono configurati, analizzati e usati in fase di query. Ad esempio, gli attributi nel campo determinano se un campo è ricercabile, filtrabile, ordinabile e così via.

Un indice definisce anche altri costrutti, ad esempio i profili di assegnazione dei punteggi per l'ottimizzazione della pertinenza, i suggeritori e gli analizzatori personalizzati.

Esempio

Nell'esempio seguente viene illustrato uno schema di indice che include campi, un suggeritore, un analizzatore personalizzato e un analizzatore del linguaggio. I campi, i suggeritori, gli analizzatori personalizzati e i profili di assegnazione dei punteggi (non visualizzati) sono sezioni nell'indice. Un analizzatore del linguaggio è predefinito e fa riferimento alla definizione del campo.

All'interno dell'insieme campi, un campo deve essere servizio come identificatore del documento di ricerca. Questo campo viene attribuito con "key": true (vedere l'esempio HotelId seguente).

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

Dopo la creazione dell'indice, si caricano i documenti per popolarlo. Per questo passaggio successivo , vedere Aggiungere, Aggiornare o Eliminare documenti .

Operazioni sugli indici

Per tutte le operazioni di indice di ricerca è necessaria una chiave API di amministrazione, inclusa GET.

Vedi anche