Index maken of bijwerken (PREVIEW-REST API)

Van toepassing op: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Belangrijk

2023-07-01-Preview voegt vectorzoekopdrachten toe.

30-04-2021 Preview voegt toe:

  • 'semanticConfiguration' dat wordt gebruikt voor het bereik van semantische rangschikking op specifieke velden.
  • 'identity', onder 'encryptionKey', dat wordt gebruikt om een door de klant beheerde versleutelingssleutel op te halen uit Azure Key Vault met behulp van een door de gebruiker toegewezen beheerde identiteit.

2020-06-30-Preview voegt toe:

  • 'normalizers', gebruikt voor hoofdlettergevoeligheid voor sorteringen en filters.

Een index geeft het indexschema op, met inbegrip van de veldenverzameling (veldnamen, gegevenstypen en kenmerken), maar ook andere constructies (suggesties, scoreprofielen en CORS-configuratie) waarmee ander zoekgedrag wordt gedefinieerd.

U kunt POST of PUT gebruiken voor een create-aanvraag. Voor beide biedt de aanvraagbody de objectdefinitie.

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

Voor updateaanvragen gebruikt u PUT en geeft u de indexnaam op in 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. Het maximum aantal indexen dat u kunt maken, verschilt per prijscategorie. Binnen elke index zijn er limieten voor afzonderlijke elementen. Zie Servicelimieten voor Azure AI Search voor meer informatie.

Het bijwerken van een bestaande index moet de volledige schemadefinitie bevatten, inclusief de oorspronkelijke definities die u wilt behouden. Over het algemeen is het beste patroon voor updates om de indexdefinitie op te halen met een GET, deze te wijzigen en deze vervolgens bij te werken met PUT.

Omdat een bestaande index inhoud bevat, moeten veel indexwijzigingen worden verwijderd en opnieuw worden opgebouwd. De volgende schemawijzigingen vormen een uitzondering op deze regel:

  • Nieuwe velden toevoegen

  • Scoreprofielen toevoegen of wijzigen

  • Semantische configuraties toevoegen of wijzigen

  • CORS-opties wijzigen

  • Bestaande velden wijzigen met een van de volgende drie wijzigingen:

    • Velden weergeven of verbergen (retrievable: true | false)
    • De analyse wijzigen die tijdens de query wordt gebruikt (searchAnalyzer)
    • Het synoniemMap toevoegen of bewerken dat tijdens de query wordt gebruikt (synonymMaps)

Als u een van de bovenstaande schemawijzigingen wilt aanbrengen in een bestaande index, geeft u de naam van de index op op de aanvraag-URI en neemt u vervolgens een volledig opgegeven indexdefinitie op met de nieuwe of gewijzigde elementen.

Wanneer een nieuw veld wordt toegevoegd, hebben alle bestaande documenten in de index automatisch een null-waarde voor dat veld. Er wordt geen extra opslagruimte verbruikt totdat een van de volgende twee dingen gebeurt: er wordt een waarde opgegeven voor het nieuwe veld (door samenvoegen) of er worden nieuwe documenten toegevoegd.

Updates aan een suggester hebben vergelijkbare beperkingen: nieuwe velden kunnen worden toegevoegd aan een suggester op hetzelfde moment dat velden worden toegevoegd, maar bestaande velden kunnen niet worden verwijderd uit of toegevoegd aan suggesters zonder een index opnieuw te maken.

Updates naar een analyse, een tokenizer, een tokenfilter of een tekenfilter zijn niet toegestaan. Nieuwe kunnen worden gemaakt met de gewenste wijzigingen, maar u moet de index offline halen wanneer u de nieuwe analysedefinities toevoegt. Als u de allowIndexDowntime vlag instelt op true in de indexupdateaanvraag, wordt de index offline gehaald:

PUT https://[search service name].search.windows.net/indexes/[index name]?api-version=[api-version]&allowIndexDowntime=true

Met deze bewerking wordt uw index ten minste enkele seconden offline gehaald, wat betekent dat indexerings- en queryaanvragen mislukken totdat de index weer online is en klaar is om aanvragen te verwerken.

URI-parameters

Parameter Beschrijving
servicenaam Vereist. Stel deze waarde 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. Streepjes mogen niet opeenvolgend zijn.
api-versie Vereist. De huidige preview-versie is 2023-07-23-preview. Zie API-versies voor meer versies.
allowIndexDowntime Optioneel. Standaard onwaar. Ingesteld op true voor bepaalde updates, zoals het toevoegen of wijzigen van een analyse, tokenizer, tokenfilter, tekenfilter of vergelijkbaarheidseigenschap. De index wordt offline gehaald tijdens de update, meestal niet meer dan enkele seconden.

Aanvraagheaders

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

Velden Description
Content-Type Vereist. Stel deze waarde 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. Een API-sleutel is een unieke, door het systeem gegenereerde tekenreeks die de aanvraag verifieert bij uw zoekservice. 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 een schema dat vectorzoekopdrachten ondersteunt. Een schema vereist een sleutelveld en dat sleutelveld kan doorzoekbaar, gefilterd, gesorteerd en facetbaar zijn.

Een vectorzoekveld is van het type Collection(Edm.Single). Omdat vectorvelden geen tekstueel zijn, kan een vectorveld niet worden gebruikt als sleutel en accepteert het geen analysefuncties, normalizers, suggesties of synoniemen. Deze moet een eigenschap 'dimensies' en een eigenschap 'vectorSearchConfiguration' hebben.

Een schema dat vectorzoekopdrachten ondersteunt, kan ook zoeken naar trefwoorden ondersteunen. Andere niet-vervectorvelden in de index kunnen gebruikmaken van analysefuncties, synoniemen en scoreprofielen die u in uw index opneemt.

{  
  "name": (optional on PUT; required on POST) "Name of the index",
  "description": (optional) "Description 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.Single) | Collection(Edm.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
      "key": true | false (default, only Edm.String fields can be keys, enable on one field only),  
      "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),  
      "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)
      "normalizer": "name_of_normalizer", (optional, applies only to filterable, facetable, or sortable Edm.String and Collection(Edm.String) fields.)
      "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.)
      "dimensions": 1234, (required for vector field definitions. Prohibited for non-vector fields. Integer specifying the dimensionality of the embeddings generated by a machine learning model)
      "vectorSearchConfiguration": "name_of_algorithm_config" (required for vector field definitions. Prohibited for non-vector fields. This should reference an algorithm configuration.)
    }
  ],
  "similarity": (optional) { },
  "suggesters": (optional) [ ... ],  
  "scoringProfiles": (optional) [ ... ],  
  "semantic": (optional) { },
  "vectorSearch": (optional) {
    "algorithmConfigurations": [
        {
            "name": "name_of_algorithm_config",
            "kind": "hnsw" (algorithm type. Only "hnsw" is supported currently.),
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]},
  "normalizers":(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.
beschrijving Een optionele beschrijving.
Velden Een verzameling velden voor deze index, waarbij elk veld een naam heeft, een ondersteund gegevenstype dat voldoet aan het Entity Data Model (EDM) en kenmerken waarmee toegestane acties voor dat veld worden gedefinieerd. De verzameling velden moet één veld van het type Edm.String hebben waarbij 'sleutel' is ingesteld op 'true'. Dit veld vertegenwoordigt de unieke id, ook wel de document-id genoemd, voor elk document dat is opgeslagen met de index. De verzameling velden accepteert nu vectorvelden.
Gelijkenis Optioneel. Voor services die vóór 15 juli 2020 zijn gemaakt, stelt u deze eigenschap in om het classificatie-algoritme BM25 in te stellen.
suggesties Hiermee geeft u een constructie op waarin voorvoegsels voor overeenkomsten worden opgeslagen voor gedeeltelijke query's, zoals automatisch aanvullen en suggesties.
scoringProfiles Optioneel. Wordt gebruikt voor het afstemmen van relevantie voor query's in volledige tekst.
Semantische Optioneel. Definieert de parameters van een zoekindex die van invloed zijn op semantische zoekmogelijkheden. Een semantische configuratie is vereist voor semantische query's. Zie Een semantische query maken voor meer informatie.
vectorSearch Optioneel. Hiermee configureert u verschillende vectorzoekinstellingen. Alleen vectorzoekalgoritmen kunnen worden geconfigureerd.
normalizers Optioneel. Normaliseert de lexicografische volgorde van tekenreeksen, waardoor niet-hoofdlettergevoelige sorteer- en filteruitvoer wordt geproduceerd.
analyse, charFilters, tokenizers, tokenFilters Optioneel. Geef deze secties van de index op als u aangepaste analysen definieert. Deze secties zijn standaard null.
defaultScoringProfile Naam van een aangepast scoreprofiel dat het standaardscoregedrag overschrijft.
corsOptions Optioneel. Wordt gebruikt voor cross-origin-query's naar uw index.
encryptionKey Optioneel. Wordt gebruikt voor extra versleuteling van de index, via door de klant beheerde versleutelingssleutels (CMK) in Azure Key Vault. Beschikbaar voor factureerbare zoekservices die zijn gemaakt op of na 01-01-2019.

Antwoord

Voor een geslaagde aanvraag ziet u statuscode '201 Gemaakt'. De antwoordtekst bevat standaard de JSON voor de indexdefinitie die is gemaakt. Als de aanvraagheader voorkeur echter is ingesteld op return=minimal, is de antwoordtekst leeg en is de statuscode '204 No Content' in plaats van '201 Created'. Dit geldt ongeacht of PUT of POST wordt gebruikt om de index te maken.

Voor een geslaagde updateaanvraag ziet u '204 Geen inhoud'. De antwoordtekst is standaard leeg. Als de Prefer aanvraagheader echter is ingesteld op return=representation, bevat de antwoordtekst de JSON voor de indexdefinitie die is bijgewerkt. In dit geval is de statuscode '200 OK'.

Voorbeelden

Voorbeeld: Vector

Vectorzoekopdrachten worden geïmplementeerd op veldniveau. Deze definitie legt de focus op vectorvelden. Vectorvelden moeten van het type Collection(Edm.Single) zijn dat wordt gebruikt voor het opslaan van drijvendekommawaarden met één precisie. Vectorvelden hebben een eigenschap 'dimensies' die het aantal uitvoerdimensies bevat dat wordt ondersteund door het machine learning-model dat wordt gebruikt om insluitingen te genereren. Als u bijvoorbeeld text-embedding-ada-002 gebruikt, is het maximum aantal uitvoerdimensies per document 1536. De 'algorithmConfiguration' is ingesteld op de naam van de configuratie vectorSearch in uw index. U kunt meerdere in de index definiëren en vervolgens één per veld opgeven.

Veel kenmerken zijn alleen van toepassing op niet-vectorvelden. Kenmerken zoals 'filterbaar', 'sorteerbaar', 'facetable', 'analyzer', 'normalizer' en 'synoniemkaarten' worden genegeerd voor vectorvelden. En als u vectoreigenschappen instelt, zoals 'dimensies' of 'vectorSearchConfiguration' voor een veld met alfanumerieke inhoud, worden deze kenmerken genegeerd.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "searchable": true,
            "retrievable": true,
            "filterable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "key": false,
            "searchable": true,
            "retrievable": true,
            "filterable": false,  
            "sortable": false,  
            "facetable": false,
            "analyzer": "",
            "searchAnalyzer": "",
            "indexAnalyzer": "",
            "normalizer": "",
            "synonymMaps": "", 
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    }
}

Voorbeeld: Veldverzamelingen met vector- en niet-vectorvelden

Vectorzoekopdrachten worden geïmplementeerd op veldniveau. Ter ondersteuning van hybride queryscenario's maakt u paren van velden voor vector- en niet-vectorquery's. De velden 'title', 'titleVector', 'content', 'contentVector' volgen deze conventie. Als u ook semantisch zoeken wilt gebruiken, moet u voor dit gedrag niet-vecctortekstvelden hebben.

{
    "name": "{{index-name}}",
    "fields": [
        {
            "name": "id",
            "type": "Edm.String",
            "key": true,
            "filterable": true
        },
        {
            "name": "title",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "category",
            "type": "Edm.String",
            "filterable": true,
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "titleVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        },
        {
            "name": "contentVector",
            "type": "Collection(Edm.Single)",
            "searchable": true,
            "retrievable": true,
            "dimensions": 1536,
            "vectorSearchConfiguration": "my-vector-config"
        }
    ],
    "corsOptions": {
        "allowedOrigins": [
            "*"
        ],
        "maxAgeInSeconds": 60
    },
    "vectorSearch": {
        "algorithmConfigurations": [
            {
                "name": "my-vector-config",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "efSearch": 500,
                    "metric": "cosine"
                }
            }
        ]
    },
    "semantic": {
        "configurations": [
            {
                "name": "my-semantic-config",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "title"
                    },
                    "prioritizedContentFields": [
                        {
                            "fieldName": "content"
                        }
                    ],
                    "prioritizedKeywordsFields": [
                        {
                            "fieldName": "category"
                        }
                    ]
                }
            }
        ]
    }
}

Voorbeeld: een indexschema met eenvoudige en complexe velden

In het eerste voorbeeld ziet u een volledig indexschema met eenvoudige en complexe velden. Ten minste één tekenreeksveld moet 'sleutel' hebben ingesteld op true.

{
  "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", "normalizer": "tagsNormalizer" },
    { "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, "normalizer": "lowercase" },
          { "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", "normalizer": "tagsNormalizer" }
        ]
    }
  ],
  "suggesters": [ ],
  "analyzers": [ ],
  "normalizers": [ ],
  "encryptionKey": [ ]
}  

Voorbeeld: Suggesties

In een suggestiedefinitie moeten 'doorzoekbare' en 'ophaalbare' tekenreeksvelden worden opgegeven (in de REST API's zijn "retrievable": true alle eenvoudige velden standaard). Nadat een suggestie is gedefinieerd, kunt u ernaar verwijzen op naam voor queryaanvragen die gebruikmaken van de Suggesties-API of de API voor automatisch aanvullen, afhankelijk van of u een overeenkomst of de rest van een queryterm wilt retourneren.

{
  "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", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "suggesters": [
    {  
      "name": "sg",  
      "searchMode": "analyzingInfixMatching",  
      "sourceFields": ["HotelName", "Category", "Tags"]  
    } 
  ]
} 

Voorbeeld: Analyzers en normalizers

In velddefinities wordt verwezen naar analysen en normalizers en kunnen vooraf gedefinieerd of aangepast zijn. Als u aangepaste analyse- of normalisatiefuncties gebruikt, geeft u deze op in de index in de secties 'analyzers' en 'normalizers'.

In het volgende voorbeeld ziet u aangepaste analyses en normalizers voor 'Tags'. Het toont ook een vooraf gedefinieerde normalisator (standaard) en analyse (en.microsoft) voor respectievelijk 'HotelName' en 'Description'.

{
  "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, "normalizer": standard  },
    { "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", "normalizer": "tagsNormalizer" },
    { "name": "Rating", "type": "Edm.Double", "filterable": true, "sortable": true, "facetable": true },

  ],
  "analyzers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
      "name": "tagsAnalyzer",
      "charFilters": [ "html_strip" ],
      "tokenizer": "standard_v2"
    }
  ],
  "normalizers": [
    {
      "@odata.type": "#Microsoft.Azure.Search.CustomNormalizer",
      "name": "tagsNormalizer",
      "tokenFilters": [ "asciifolding", "lowercase" ]
    }
  ]
}  

Voorbeeld: Gelijkenis voor relevantie van zoekopdrachten

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 met toegangsreferenties

Versleutelingssleutels zijn door de klant beheerde sleutels die worden gebruikt voor extra 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: Versleutelingssleutels met beheerde identiteit

U kunt zich verifiëren bij Azure Key Vault met behulp van een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit (preview). In dit geval laat u toegangsreferenties weg of stelt u in op null. In het volgende voorbeeld ziet u een door de gebruiker toegewezen beheerde identiteit. Als u een door het systeem toegewezen beheerde identiteit wilt gebruiken, laat u de toegangsreferenties en identiteit weg. Zolang de systeemidentiteit van uw zoekservice machtigingen heeft in Azure Key Vault, moet de verbindingsaanvraag slagen.

{
  "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": null,
          "identity" : { 
              "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
              "userAssignedIdentity" : "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]"
          }
    }
} 

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 ze wilt gebruiken, geeft u een profiel op met de naam in de querytekenreeks. Zie Scoreprofielen toevoegen aan een zoekindex (Azure AI Search REST API) 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: Semantische configuraties

Een semantische configuratie maakt deel uit van een indexdefinitie die wordt gebruikt om te configureren welke velden worden gebruikt door semantische zoekopdrachten voor rangschikking, bijschriften, markeringen en antwoorden. Als u semantisch zoeken wilt gebruiken, moet u de naam van een semantische configuratie opgeven tijdens de query. Zie Een semantische query maken voor meer informatie.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "my-semantic-config",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "hotelName"
               },
           "prioritizedContentFields": [
             {
               "fieldName": "description"
             },
             {
               "fieldName": "description_fr"
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "tags"
             },
             {
               "fieldName": "category"
             }
           ]
         }
       }
     ]
   }
}

Definities

Koppeling Beschrijving
corsOptions Een lijst met de domeinen of oorsprongen die aan uw index worden verleend.
defaultScoringProfile Naam van een aangepast scoreprofiel dat het standaardscoregedrag overschrijft.
encryptionKey Hiermee configureert u een verbinding met Azure Key Vault voor door de klant beheerde versleuteling.
Velden Hiermee stelt u definities en kenmerken van een veld in een zoekindex in.
normalizers Hiermee configureert u een aangepaste normalisatiefunctie. Normaliseert de lexicografische volgorde van tekenreeksen, waardoor niet-hoofdlettergevoelige sortering, facetten en filteren van uitvoer worden geproduceerd.
Semantische Hiermee configureert u velden die worden gebruikt door semantische zoekopdrachten voor rangschikking, bijschriften, markeringen en antwoorden.
scoringProfiles Wordt gebruikt voor het afstemmen van relevantie voor query's in volledige tekst.
Gelijkenis
suggesties Hiermee configureert u de opslag van interne voorvoegsels voor overeenkomsten voor gedeeltelijke query's, zoals automatisch aanvullen en suggesties.
vectorSearch Hiermee configureert u het algoritme dat wordt gebruikt voor vectorvelden.

corsOptions

JavaScript aan clientzijde kan standaard geen API's aanroepen, omdat de browser alle cross-origin-aanvragen voorkomt. Als u cross-origin-query's wilt toestaan voor uw index, schakelt u CORS (Cross-Origin Resource Sharing) in door het kenmerk 'corsOptions' in te stellen. Om veiligheidsredenen ondersteunen alleen query-API's CORS.

Kenmerk Beschrijving
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 query's uit te voeren op uw index (ervan uitgaande dat deze een geldige API-sleutel biedt). Als u toegang tot alle origins wilt toestaan, geeft u * op als één item in de matrix allowedOrigins. 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. De prestaties verbeteren als deze waarde groter is, maar deze voordelen worden gecompenseerd door de hoeveelheid tijd die nodig is om CORS-beleidswijzigingen van kracht te laten worden. Als dit niet is ingesteld, wordt een standaardduur van 5 minuten gebruikt.

defaultScoringProfile

Optioneel. Een tekenreeks die de naam is van een aangepast scoreprofiel dat is gedefinieerd in de index. Een standaardprofiel wordt aangeroepen wanneer een aangepast profiel niet expliciet is opgegeven in de queryreeks. Zie Scoreprofielen toevoegen aan een zoekindex voor meer informatie.

encryptionKey

Hiermee configureert u een verbinding met Azure Key Vault voor aanvullende door de klant beheerde versleutelingssleutels (CMK). Beschikbaar voor factureerbare zoekservices die zijn gemaakt op of na 1 januari 2019.

Een verbinding met de sleutelkluis moet worden geverifieerd. U kunt hiervoor accessCredentials of een beheerde identiteit gebruiken.

Beheerde identiteiten kunnen door het systeem of door de gebruiker zijn toegewezen (preview). Als de zoekservice zowel een door het systeem toegewezen beheerde identiteit als een roltoewijzing heeft die leestoegang tot de sleutelkluis verleent, kunt u zowel 'identiteit' als 'accessCredentials' weglaten en wordt de aanvraag geverifieerd met behulp van de beheerde identiteit. Als de zoekservice een door de gebruiker toegewezen identiteit en roltoewijzing heeft, stelt u de eigenschap 'identiteit' in op de resource-id van die identiteit.

Kenmerk Beschrijving
keyVaultKeyName Vereist. Naam van de Azure Key Vault-sleutel die wordt gebruikt voor versleuteling.
keyVaultKeyVersion Vereist. Versie van de Azure Key Vault-sleutel.
keyVaultUri Vereist. URI van Azure Key Vault (ook wel DNS-naam genoemd) die de sleutel levert. Een voorbeeld van een URI kan zijn https://my-keyvault-name.vault.azure.net
accessCredentials Optioneel. Laat deze eigenschap weg als u een beheerde identiteit gebruikt. Anders zijn de eigenschappen van 'accessCredentials' onder andere:
'applicationId' (een Azure Active Directory-toepassings-id met toegangsmachtigingen voor de opgegeven Azure Key Vault).
'applicationSecret' (de verificatiesleutel van de opgegeven Azure AD toepassing).
identity Optioneel, tenzij u een door de gebruiker toegewezen beheerde identiteit gebruikt voor de zoekserviceverbinding met Azure Key Vault. De indeling is "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

fields

Bevat informatie over kenmerken in een velddefinitie.

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 hebben 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. Collection(Edm.Single) is geschikt voor drijvendekommawaarden met één precisie. Het wordt alleen gebruikt voor vectorvelden en is vereist. Zie Ondersteunde gegevenstypen 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 Opzoekdocument en Documenten toevoegen, bijwerken of verwijderen 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 ondergaat, zoals woordbreking tijdens het indexeren. Als u een doorzoekbaar veld instelt op een waarde zoals 'Zonnige dag', wordt dit intern genormaliseerd 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 voor complexe velden zijn null .

Een doorzoekbaar veld verbruikt extra ruimte in uw index, omdat Azure AI Search de inhoud van deze velden verwerkt en ze ordent in ondersteunende gegevensstructuren voor zoekopdrachten. 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 een dergelijk veld f bijvoorbeeld instelt op '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 velden 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 samen met indexAnalyzer 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 samen met searchAnalyzer 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 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.
Normalizer Hiermee stelt u de normalisatiefunctie in voor filter-, sorteer- en facetbewerkingen. Dit kan de naam zijn van een vooraf gedefinieerde normalizer of een aangepaste normalizer die is gedefinieerd in de index. De standaardwaarde is null, wat resulteert in een exacte overeenkomst op exacte, niet-geanalyseerde tekst. Dit kenmerk kan alleen worden gebruikt met Edm.String velden en Collection(Edm.String) waarvoor ten minste één van de filterbare, sorteerbare of facetbare velden is ingesteld op true. Een normalisatiefunctie kan alleen worden ingesteld voor het veld wanneer deze wordt toegevoegd aan de index en kan later niet worden gewijzigd. Dit moet zijn null voor complexe velden. Geldige waarden voor een vooraf gedefinieerde normalisatiefunctie zijn onder andere:

standard- Kleine letters van de tekst gevolgd door asciifolding.
lowercase- Transformeert tekens naar kleine letters.
uppercase - Transformeert tekens naar hoofdletters.
asciifolding - Transformeert tekens die zich niet in het Basic Latin Unicode-blok bevinden naar hun ASCII-equivalent, als deze bestaat. Bijvoorbeeld door 'à' te wijzigen in 'a'.
elision- Verwijdert elision vanaf het begin van de tokens.
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.
Dimensies Geheel getal. Vereist voor vectorvelden. **Dit moet overeenkomen met de grootte van het insluiten van uitvoer van uw insluitmodel. Voor een populair Azure OpenAI-model text-embedding-ada-002is de uitvoerdimensies bijvoorbeeld 1536, dus dit zijn de dimensies die moeten worden ingesteld voor dat vectorveld. Het kenmerk dimensies heeft minimaal 2 en maximaal 2048 drijvendekommawaarden.
vectorSearchConfiguration Vereist voor vectorvelddefinities. Hiermee geeft u de naam op van de configuratie van het algoritme vectorSearch die wordt gebruikt door het vectorveld. Zodra het veld is gemaakt, kunt u de naam van de vectorSearchConfiguration niet meer wijzigen, maar u kunt wel de eigenschappen van de algoritmeconfiguratie in de index wijzigen. Hierdoor kunnen het type en de parameters van het algoritme worden aangepast.

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.

normalizers

Hiermee definieert u een aangepaste normalisatiefunctie met een door de gebruiker gedefinieerde combinatie van tekenfilters en tokenfilters. Nadat u een aangepaste normalisatiefunctie in de index hebt gedefinieerd, kunt u deze op naam opgeven voor een velddefinitie.

Kenmerk Beschrijving
naam Vereist. Tekenreeksveld dat een door de gebruiker gedefinieerde aangepaste normalizer aangeeft.
charFilters Wordt gebruikt in een aangepaste normalizer. Dit kunnen een of meer beschikbare tekenfilters zijn die worden ondersteund voor gebruik in een aangepaste normalizer:
toewijzing
pattern_replace
tokenFilters Wordt gebruikt in een aangepaste normalizer. Dit kunnen een of meer van de beschikbare tokenkanters zijn die worden ondersteund voor gebruik in een aangepaste normalizer:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
kleine hoofdletters

scoringProfiles

Scoreprofielen zijn van toepassing op zoekopdrachten in volledige tekst. Een profiel wordt gedefinieerd in een index en specificeert aangepaste logica waarmee hogere zoekscores kunnen worden toegekend aan overeenkomende documenten die voldoen aan de criteria die in het profiel zijn gedefinieerd. U kunt meerdere scoreprofielen maken en vervolgens het gewenste profiel toewijzen aan een query.

Als u een aangepast profiel maakt, kunt u dit als standaardprofiel instellen door in te stellen defaultScoringProfile. Zie Scoreprofielen toevoegen aan een zoekindex voor meer informatie.

Semantische

Een semantische configuratie is een onderdeel van een indexdefinitie die wordt gebruikt om te configureren welke velden worden gebruikt door semantische zoekopdrachten voor rangschikking, bijschriften, markeringen en antwoorden. Semantische configuraties bestaan uit een titelveld, inhoudsvelden met prioriteit en trefwoordvelden met prioriteit. Er moet ten minste één veld worden opgegeven voor elk van de drie subeigenschappen (titleField, prioritizedKeywordsFields en prioritizedContentFields). Elk veld van het type Edm.String of Collection(Edm.String) kan worden gebruikt als onderdeel van een semantische configuratie.

Als u semantisch zoeken wilt gebruiken, moet u de naam van een semantische configuratie opgeven tijdens de query. Zie Een semantische query maken voor meer informatie.

{
   "name": "hotels",  
   "fields": [ omitted for brevity ],
   "suggesters": [ omitted for brevity ],
   "analyzers": [ omitted for brevity ],
   "semantic": {
     "configurations": [
       {
         "name": "name of the semantic configuration",
         "prioritizedFields": {
           "titleField": {
                 "fieldName": "..."
               },
           "prioritizedContentFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ],
           "prioritizedKeywordsFields": [
             {
               "fieldName": "..."
             },
             {
               "fieldName": "..."
             }
           ]
         }
       }
     ]
   }
}
Kenmerk Beschrijving
naam Vereist. De naam van de semantische configuratie.
prioritizedFields Vereist. Hierin worden de titel-, inhouds- en trefwoordvelden beschreven die moeten worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Ten minste één van de drie subeigenschappen (titleField, prioritairKeywordsFields en prioritizedContentFields) moet worden ingesteld.
prioritizedFields.titleField Definieert het titelveld dat moet worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Als u geen titelveld in uw index hebt, laat u dit leeg.
prioritizedFields.prioritizedContentFields Definieert de inhoudsvelden die moeten worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Voor het beste resultaat moeten de geselecteerde velden tekst bevatten in de vorm van natuurlijke taal. De volgorde van de velden in de matrix geeft hun prioriteit aan. Velden met een lagere prioriteit kunnen worden afgekapt als de inhoud lang is.
prioritizedFields.prioritizedKeywordsFields Definieert de trefwoordvelden die moeten worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Voor het beste resultaat moeten de geselecteerde velden een lijst met trefwoorden bevatten. De volgorde van de velden in de matrix geeft hun prioriteit aan. Velden met een lagere prioriteit kunnen worden afgekapt als de inhoud lang is.

Gelijkenis

Optionele eigenschap die van toepassing is op services die vóór 15 juli 2020 zijn gemaakt. Voor deze services kunt u deze eigenschap instellen op het bm25-classificatie-algoritme dat in juli 2020 is geïntroduceerd. Geldige waarden zijn ( "#Microsoft.Azure.Search.ClassicSimilarity" de vorige standaardinstelling) of "#Microsoft.Azure.Search.BM25Similarity".

Voor alle services die na juli 2020 zijn gemaakt, heeft het instellen van deze eigenschap geen effect. Alle nieuwere services gebruiken BM25 als het enige classificatie-algoritme voor zoeken in volledige tekst. Zie Classificatiealgoritmen in Azure AI Search voor meer informatie.

suggesties

Hiermee geeft u een constructie op waarin voorvoegsels voor overeenkomsten worden opgeslagen voor gedeeltelijke query's zoals automatisch aanvullen en suggesties.

Kenmerk Beschrijving
naam Vereist. De naam van de suggestieaar.
sourceFields Vereist. Een of meer tekenreeksvelden waarvoor u automatisch aanvullen of voorgestelde resultaten inschakelt.
searchMode Vereist en altijd ingesteld op analyzingInfixMatching. Hiermee wordt aangegeven dat de overeenkomst plaatsvindt voor elke term in de querytekenreeks.

vectorSearch

Het vectorSearch-object maakt configuratie van vectorzoekeigenschappen mogelijk. Momenteel kunnen alleen algoritmeconfiguraties worden geconfigureerd. Hiermee kunt u het algoritmetype en de algoritmeparameters configureren die worden gebruikt voor vectorvelden. U kunt meerdere configuraties hebben. Configuraties waarnaar wordt verwezen door een vectorveld kunnen niet worden gewijzigd of verwijderd. Configuraties waarnaar niet wordt verwezen, kunnen worden gewijzigd of verwijderd. Een definitie van een vectorveld (in de verzameling velden) moet opgeven welke configuratie van het vectorzoekalgoritmen (via de vectorSearchConfiguration eigenschap) het veld gebruikt.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Kenmerk Beschrijving
naam Vereist. De naam van de algoritmeconfiguratie.
Soort Het algoritmetype dat moet worden gebruikt. Alleen hnsw wordt ondersteund. Dit is het HNSW-algoritme (Hierarchical Navigable Small World).
hnswParameters Optioneel. Parameters voor het algoritme 'hnsw'. Als u dit object weglaat, worden standaardwaarden gebruikt.

hnswParameters

Dit object bevat de aanpassingen van hnsw algoritmeparameters. Alle eigenschappen zijn optioneel en standaardwaarden worden gebruikt als deze worden weggelaten.

Kenmerk Beschrijving
metrische waarde Tekenreeks. De metrische overeenkomstwaarde die moet worden gebruikt voor vectorvergelijkingen. Voor hnswzijn de toegestane waarden 'cosinus', 'euclidean' en 'dotProduct'. De standaardwaarde is 'cosinus'.
m Geheel getal. Het aantal bidirectionele koppelingen dat is gemaakt voor elk nieuw element tijdens de bouw. De standaard is 4. Het toegestane bereik is 4 tot 10. Grotere waarden leiden tot compactere grafieken, waardoor de queryprestaties worden verbeterd, maar meer geheugen en berekeningen nodig zijn.
efConstruction Geheel getal. De grootte van de dynamische lijst voor de dichtstbijzijnde buren die worden gebruikt tijdens het indexeren. De standaardwaarde is 400. Het toegestane bereik is 100 tot 1000.Grotere waarden leiden tot een betere indexkwaliteit, maar vereisen meer geheugen en berekeningen.
efSearch Geheel getal. De grootte van de dynamische lijst met de dichtstbijzijnde buren, die wordt gebruikt tijdens de zoektijd. De standaardwaarde is 500. Het toegestane bereik is 100 tot 1000. Het verhogen van deze parameter kan de zoekresultaten verbeteren, maar de queryprestaties worden vertraagd.

Omdat efSearch een query-tijdparameter is, kan deze waarde worden bijgewerkt, zelfs als een bestaand veld gebruikmaakt van een algoritmeconfiguratie.

Zie ook