Skapa index (REST API för Azure AI Search)
Ett index är det primära sättet att organisera och söka i dokument i Azure AI Search, ungefär som när en tabell organiserar poster i en databas. Varje index har en samling dokument som alla överensstämmer med indexschemat (fältnamn, datatyper och attribut), men index anger även ytterligare konstruktioner (förslagsgivare, bedömningsprofiler och CORS-konfiguration) som definierar andra sökbeteenden.
Du kan använda POST eller PUT på begäran. För någon av dem innehåller JSON-dokumentet i begärandetexten objektdefinitionen.
POST https://[servicename].search.windows.net/indexes?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Du kan också använda PUT och ange indexnamnet på URI:n.
PUT https://[servicename].search.windows.net/indexes/[index name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
HTTPS krävs för alla tjänstbegäranden. Om indexet inte finns skapas det. Om den redan finns uppdateras den till den nya definitionen.
När du skapar ett index upprättas schemat och metadata. Att fylla i indexet är en separat åtgärd. I det här steget kan du använda en indexerare (se Indexeringsåtgärder, tillgängliga för datakällor som stöds) eller lägga till, uppdatera eller ta bort dokument. De inverterade indexen genereras när dokumenten publiceras.
Anteckning
Det maximala antalet index som du kan skapa varierar beroende på prisnivå. Mer information finns i Tjänstbegränsningar.
URI-parametrar
Parameter | Beskrivning |
---|---|
tjänstnamn | Krävs. Ange det unika, användardefinierade namnet på söktjänsten. |
indexnamn | Krävs på URI:n om du använder PUT. Namnet måste vara gemener, börja med en bokstav eller ett tal, ha inga snedstreck eller punkter och vara färre än 128 tecken. Början av namnet måste börja med en bokstav eller ett tal, men resten av namnet kan innehålla valfri bokstav, siffra, understreck och bindestreck, så länge understrecken och bindestrecken inte är i följd. |
api-version | Krävs. En lista över versioner som stöds finns i API-versioner . |
Rubriker för begäran
I följande tabell beskrivs nödvändiga och valfria begärandehuvuden.
Fält | Description |
---|---|
Content-Type | Krävs. Ange detta till application/json |
api-key | Valfritt om du använder Azure-roller och en ägartoken anges på begäran, annars krävs en nyckel. Skapa begäranden måste innehålla en api-key rubrik inställd på din administratörsnyckel (till skillnad från en frågenyckel). Mer information finns i Ansluta till Azure AI Search med nyckelautentisering . |
Begärandetext
Brödtexten i begäran innehåller en schemadefinition som innehåller listan över datafält i dokument som ska matas in i det här indexet.
Följande JSON är en övergripande representation av definitionens huvuddelar.
{
"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) { }
}
Begäran innehåller följande egenskaper:
Egenskap | Beskrivning |
---|---|
name | Krävs. Namnet på indexet. Ett indexnamn får bara innehålla gemener, siffror eller bindestreck, kan inte starta eller sluta med bindestreck och är begränsat till 128 tecken. |
Fält | Krävs. En samling fält som ska matas in i det här indexet, inklusive namn, datatyp och attribut som definierar tillåtna åtgärder i fältet. Datatyper överensstämmer med entitetsdatamodellen (EDM). Mer information finns i Datatyper som stöds. Det måste finnas ett fält i samlingen som anges som nyckelfält . Det måste vara ett strängfält. Det här fältet representerar den unika identifieraren, som ibland kallas dokument-ID, för varje dokument som lagras med indexet. Dokumentnycklar är skiftlägeskänsliga. Till exempel anses ett dokument med nyckeln "abc" skilja sig från ett dokument med nyckeln "ABC". |
Likhet | Valfritt. För tjänster som skapades före den 15 juli 2020 anger du att den här egenskapen ska använda BM25-rankningsalgoritmen. Giltiga värden inkluderar "#Microsoft.Azure.Search.ClassicSimilarity" eller "#Microsoft.Azure.Search.BM25Similarity" . API-versioner som stöder den här egenskapen inkluderar 2020-06-30 och 2019-05-06-Preview. Mer information finns i Rankningsalgoritmer i Azure AI Search. |
förslagsgivare | Valfritt. Används för automatiskt kompletterade frågor eller föreslagna sökresultat, ett per index. Det är en datastruktur som lagrar prefix för matchning på partiella frågor som komplettera automatiskt och förslag. Består av ett name och förslagskänsligt fält som tillhandahåller innehåll för automatiskt kompletterade frågor och föreslagna resultat.
searchMode krävs och anges alltid till analyzingInfixMatching . Den anger att matchning sker på valfri term i frågesträngen. |
scoringProfiles | Valfritt. Används för rangordning av anpassade sökpoäng. Ange defaultScoringProfile att använda en anpassad profil som standard, som anropas när en anpassad profil inte anges i frågesträngen. Mer information om element finns i Lägga till bedömningsprofiler i ett sökindex och exemplet i nästa avsnitt. |
analyzeers, charFilters, tokenizers, tokenFilters | Valfritt. Ange de här avsnitten i indexet om du definierar anpassade analysverktyg. Som standard är de här avsnitten null. |
defaultScoringProfile | Valfritt. Namnet på en anpassad bedömningsprofil som skriver över standardbedömningsbeteendena. |
corsOptions | Valfritt. JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden mellan ursprung. Om du vill tillåta korsande frågor till ditt index aktiverar du CORS (resursdelning mellan ursprung) genom att ange attributet corsOptions. Av säkerhetsskäl stöder endast fråge-API:er CORS. Avsnittet corsOptions innehåller: allowedOrigins (Krävs) En kommaavgränsad lista över ursprung som beviljas åtkomst till ditt index, där varje ursprung vanligtvis är av formuläret protocol://< kvalificerat domännamn>:<port> (även om <porten> ofta utelämnas). Det innebär att javascript-kod som hanteras från dessa ursprung får köra frågor mot ditt index (förutsatt att det ger rätt api-key ). Om du vill tillåta åtkomst till alla ursprung anger du * som ett enda objekt i matrisen allowedOrigins . Detta rekommenderas inte för produktion, men kan vara användbart för utveckling eller felsökning.
maxAgeInSeconds (Valfritt) Webbläsare använder det här värdet för att fastställa varaktigheten (i sekunder) för att cachelagrar CORS-förljussvar. Detta måste vara ett icke-negativt heltal. Ju större det här värdet är, desto bättre prestanda blir det, men ju längre tid det tar för CORS-principändringar att börja gälla. Om den inte har angetts används en standardvaraktighet på 5 minuter. |
encryptionKey | Valfritt. Används för att kryptera en synonymkarta med dina egna nycklar som hanteras i azure-Key Vault. Tillgängligt för fakturerbara söktjänster som skapats på eller efter 2019-01-01.
Ett encryptionKey avsnitt innehåller en användardefinierad keyVaultKeyName (obligatorisk), ett systemgenererat (obligatoriskt keyVaultKeyVersion ) och en keyVaultUri som tillhandahåller nyckeln (krävs, även kallat DNS-namn). Ett exempel på URI kan vara "https://my-keyvault-name.vault.azure.net".
Du kan också ange accessCredentials om du inte använder en hanterad systemidentitet. Egenskaper för accessCredentials inkluderar applicationId (Microsoft Entra ID program-ID som har beviljats åtkomstbehörigheter till din angivna Azure-Key Vault) och applicationSecret (autentiseringsnyckel för det registrerade programmet). Ett exempel i nästa avsnitt illustrerar syntaxen. |
Fältdefinitioner
Följande attribut kan anges i ett fält när du skapar ett index.
Attribut | Beskrivning |
---|---|
name | Krävs. Anger namnet på fältet, som måste vara unikt i fältsamlingen för indexet eller det överordnade fältet. |
typ | Krävs. Anger datatypen för fältet. Fält kan vara enkla eller komplexa. Enkla fält är av primitiva typer, till exempel Edm.String för text eller Edm.Int32 för heltal.
Komplexa fält kan ha underfält som själva är enkla eller komplexa. På så sätt kan du modellera objekt och matriser med objekt, vilket i sin tur gör att du kan ladda upp de flesta JSON-objektstrukturer till ditt index. Se Datatyper som stöds (Azure AI Search) för en fullständig lista över typer som stöds. |
key | Krävs. Ange det här attributet till true för att ange att ett fälts värden unikt identifierar dokument i indexet. Den maximala längden på värden i ett nyckelfält är 1 024 tecken. Exakt ett fält på toppnivå i varje index måste väljas som nyckelfält och det måste vara av typen Edm.String . Standard är false för enkla fält och null för komplexa fält.
Nyckelfält kan användas för att söka efter dokument direkt och uppdatera eller ta bort specifika dokument. Värdena för nyckelfält hanteras på ett skiftlägeskänsligt sätt när du letar upp eller indexerar dokument. Mer information finns i Uppslagsdokument (REST API för Azure AI Search) och Lägg till, uppdatera eller ta bort dokument (REST API för Azure AI Search). |
hämtningsbar | Anger om fältet kan returneras i ett sökresultat. Ange det här attributet till false om du vill använda ett fält (till exempel marginal) som en filter-, sorterings- eller bedömningsmekanism, men inte vill att fältet ska vara synligt för slutanvändaren. Det här attributet måste vara true för nyckelfält och måste vara null för komplexa fält. Det här attributet kan ändras i befintliga fält. Hämtningsbar inställning leder inte till true ökade krav på indexlagring. Standard är true för enkla fält och null för komplexa fält. |
Sökbara | Anger om fältet är sökbart i fulltext och kan refereras till i sökfrågor. Det innebär att det kommer att genomgå lexikal analys , till exempel ordbrytning under indexering. Om du anger ett sökbart fält till ett värde som "Solig dag" normaliseras det internt och delas upp i de enskilda tokensna "sunny" och "day". Detta möjliggör fulltextsökningar för dessa termer. Fält av typen Edm.String eller Collection(Edm.String) är sökbara som standard. Det här attributet måste vara false för enkla fält med andra datatyper som inte är strängar, och det måste vara null för komplexa fält.
Ett sökbart fält förbrukar extra utrymme i ditt index eftersom Azure AI Search bearbetar innehållet i dessa fält och organiserar dem i hjälpdatastrukturer för att utföra sökning. Om du vill spara utrymme i indexet och du inte behöver ett fält som ska inkluderas i sökningar anger du sökbart till false . Mer information finns i Så här fungerar fulltextsökning i Azure AI Search . |
filtreringsbar | Anger om fältet ska refereras till i $filter frågor. Filterbar skiljer sig från sökbar i hur strängar hanteras. Fält av typen Edm.String eller Collection(Edm.String) som är filterbara genomgår inte lexikal analys, så jämförelser är endast för exakta matchningar. Om du till exempel anger ett sådant fält f till "Solig dag" $filter=f eq 'sunny' hittar du inga matchningar, men $filter=f eq 'Sunny day' kommer att göra det. Det här attributet måste vara null för komplexa fält. Standard är true för enkla fält och null för komplexa fält. Om du vill minska indexstorleken anger du det här attributet till false på fält som du inte filtrerar på. |
Sorterbar | Anger om fältet ska refereras till i $orderby uttryck. Som standard sorterar Azure AI Search resultat efter poäng, men i många upplevelser vill användarna sortera efter fält i dokumenten. Ett enkelt fält kan bara sorteras om det är envärdesvärde (det har ett enda värde i omfånget för det överordnade dokumentet).
Enkla samlingsfält kan inte sorteras eftersom de är flervärdesfält. Enkla underfält i komplexa samlingar är också flervärdesfält och kan därför inte sorteras. Detta gäller oavsett om det är ett omedelbart överordnat fält eller ett överordnat fält, som är den komplexa samlingen. Komplexa fält kan inte sorteras och det sorterbara attributet måste vara null för sådana fält. Standardvärdet för sorterbar är true enkelvärdesfält, false enkla fält med flera värden och null komplexa fält. |
facetable | Anger om fältet ska refereras till i aspektfrågor. Används vanligtvis i en presentation av sökresultat som inkluderar antal träffar per kategori (till exempel söka efter digitalkameror och se träffar per varumärke, per megapixlar, efter pris och så vidare). Det här attributet måste vara null för komplexa fält. Fält av typen Edm.GeographyPoint eller Collection(Edm.GeographyPoint) kan inte vara fasettbara. Standardinställningen är true för alla andra enkla fält. Om du vill minska indexstorleken anger du det här attributet till false för fält som du inte kommer att fasera på. |
Analyzer | Anger den lexikala analysatorn för tokenisering av strängar under indexerings- och frågeåtgärder. Giltiga värden för den här egenskapen är språkanalysverktyg, inbyggda analysverktyg och anpassade analysverktyg. Standardvärdet är standard.lucene . Det här attributet kan bara användas med sökbara strängfält och kan inte anges tillsammans med antingen searchAnalyzer eller indexAnalyzer. När analysatorn har valts och fältet har skapats i indexet kan det inte ändras för fältet. Måste vara null för komplexa fält. |
searchAnalyzer | Ange den här egenskapen tillsammans med indexAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till och kontrollerar att null indexAnalyzer är inställt på ett tillåtet värde. Giltiga värden för den här egenskapen inkluderar inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. Sökanalyseraren kan uppdateras i ett befintligt fält eftersom det endast används vid frågetillfället. Måste vara null för komplexa fält. |
indexAnalyzer | Ange den här egenskapen tillsammans med searchAnalyzer för att ange olika lexikala analysverktyg för indexering och frågor. Om du använder den här egenskapen anger du analyzer till och kontrollerar att null searchAnalyzer är inställt på ett tillåtet värde. Giltiga värden för den här egenskapen inkluderar inbyggda analysverktyg och anpassade analysverktyg. Det här attributet kan endast användas med sökbara fält. När indexanalysatorn har valts kan den inte ändras för fältet. Måste vara null för komplexa fält. |
synonymKartor | En lista över namnen på synonymkartor som ska associeras med det här fältet. Det här attributet kan endast användas med sökbara fält. För närvarande stöds endast en synonymkarta per fält. Genom att tilldela en synonymkarta till ett fält ser du till att frågetermer som är riktade mot det fältet expanderas vid frågetillfället med hjälp av reglerna i synonymkartan. Det här attributet kan ändras i befintliga fält. Måste vara null eller en tom samling för komplexa fält. |
fields | En lista över underfält om det här är ett fält av typen Edm.ComplexType eller Collection(Edm.ComplexType) . Måste vara null eller tomt för enkla fält. Mer information om hur och när du ska använda underfält finns i Så här modellerar du komplexa datatyper i Azure AI Search . |
Anteckning
Fält av typen Edm.String
som är filterbara, sorterbara eller fasettbara kan vara högst 32 kilobyte långa. Det beror på att värden för sådana fält behandlas som en enda sökterm och den maximala längden på en term i Azure AI Search är 32 kilobyte. Om du behöver lagra mer text än detta i ett enda strängfält måste du uttryckligen ange filterbar, sorterbar och fasettbar i false
indexdefinitionen.
Att ange ett fält som sökbart, filterbart, sorterbart eller fasettbart påverkar indexstorleken och frågeprestandan. Ange inte attributen för fält som inte är avsedda att refereras till i frågeuttryck.
Om ett fält inte är inställt på att vara sökbart, filterbart, sorterbart eller fasettbart kan fältet inte refereras till i något frågeuttryck. Detta är användbart för fält som inte används i frågor, men som behövs i sökresultaten.
Anteckning
Det maximala antalet index som du kan skapa varierar beroende på prisnivå. Mer information finns i Tjänstbegränsningar.
Svarsåtgärder
För en lyckad begäran bör du se statuskoden "201 Skapad".
Som standard innehåller svarstexten JSON för indexdefinitionen. Men om Prefer
begärandehuvudet är inställt på return=minimal
är svarstexten tom och statuskoden för lyckad status är "204 Inget innehåll" i stället för "201 Skapad". Detta gäller oavsett om PUT eller POST används för att skapa indexet.
Exempel
Exempel: Ett 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"
}
]
}
Exempel: Förslagsgivare
"suggesters": [
{
"name": "name of suggester",
"searchMode": "analyzingInfixMatching",
"sourceFields": ["field1", "field2", ...]
}
]
En förslagslämnare refereras efter namn på frågebegäranden som innehåller antingen API:et För förslag eller Komplettera automatiskt, beroende på om du vill returnera en matchning eller resten av en frågeterm. Mer information om hur du skapar och använder en förslagshållare finns i Skapa en förslagshållare.
Exempel: Likhet för sökrelevans
Den här egenskapen anger rangordningsalgoritmen som används för att skapa en relevanspoäng i sökresultat för en fulltextsökningsfråga. I tjänster som skapats efter den 15 juli 2020 ignoreras den här egenskapen eftersom likhetsalgoritmen alltid är BM25. För befintliga tjänster som skapades före den 15 juli 2020 kan du välja BM25 genom att ange den här konstruktionen på följande sätt:
"similarity": {
"@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
}
Exempel: CORS-alternativ
JavaScript på klientsidan kan inte anropa några API:er som standard eftersom webbläsaren förhindrar alla begäranden mellan ursprung. Om du vill tillåta frågor mellan ursprung till ditt index aktiverar du CORS (Resursdelning mellan ursprung (Wikipedia)) genom att ange corsOptions
attributet. Av säkerhetsskäl stöder endast fråge-API:er 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)
}
}
Exempel: Krypteringsnycklar
Krypteringsnycklar är kundhanterade nycklar som används för ytterligare kryptering. Mer information finns i Kryptering med kundhanterade nycklar i 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)"}
}
}
Exempel: Bedömningsprofiler
En bedömningsprofil är ett avsnitt i schemat som definierar anpassade bedömningsbeteenden som gör att du kan påverka vilka dokument som visas högre i sökresultaten. Bedömningsprofiler består av fältvikter och funktioner. Om du vill använda dem anger du en profil efter namn på frågesträngen. Mer information finns i Lägga till bedömningsprofiler i ett sökindex för mer information.
{
"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"
}
]
}
Exempel: Synonymkartor
När du har skapat synonymkartan i söktjänsten kan du tilldela den till searchable
fält av typen Edm.String
eller Collection(Edm.String)
i ett index. Indexdefinitionen nedan konfigurerar fältet "genre" för att använda synonymkartan "mysynonymmap".
Du kan använda Uppdateringsindex för att lägga till den här egenskapen i ett befintligt fält. En fältegenskap synonymMaps
anger kartan (ett per fält). Du kan uppdatera egenskaperna för synonymMaps
befintliga fält när som helst.
Fråga som vanligt med hjälp av termer eller fraser (omgivna av citattecken). I Azure AI Search måste tvådelade termer, till exempel "bubbelpool", uttryckas som en fras, annars utvärderas varje term oberoende av varandra. Om du frågar efter "bubbelpool" söker sökmotorn efter den frasen samt eventuella synonymer som du har definierat, till exempel jacuzzi.
POST /indexes?api-version=2020-06-30
{
"name":"myindex",
"fields":[
...
{
"name":"genre",
"type":"Edm.String",
"searchable":true,
"analyzer":"en.lucene",
"synonymMaps": [
"mysynonymmap"
]
}
]
...
}