Index maken (Azure AI Search REST API)

Een index is de primaire manier om documenten in Azure AI Search te ordenen en te doorzoeken, vergelijkbaar met de manier waarop een tabel records in een database organiseert. Elke index heeft een verzameling documenten die allemaal voldoen aan het indexschema (veldnamen, gegevenstypen en kenmerken), maar indexen bevatten ook aanvullende constructies (suggesties, scoreprofielen en CORS-configuratie) die ander zoekgedrag definiëren.

U kunt POST of PUT gebruiken voor de aanvraag. Voor beide biedt het JSON-document in de aanvraagbody de objectdefinitie.

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

U kunt ook PUT gebruiken en de indexnaam opgeven op de URI.

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

HTTPS is vereist voor alle serviceaanvragen. Als de index niet bestaat, wordt deze gemaakt. Als deze al bestaat, wordt deze bijgewerkt naar de nieuwe definitie.

Als u een index maakt, worden het schema en de metagegevens vastgelegd. Het invullen van de index is een afzonderlijke bewerking. Voor deze stap kunt u een indexeerfunctie gebruiken (zie Indexeerfunctiebewerkingen, beschikbaar voor ondersteunde gegevensbronnen) of documenten toevoegen, bijwerken of verwijderen. De omgekeerde indexen worden gegenereerd wanneer de documenten worden gepost.

Notitie

Het maximum aantal indexen dat u kunt maken, verschilt per prijscategorie. Zie Servicelimieten voor meer informatie.

URI-parameters

Parameter Beschrijving
servicenaam Vereist. Stel deze in op de unieke, door de gebruiker gedefinieerde naam van uw zoekservice.
indexnaam Vereist voor de URI als u PUT gebruikt. De naam moet kleine letters bevatten, beginnen met een letter of cijfer, geen schuine streepjes of punten hebben en minder dan 128 tekens bevatten. Het begin van de naam moet beginnen met een letter of cijfer, maar de rest van de naam kan een willekeurige letter, cijfer, onderstrepingstekens en streepjes bevatten, zolang de onderstrepingstekens en streepjes niet opeenvolgend zijn.
api-versie Vereist. Zie API-versies voor een lijst met ondersteunde versies.

Aanvraagheaders

In de volgende tabel worden de vereiste en optionele aanvraagheaders beschreven.

Velden Description
Content-Type Vereist. Stel dit in op application/json
api-key Optioneel als u Azure-rollen gebruikt en er een Bearer-token is opgegeven voor de aanvraag, anders is een sleutel vereist. Create-aanvragen moeten een api-key header bevatten die is ingesteld op uw beheerderssleutel (in plaats van een querysleutel). Zie Verbinding maken met Azure AI Search met behulp van sleutelverificatie voor meer informatie.

Aanvraagbody

De hoofdtekst van de aanvraag bevat een schemadefinitie, die de lijst met gegevensvelden in documenten bevat die in deze index worden ingevoerd.

De volgende JSON is een weergave op hoog niveau van de belangrijkste onderdelen van de definitie.

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

Aanvraag bevat de volgende eigenschappen:

Eigenschap Beschrijving
naam Vereist. De naam van de index. Een indexnaam mag alleen kleine letters, cijfers of streepjes bevatten, mag niet beginnen of eindigen met streepjes en mag maximaal 128 tekens bevatten.
Velden Vereist. Een verzameling velden die in deze index worden ingevoerd, waaronder naam, gegevenstype en kenmerken waarmee toegestane acties voor dat veld worden gedefinieerd. Gegevenstypen voldoen aan het Entity Data Model (EDM). Zie ondersteunde gegevenstypen voor meer informatie. Er moet één veld in de verzameling zijn dat is opgegeven als het sleutelveld . Het moet een tekenreeksveld zijn. Dit veld vertegenwoordigt de unieke id, ook wel de document-id genoemd, voor elk document dat is opgeslagen met de index. Documentsleutels zijn hoofdlettergevoelig. Een document met de sleutel 'abc' wordt bijvoorbeeld beschouwd als verschillend van een document met de sleutel 'ABC'.
Gelijkenis Optioneel. Voor services die vóór 15 juli 2020 zijn gemaakt, stelt u deze eigenschap in op het gebruik van het bm25-classificatie-algoritme. Geldige waarden zijn onder andere "#Microsoft.Azure.Search.ClassicSimilarity" of "#Microsoft.Azure.Search.BM25Similarity". API-versies die ondersteuning bieden voor deze eigenschap zijn 2020-06-30 en 2019-05-06-Preview. Zie Classificatiealgoritmen in Azure AI Search voor meer informatie.
suggesties Optioneel. Wordt gebruikt voor automatisch aangevulde query's of voorgestelde zoekresultaten, één per index. Het is een gegevensstructuur waarin voorvoegsels voor overeenkomsten worden opgeslagen voor gedeeltelijke query's, zoals automatisch aanvullen en suggesties. Bestaat uit een name en suggestiesbewuste velden die inhoud bieden voor automatisch ingevulde query's en voorgestelde resultaten. searchMode is vereist en altijd ingesteld op analyzingInfixMatching. Hiermee wordt aangegeven dat er overeenkomsten worden uitgevoerd voor elke term in de querytekenreeks.
scoringProfiles Optioneel. Wordt gebruikt voor classificatie van aangepaste zoekscores. Stel in defaultScoringProfile op het gebruik van een aangepast profiel als standaardprofiel, dat wordt aangeroepen wanneer er geen aangepast profiel is opgegeven in de queryreeks. Zie Scoreprofielen toevoegen aan een zoekindex en het voorbeeld in de volgende sectie voor meer informatie over elementen.
analyzers, charFilters, tokenizers, tokenFilters Optioneel. Geef deze secties van de index op als u aangepaste analysefuncties definieert. Deze secties zijn standaard null.
defaultScoringProfile Optioneel. Naam van een aangepast scoreprofiel dat het standaardscoregedrag overschrijft.
corsOptions Optioneel. JavaScript aan de clientzijde kan standaard geen API's aanroepen, omdat de browser alle cross-origin-aanvragen voorkomt. Als u cross-origin-query's naar uw index wilt toestaan, schakelt u CORS (Cross-Origin Resource Sharing) in door het kenmerk corsOptions in te stellen. Om veiligheidsredenen ondersteunen alleen query-API's CORS. De corsOptions sectie bevat:
allowedOrigins
(Vereist) Een door komma's gescheiden lijst met oorsprongen die toegang krijgen tot uw index, waarbij elke oorsprong doorgaans de vorm heeft protocol://< fully-qualified-domain-name>:<port> (hoewel de <poort> vaak wordt weggelaten). Dit betekent dat elke JavaScript-code die vanaf deze origins wordt geleverd, kan worden gebruikt om een query uit te voeren op uw index (ervan uitgaande dat deze de juiste api-keybiedt ). Als u toegang tot alle oorsprongen wilt toestaan, geeft u * op als één item in de allowedOrigins matrix. Dit wordt niet aanbevolen voor productie, maar kan nuttig zijn voor ontwikkeling of foutopsporing.

maxAgeInSeconds (Optioneel) Browsers gebruiken deze waarde om de duur (in seconden) te bepalen voor het cachegeheugen van CORS-voorbereidende antwoorden. Dit moet een niet-negatief geheel getal zijn. Hoe groter deze waarde is, hoe beter de prestaties, maar hoe langer het duurt voordat CORS-beleidswijzigingen van kracht worden. Als dit niet is ingesteld, wordt een standaardduur van 5 minuten gebruikt.
encryptionKey Optioneel. Wordt gebruikt voor het versleutelen van een synoniemtoewijzing, met uw eigen sleutels, beheerd in uw Azure Key Vault. Beschikbaar voor factureerbare zoekservices die zijn gemaakt op of na 01-2019.

Een encryptionKey sectie bevat een door de gebruiker gedefinieerde keyVaultKeyName (vereist), een door het systeem gegenereerde keyVaultKeyVersion (vereist) en een keyVaultUri die de sleutel levert (vereist, ook wel DNS-naam genoemd). Een voorbeeld van een URI kan 'https://my-keyvault-name.vault.azure.net".

U kunt desgewenst opgeven accessCredentials of u geen beheerde systeemidentiteit gebruikt. Eigenschappen van accessCredentials include applicationId (Microsoft Entra ID toepassings-id waaraan toegangsmachtigingen zijn verleend voor uw opgegeven Azure Key Vault) en applicationSecret (verificatiesleutel van de geregistreerde toepassing). Een voorbeeld in de volgende sectie illustreert de syntaxis.

Velddefinities

De volgende kenmerken kunnen worden ingesteld voor een veld bij het maken van een index.

Kenmerk Beschrijving
naam Vereist. Hiermee stelt u de naam van het veld in, dat uniek moet zijn binnen de veldenverzameling van het index- of bovenliggende veld.
type Vereist. Hiermee stelt u het gegevenstype voor het veld in. Velden kunnen eenvoudig of complex zijn. Eenvoudige velden zijn van primitieve typen, zoals Edm.String voor tekst of Edm.Int32 voor gehele getallen. Complexe velden kunnen subvelden bevatten die zelf eenvoudig of complex zijn. Hiermee kunt u objecten en matrices van objecten modelleren, waardoor u de meeste JSON-objectstructuren kunt uploaden naar uw index. Zie Ondersteunde gegevenstypen (Azure AI Search) voor de volledige lijst met ondersteunde typen.
sleutel Vereist. Stel dit kenmerk in op true om aan te geven dat de waarden van een veld documenten in de index uniek identificeren. De maximale lengte van waarden in een sleutelveld is 1024 tekens. Er moet precies één veld op het hoogste niveau in elke index worden gekozen als sleutelveld en het moet van het type Edm.Stringzijn. De standaardwaarde is false voor eenvoudige velden en null voor complexe velden.

Sleutelvelden kunnen worden gebruikt om documenten rechtstreeks op te zoeken en specifieke documenten bij te werken of te verwijderen. De waarden van sleutelvelden worden op een hoofdlettergevoelige manier verwerkt bij het opzoeken of indexeren van documenten. Zie Lookup Document (Azure AI Search REST API) en Add, Update or Delete Documents (Azure AI Search REST API) voor meer informatie.
kan worden opgehaald Geeft aan of het veld kan worden geretourneerd in een zoekresultaat. Stel dit kenmerk false in op als u een veld (bijvoorbeeld marge) wilt gebruiken als filter-, sorteer- of scoremechanisme, maar niet wilt dat het veld zichtbaar is voor de eindgebruiker. Dit kenmerk moet true voor sleutelvelden en voor complexe velden zijn null . Dit kenmerk kan worden gewijzigd in bestaande velden. Het instellen van ophaalbaar op true veroorzaakt geen toename van de opslagvereisten voor indexen. De standaardwaarde is true voor eenvoudige velden en null voor complexe velden.
Doorzoekbare Geeft aan of het veld doorzoekbaar is in volledige tekst en kan worden verwezen in zoekquery's. Dit betekent dat het lexicale analyse zal ondergaan, zoals woordbreking tijdens het indexeren. Als u een doorzoekbaar veld instelt op een waarde zoals 'Zonnige dag', wordt het intern genormaliseerd en opgesplitst in de afzonderlijke tokens 'zonnig' en 'dag'. Hiermee kunt u zoeken in volledige tekst naar deze termen. Velden van het type Edm.String of Collection(Edm.String) kunnen standaard worden doorzocht. Dit kenmerk moet zijn false voor eenvoudige velden van andere niet-tekenreeksgegevenstypen en moet null voor complexe velden zijn.

Een doorzoekbaar veld neemt extra ruimte in uw index in beslag, omdat Azure AI Search de inhoud van deze velden verwerkt en deze in ondersteunende gegevensstructuren ordent voor zoeken. Als u ruimte wilt besparen in uw index en u geen veld wilt opnemen in zoekopdrachten, stelt u doorzoekbaar in op false. Zie Hoe zoeken in volledige tekst werkt in Azure AI Search voor meer informatie.
filterbaar Hiermee wordt aangegeven of het veld moet worden ingeschakeld waarnaar wordt verwezen in $filter query's. Filterbaar verschilt van doorzoekbaar in de manier waarop tekenreeksen worden verwerkt. Velden van het type Edm.String of Collection(Edm.String) die filterbaar zijn, ondergaan geen lexicale analyse, dus vergelijkingen zijn alleen voor exacte overeenkomsten. Als u bijvoorbeeld een dergelijk veld instelt op f 'Zonnige dag', $filter=f eq 'sunny' vindt u geen overeenkomsten, maar $filter=f eq 'Sunny day' wel. Dit kenmerk moet voor complexe velden zijn null . De standaardwaarde is true voor eenvoudige velden en null voor complexe velden. Als u de indexgrootte wilt verkleinen, stelt u dit kenmerk false in op voor velden waarop u niet wilt filteren.
Sorteerbare Hiermee wordt aangegeven of in expressies naar het veld moet worden verwezen $orderby . Standaard sorteert Azure AI Search resultaten op score, maar in veel ervaringen willen gebruikers sorteren op velden in de documenten. Een eenvoudig veld kan alleen worden gesorteerd als het één waarde heeft (het heeft één waarde in het bereik van het bovenliggende document).

Eenvoudige verzamelingsvelden kunnen niet worden gesorteerd, omdat ze meerdere waarden hebben. Eenvoudige subvelden van complexe verzamelingen hebben ook meerdere waarden en kunnen daarom niet worden gesorteerd. Dit geldt voor de complexe verzameling, ongeacht of het een direct bovenliggend veld of een bovenliggend veld is. Complexe velden kunnen niet worden gesorteerd en het sorteerbare kenmerk moet voor dergelijke velden zijn null . De standaardinstelling voor sorteren is true voor eenvoudige velden met één waarde, false voor eenvoudige velden met meerdere waarden en null voor complexe velden.
facetable Hiermee wordt aangegeven of het veld moet worden gebruikt waarnaar wordt verwezen in facetquery's. Wordt meestal gebruikt in een presentatie van zoekresultaten met het aantal treffers per categorie (bijvoorbeeld zoeken naar digitale camera's en hits bekijken op merk, megapixels, prijs, enzovoort). Dit kenmerk moet voor complexe velden zijn null . Velden van het type Edm.GeographyPoint of Collection(Edm.GeographyPoint) kunnen niet facetbaar zijn. De standaardwaarde is true voor alle andere eenvoudige velden. Als u de indexgrootte wilt verkleinen, stelt u dit kenmerk false in op voor velden die u niet facet.
Analyzer Hiermee stelt u de lexicale analyzer in voor het tokeniseren van tekenreeksen tijdens indexerings- en querybewerkingen. Geldige waarden voor deze eigenschap zijn onder andere taalanalyses, ingebouwde analysen en aangepaste analyses. De standaardwaarde is standard.lucene. Dit kenmerk kan alleen worden gebruikt met doorzoekbare tekenreeksvelden en kan niet samen met searchAnalyzer of indexAnalyzer worden ingesteld. Zodra de analyse is gekozen en het veld is gemaakt in de index, kan het niet meer worden gewijzigd voor het veld. Dit moet zijn null voor complexe velden.
searchAnalyzer Stel deze eigenschap in combinatie met indexAnalyzer in om verschillende lexicale analysefuncties voor indexering en query's op te geven. Als u deze eigenschap gebruikt, stelt u analyzer in op null en zorgt u ervoor dat indexAnalyzer is ingesteld op een toegestane waarde. Geldige waarden voor deze eigenschap zijn ingebouwde analysen en aangepaste analyses. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. De zoekanalyse kan worden bijgewerkt voor een bestaand veld, omdat deze alleen tijdens het uitvoeren van query's wordt gebruikt. Dit moet zijn null voor complexe velden.
indexAnalyzer Stel deze eigenschap in combinatie met searchAnalyzer in om verschillende lexicale analysefuncties op te geven voor indexering en query's. Als u deze eigenschap gebruikt, stelt u analyzer in op null en zorgt u ervoor dat searchAnalyzer is ingesteld op een toegestane waarde. Geldige waarden voor deze eigenschap zijn ingebouwde analysen en aangepaste analyses. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. Zodra de indexanalyse is gekozen, kan deze niet meer worden gewijzigd voor het veld. Dit moet zijn null voor complexe velden.
synonymMaps Een lijst met de namen van synoniemen die aan dit veld moeten worden gekoppeld. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. Momenteel wordt slechts één synoniemtoewijzing per veld ondersteund. Als u een synoniemtoewijzing aan een veld toewijst, zorgt u ervoor dat querytermen die op dat veld zijn gericht, tijdens de query worden uitgebreid met behulp van de regels in de synoniementoewijzing. Dit kenmerk kan worden gewijzigd in bestaande velden. null Moet een lege verzameling zijn voor complexe velden.
fields Een lijst met subvelden als dit een veld van het type Edm.ComplexType of Collection(Edm.ComplexType)is. Moet leeg of leeg zijn null voor eenvoudige velden. Zie Complexe gegevenstypen modelleren in Azure AI Search voor meer informatie over hoe en wanneer u subvelden gebruikt.

Notitie

Velden van het type Edm.String die filterbaar, sorteerbaar of facetbaar zijn, kunnen maximaal 32 kilobytes lang zijn. Dit komt doordat waarden van dergelijke velden worden behandeld als één zoekterm en de maximale lengte van een term in Azure AI Search 32 kilobytes is. Als u meer tekst dan dit in één tekenreeksveld wilt opslaan, moet u filterbaar, sorteerbaar en facetbaar false expliciet instellen op in uw indexdefinitie.

Het instellen van een veld als doorzoekbaar, filterbaar, sorteerbaar of facetable heeft invloed op de indexgrootte en queryprestaties. Stel deze kenmerken niet in voor velden waarnaar niet moet worden verwezen in query-expressies.

Als een veld niet is ingesteld als doorzoekbaar, filterbaar, sorteerbaar of facetbaar, kan er in geen enkele query-expressie naar het veld worden verwezen. Dit is handig voor velden die niet worden gebruikt in query's, maar wel nodig zijn in zoekresultaten.

Notitie

Het maximum aantal indexen dat u kunt maken, verschilt per prijscategorie. Zie Servicelimieten voor meer informatie.

Antwoord

Voor een geslaagde aanvraag ziet u statuscode '201 Gemaakt'.

Standaard bevat de antwoordtekst de JSON voor de indexdefinitie. Als de Prefer aanvraagheader echter is ingesteld op return=minimal, is de antwoordtekst leeg en is de successtatuscode '204 Geen inhoud' in plaats van '201 gemaakt'. Dit geldt ongeacht of PUT of POST wordt gebruikt om de index te maken.

Voorbeelden

Voorbeeld: een indexschema

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

Voorbeeld: Suggesties

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

Naar een suggestie wordt verwezen met de naam van queryaanvragen die de SUGGESTIES-API of de API voor automatisch aanvullen bevatten, afhankelijk van of u een overeenkomst of de rest van een queryterm wilt retourneren. Zie Een suggestie maken voor meer informatie over het maken en gebruiken van een suggestie.

Voorbeeld: Gelijkenis voor zoekrelevantie

Met deze eigenschap wordt het classificatie-algoritme ingesteld dat wordt gebruikt om een relevantiescore te maken in zoekresultaten van een zoekopdracht in volledige tekst. In services die zijn gemaakt na 15 juli 2020, wordt deze eigenschap genegeerd omdat het gelijkenis-algoritme altijd BM25 is. Voor bestaande services die vóór 15 juli 2020 zijn gemaakt, kunt u zich aanmelden voor BM25 door deze constructie als volgt in te stellen:

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

Voorbeeld: CORS-opties

JavaScript aan de clientzijde kan standaard geen API's aanroepen, omdat de browser alle cross-origin-aanvragen voorkomt. Als u cross-origin-query's naar uw index wilt toestaan, schakelt u CORS (Cross-origin resource sharing (Wikipedia)) in door het corsOptions kenmerk in te stellen. Om veiligheidsredenen ondersteunen alleen query-API's 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)  
     }
}

Voorbeeld: Versleutelingssleutels

Versleutelingssleutels zijn door de klant beheerde sleutels die worden gebruikt voor aanvullende versleuteling. Zie Versleuteling met door de klant beheerde sleutels in Azure Key Vault voor meer informatie.

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

Voorbeeld: Scoreprofielen

Een scoreprofiel is een sectie van het schema waarin aangepast scoregedrag wordt gedefinieerd waarmee u kunt bepalen welke documenten hoger in de zoekresultaten worden weergegeven. Scoreprofielen bestaan uit veldgewichten en -functies. Als u deze wilt gebruiken, geeft u een profiel op met de naam in de querytekenreeks. Zie Scoreprofielen toevoegen aan een zoekindex voor meer informatie.

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

Voorbeeld: Synoniemenkaarten

Nadat u synoniementoewijzing hebt gemaakt in uw zoekservice, kunt u deze toewijzen aan searchable velden van het type Edm.String of Collection(Edm.String) in een index. In de onderstaande indexdefinitie wordt het veld 'genre' geconfigureerd voor gebruik van de synoniemtoewijzing 'mysynonymmap'.

U kunt Index bijwerken gebruiken om deze eigenschap toe te voegen aan een bestaand veld. Een veldeigenschap synonymMaps geeft de kaart op (één per veld). U kunt de synonymMaps eigenschappen van bestaande velden op elk gewenst moment bijwerken.

Voer op de gebruikelijke wijze een query uit met termen of woordgroepen (tussen aanhalingstekens). In Azure AI Search moeten tweedelige termen, zoals 'hot tub', worden uitgedrukt als een woordgroep, anders wordt elke term onafhankelijk geëvalueerd. Als u een query uitvoert op 'hot tub', scant de zoekmachine op die zin en op eventuele synoniemen die u hebt gedefinieerd, zoals jacuzzi.

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

Zie ook