Delen via


Index maken of bijwerken (preview-REST API)

is van toepassing op: 2023-07-01-Preview. Deze versie wordt niet meer ondersteund. upgrade onmiddellijk naar een nieuwere versie.

Belangrijk

2023-07-01-Preview voegt vectorzoekopdrachten toe.

  • vectorSearch object, een configuratie van vectorzoekinstellingen. Alleen van toepassing op vectorzoekalgoritmen.
  • 'Collection(Edm.Single)' gegevenstype, vereist voor een vectorveld. Vertegenwoordigt een drijvendekommagetal met één precisie als primitief type.
  • eigenschap 'dimensies', vereist voor een vectorveld. Vertegenwoordigt de dimensionaliteit van uw vector-insluitingen.
  • vectorSearchConfiguration eigenschap, vereist voor een vectorveld. Hiermee selecteert u de algoritmeconfiguratie voor dit veld.

2021-04-30-Preview voegt toe:

  • 'semanticConfiguration' gebruikt voor het bereik van semantische rangschikking naar specifieke velden.
  • 'identiteit', onder 'encryptionKey', 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, waaronder de verzameling velden (veldnamen, gegevenstypen en kenmerken), maar ook andere constructies (suggesties, scoreprofielen en CORS-configuratie) die andere zoekgedrag definiëren.

U kunt POST of PUT gebruiken voor een aanvraag voor maken. 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 voor 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.

Een index maken het schema en de metagegevens vastlegt. Het vullen van de index is een afzonderlijke bewerking. Voor deze stap kunt u een indexeerfunctie gebruiken (zie Indexeerbewerkingen, beschikbaar voor ondersteunde gegevensbronnen) of Documenten toevoegen, bijwerken of verwijderen. Het maximum aantal indexen dat u kunt maken, verschilt per prijscategorie. Binnen elke index gelden limieten voor afzonderlijke elementen. Zie Service-limieten voor Azure AI Searchvoor meer informatie.

Een bestaande index bijwerken 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, te wijzigen en vervolgens bij te werken met PUT.

Omdat een bestaande index inhoud bevat, vereisen veel indexwijzigingen een indexuitval en herbouwen. De volgende schemawijzigingen zijn 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 wordt gebruikt tijdens het uitvoeren van query 's (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 de aanvraag-URI op en voegt u vervolgens een volledig opgegeven indexdefinitie toe 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 twee dingen plaatsvindt: er wordt een waarde opgegeven voor het nieuwe veld (met samenvoegen) of er worden nieuwe documenten toegevoegd.

Updates voor een suggester vergelijkbare beperkingen hebben: nieuwe velden kunnen tegelijkertijd worden toegevoegd aan een suggester velden worden toegevoegd, maar bestaande velden kunnen niet worden verwijderd uit of worden toegevoegd aan suggesters zonder het opnieuw opbouwen van een index.

updates voor een analyse, een tokenizer, een tokenfilter of een tekenfilter niet zijn toegestaan. Er kunnen nieuwe worden gemaakt met de gewenste wijzigingen, maar u moet de index offline halen bij het toevoegen van de nieuwe analysedefinities. Als u de vlag allowIndexDowntime 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 minstens een paar seconden offline gehaald. Dit 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 slashes of punten hebben en minder dan 128 tekens bevatten. Streepjes kunnen niet opeenvolgend zijn.
api-version Vereist. Zie API-versies voor meer versies.
allowIndexDowntime Facultatief. Standaard onwaar. Ingesteld op waar voor bepaalde updates, zoals het toevoegen of wijzigen van een analyse, tokenizer, tokenfilter, tekenfilter of gelijkeniseigenschap. De index wordt offline gehaald tijdens de update, meestal niet langer dan enkele seconden.

Aanvraagheaders

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

Velden Beschrijving
Inhoudstype Vereist. Stel deze waarde in op application/json
api-key Optioneel als u Azure-rollen gebruikt en er een bearer-token wordt opgegeven in de aanvraag, anders is een sleutel vereist. Een API-sleutel is een unieke, door het systeem gegenereerde tekenreeks waarmee de aanvraag wordt geverifieerd bij uw zoekservice. Aanvragen maken moet een api-key header bevatten die is ingesteld op uw beheersleutel (in plaats van een querysleutel). Zie Verbinding maken met Azure AI Search met behulp van sleutelverificatie voor meer informatie.

Hoofdtekst van aanvraag

De hoofdtekst van de aanvraag bevat een schemadefinitie, waaronder de lijst met gegevensvelden in documenten 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, filterbaar, sorteerbaar en facetabel 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 analyses, normalizers, suggesties of synoniemen. Het moet een eigenschap 'dimensies' en een 'vectorSearchConfiguration'-eigenschap hebben.

Een schema dat vectorzoekopdrachten ondersteunt, kan ook trefwoordzoekopdrachten ondersteunen. Andere niet-ctorvelden in de index kunnen alle analyses, synoniemen en scoreprofielen gebruiken 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) { }  
}  

De 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 EDM (Entity Data Model) en kenmerken waarmee toegestane acties voor dat veld worden gedefinieerd. De verzameling velden moet één veld van het type Edm.String met 'sleutel' 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.
overeenkomsten Facultatief. Voor services die zijn gemaakt vóór 15 juli 2020, stelt u deze eigenschap in om het BM25-classificatie-algoritme aan te geven.
suggesties Hiermee geeft u een constructie op waarin voorvoegsels worden opgeslagen voor overeenkomsten op gedeeltelijke query's, zoals automatisch aanvullen en suggesties.
scoringProfiles Facultatief. Wordt gebruikt voor het afstemmen van relevantie voor query's in volledige tekst.
semantische Facultatief. Hiermee definieert u de parameters van een zoekindex die van invloed zijn op semantische zoekmogelijkheden. Er is een semantische configuratie vereist voor semantische query's. Zie Een semantische query makenvoor meer informatie.
vectorSearch- Facultatief. Hiermee configureert u verschillende vectorzoekinstellingen. Alleen vectorzoekalgoritmen kunnen worden geconfigureerd.
normalizers Facultatief. Normaliseert de lexicografische volgorde van tekenreeksen, waardoor niet-hoofdlettergevoelige sorteer- en filteruitvoer wordt geproduceerd.
analyzers, charFilters, tokenizers, tokenFilters Facultatief. Geef deze secties van de index op als u aangepaste analysefunctiesdefinieert. Deze secties zijn standaard null.
defaultScoringProfile Naam van een aangepast scoreprofiel waarmee het standaardscoregedrag wordt overschreven.
corsOptions- Facultatief. Wordt gebruikt voor cross-origin-query's voor uw index.
encryptionKey- Facultatief. 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 2019-01-01.

Antwoord

Voor een geslaagde aanvraag voor het maken ziet u de statuscode '201 Gemaakt'. De hoofdtekst van het antwoord bevat standaard de JSON voor de indexdefinitie die is gemaakt. Als de voorkeursaanvraagheader echter is ingesteld op return=minimal, is de hoofdtekst van het antwoord leeg en is de statuscode '204 Geen inhoud' in plaats van '201 Gemaakt'. Dit geldt ongeacht of PUT of POST wordt gebruikt om de index te maken.

Voor een geslaagde updateaanvraag ziet u '204 Geen inhoud'. Standaard is de hoofdtekst van het antwoord leeg. Als de Prefer aanvraagheader echter is ingesteld op return=representation, bevat de hoofdtekst van het antwoord de JSON voor de indexdefinitie die is bijgewerkt. In dit geval is de successtatuscode '200 OK'.

Voorbeelden

voorbeeld: Vector

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

Veel kenmerken zijn alleen van toepassing op niet-ctorvelden. Kenmerken zoals 'filterbaar', 'sorteerbaar', 'facetable', 'analyzer', 'normalizer' en 'synoniemkaarten' worden genegeerd voor vectorvelden. Als u eigenschappen met alleen vectoren instelt, zoals 'dimensies' of 'vectorSearchConfiguration' in het 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 velden voor vector- en niet-vectorquery's. De velden 'title', 'titleVector', 'content', 'contentVector' volgen deze conventie. Als u ook semantische zoekopdrachten wilt gebruiken, moet u niet-ctortekstvelden hebben voor dit gedrag.

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

Een suggestie definitie moet 'doorzoekbare' en 'ophaalbare' tekenreeksvelden opgeven (in de REST API's zijn alle eenvoudige velden standaard "retrievable": true). Nadat een suggestieprogramma is gedefinieerd, kunt u ernaar verwijzen op naam voor queryaanvragen die gebruikmaken van de Suggestions-API of 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

Analyzers en normalizers worden verwezen in velddefinities en kunnen vooraf gedefinieerd of aangepast zijn. Als u aangepaste analysefuncties of normalizers 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 demonstreert ook een vooraf gedefinieerde normalizer (standaard) en analyzer (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: Overeenkomsten 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 algoritme voor overeenkomsten altijd BM25 is. Voor bestaande services die zijn gemaakt vóór 15 juli 2020, kunt u zich als volgt aanmelden voor BM25 door deze constructie in te stellen:

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

voorbeeld: CORS-opties

JavaScript aan de clientzijde kan standaard geen API's aanroepen, omdat in de browser alle cross-origin-aanvragen worden voorkomen. Als u cross-origin-query's wilt toestaan voor uw index, schakelt u CORS (Cross-origin resource sharing (Wikipedia)) in door het kenmerk corsOptions in te stellen. Om veiligheidsredenen bieden alleen query-API's ondersteuning voor 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 Encryption met door de klant beheerde sleutels in Azure Key Vaultvoor 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 verifiëren bij Azure Key Vault met behulp van een door het systeem toegewezen of door de gebruiker toegewezen beheerde identiteit (preview). Laat in dit geval de toegangsreferenties weg of stel deze 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 waarmee u aangepast scoregedrag definieert waarmee u kunt beïnvloeden welke documenten hoger in de zoekresultaten worden weergegeven. Scoreprofielen bestaan uit veldgewichten en -functies. Als u deze wilt gebruiken, geeft u een profiel op naam op voor 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 naar classificatie, bijschriften, hoogtepunten en antwoorden. Als u semantische zoekopdrachten wilt gebruiken, moet u de naam van een semantische configuratie opgeven tijdens de query. Zie Een semantische query makenvoor 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

Verbinden Beschrijving
corsOptions- Geeft een lijst weer van de domeinen of oorsprongen die aan uw index worden verleend.
defaultScoringProfile Naam van een aangepast scoreprofiel waarmee het standaardscoregedrag wordt overschreven.
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 normalizer. Normaliseert de lexicografische volgorde van tekenreeksen, waardoor hoofdlettergevoelige sortering, facet- en filteruitvoer wordt geproduceerd.
semantische Hiermee configureert u velden die worden gebruikt door semantische zoekopdrachten naar classificatie, bijschriften, markeringen en antwoorden.
scoringProfiles Wordt gebruikt voor het afstemmen van relevantie voor query's in volledige tekst.
overeenkomsten
suggesties Hiermee configureert u interne voorvoegselopslag voor overeenkomende query's voor gedeeltelijke query's, zoals automatisch aanvullen en suggesties.
vectorSearch- Hiermee configureert u het algoritme dat wordt gebruikt voor vectorvelden.

corsOptions

JavaScript aan de clientzijde kan standaard geen API's aanroepen, omdat in de browser alle cross-origin-aanvragen worden voorkomen. 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 bieden alleen query-API's ondersteuning voor CORS.

Attribuut Beschrijving
allowedOrigins Vereist. Een door komma's gescheiden lijst met oorsprongen die toegang krijgen tot uw index, waarbij elke oorsprong doorgaans van de vorm is protocol://<volledig gekwalificeerde domeinnaam>:<poort-> (hoewel de <poort> vaak wordt weggelaten). Dit betekent dat elke JavaScript-code die afkomstig is van deze origins, een query mag uitvoeren 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 Facultatief. Browsers gebruiken deze waarde om de duur (in seconden) te bepalen voor het opslaan van CORS-preflight-antwoorden. Dit moet een niet-negatief geheel getal zijn. De prestaties worden verbeterd als deze waarde groter is, maar deze winsten worden gecompenseerd door de tijd die nodig is om wijzigingen in CORS-beleid van kracht te laten worden. Als deze niet is ingesteld, wordt een standaardduur van 5 minuten gebruikt.

defaultScoringProfile

Facultatief. Een tekenreeks die de naam is van een aangepast scoreprofiel dat in de index is gedefinieerd. Er wordt een standaardprofiel aangeroepen wanneer een aangepast profiel niet expliciet wordt opgegeven in de querytekenreeks. Zie Scoreprofielen toevoegen aan een zoekindexvoor 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.

Er moet een verbinding met de sleutelkluis worden geverifieerd. Hiervoor kunt u accessCredentials of een beheerde identiteit gebruiken.

Beheerde identiteiten kunnen door het systeem of door de gebruiker toegewezen worden (preview). Als de zoekservice zowel een door het systeem toegewezen beheerde identiteit als een roltoewijzing heeft die leestoegang verleent tot de sleutelkluis, 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.

Attribuut 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-URI kan https://my-keyvault-name.vault.azure.net
accessCredentials Facultatief. 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 uw opgegeven Azure Key Vault).
applicationSecret (de verificatiesleutel van de opgegeven Azure AD-toepassing).
identiteit Optioneel, tenzij u een door de gebruiker toegewezen beheerde identiteit gebruikt voor de verbinding met de zoekservice met Azure Key Vault. De indeling is "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Velden

Bevat informatie over kenmerken in een velddefinitie.

Attribuut Beschrijving
naam Vereist. Hiermee stelt u de naam van het veld in, die 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 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 naar uw index kunt uploaden. Collection(Edm.Single) is geschikt voor drijvendekommawaarden met één precisie. Deze 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 de documenten in de index uniek identificeren. De maximale lengte van waarden in een sleutelveld is 1024 tekens. Precies één veld op het hoogste niveau in elke index moet worden gekozen als het sleutelveld en 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 Document opzoeken en Documenten toevoegen, bijwerken of verwijderen voor meer informatie.
ophaalbaar Hiermee wordt aangegeven of het veld kan worden geretourneerd in een zoekresultaat. Stel dit kenmerk in op false 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 worden true voor sleutelvelden en moet worden null voor complexe velden. Dit kenmerk kan worden gewijzigd voor bestaande velden. Het instellen dat kan worden opgehaald voor true veroorzaakt geen toename van de opslagvereisten voor indexen. De standaardwaarde is true voor eenvoudige velden en null voor complexe velden.
doorzoekbaar Geeft aan of het veld doorzoekbaar is in volledige tekst en waarnaar kan worden verwezen in zoekquery's. Dit betekent dat het lexicale analyse, zoals woordbreking tijdens het indexeren. Als u een doorzoekbaar veld instelt op een waarde zoals 'Zonnige dag', wordt het 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) zijn standaard doorzoekbaar. Dit kenmerk moet worden false voor eenvoudige velden van andere niet-strende gegevenstypen en moet null zijn voor complexe velden.

Een doorzoekbaar veld verbruikt extra ruimte in uw index omdat Azure AI Search de inhoud van deze velden verwerkt en ordent in ondersteunende gegevensstructuren voor het uitvoeren van zoekopdrachten. Als u ruimte wilt besparen in uw index en u geen veld nodig hebt om te worden opgenomen 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 naar het veld moet worden 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 f op 'Zonnige dag', $filter=f eq 'sunny' geen overeenkomsten vindt, maar $filter=f eq 'Sunny day' wel. Dit kenmerk moet worden null voor complexe velden. De standaardwaarde is true voor eenvoudige velden en null voor complexe velden. Als u de indexgrootte wilt verkleinen, stelt u dit kenmerk in op false voor velden waarop u niet wilt filteren.
Sorteerbare Hiermee wordt aangegeven of naar het veld moet worden verwezen in $orderby expressies. 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 zijn ook meerdere waarden en kunnen daarom niet worden gesorteerd. Dit is waar, of het nu een direct bovenliggend veld of een bovenliggend veld is, dat is de complexe verzameling. Complexe velden kunnen niet worden gesorteerd en het sorteerbare kenmerk moet worden null voor dergelijke velden. De standaardinstelling voor sorteerbaar 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 naar het veld moet worden verwezen in facetquery's. Meestal gebruikt in een presentatie van zoekresultaten met hit count per categorie (bijvoorbeeld zoeken naar digitale camera's en treffers per merk, per megapixel, prijs, enzovoort). Dit kenmerk moet worden null voor complexe velden. Velden van het type Edm.GeographyPoint of Collection(Edm.GeographyPoint) kunnen niet worden weergegeven. De standaardwaarde is true voor alle andere eenvoudige velden. Als u de indexgrootte wilt verkleinen, stelt u dit kenmerk in op false voor velden waarop u geen facet hebt.
Analyzer Hiermee stelt u de lexical analyzer in voor het tokeniseren van tekenreeksen tijdens het indexeren en querybewerkingen. Geldige waarden voor deze eigenschap zijn taalanalyses, ingebouwde analyseanalysesen aangepaste analyse. 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 in de index is gemaakt, kan het niet worden gewijzigd voor het veld. Moet null zijn voor complexe velden.
searchAnalyzer Stel deze eigenschap samen 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 controleert u of indexAnalyzer is ingesteld op een toegestane waarde. Geldige waarden voor deze eigenschap zijn ingebouwde analyses en aangepaste analyse. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. De zoekanalyse kan worden bijgewerkt op een bestaand veld, omdat deze alleen wordt gebruikt tijdens het uitvoeren van query's. Moet null zijn voor complexe velden.
indexAnalyzer Stel deze eigenschap samen met searchAnalyzer 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 controleert u of searchAnalyzer is ingesteld op een toegestane waarde. Geldige waarden voor deze eigenschap zijn ingebouwde analyses en aangepaste analyse. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. Zodra de indexanalyse is gekozen, kan deze niet meer worden gewijzigd voor het veld. Moet null zijn voor complexe velden.
Normalizer Hiermee stelt u de normalizer in voor het filteren, sorteren en faceten van bewerkingen. Dit kan de naam zijn van een vooraf gedefinieerde normalizer of een aangepaste normalizer die in de index is gedefinieerd. De standaardwaarde is null, wat resulteert in een exacte overeenkomst op exacte bewoordingen, niet-geanalyseerde tekst. Dit kenmerk kan alleen worden gebruikt met Edm.String en Collection(Edm.String) velden met ten minste één van de filterbare, sorteerbare of facetable ingesteld op true. Een normalizer kan alleen worden ingesteld op het veld wanneer deze wordt toegevoegd aan de index en kan later niet meer worden gewijzigd. Moet null zijn voor complexe velden. Geldige waarden voor een vooraf gedefinieerde normalisatiefunctie zijn onder andere:

standard- Kleine letters, gevolgd door asciifolding.
lowercase: transformeert tekens naar kleine letters.
uppercase : transformeert tekens in hoofdletters.
asciifolding: transformeert tekens die zich niet in het Latijnse Unicode-basisblok bevinden naar het ASCII-equivalent, indien aanwezig. Als u bijvoorbeeld 'à' wijzigt in 'a'.
elision- Verwijdert elision vanaf het begin van de tokens.
synoniemmaps Een lijst met de namen van synoniemen die aan dit veld moeten worden gekoppeld. Dit kenmerk kan alleen worden gebruikt met doorzoekbare velden. Op dit moment wordt slechts één synoniemenkaart per veld ondersteund. Als u een synoniemtoewijzing toewijst aan een veld, zorgt u ervoor dat querytermen die gericht zijn op dat veld tijdens query's worden uitgebreid met behulp van de regels in de synoniementoewijzing. Dit kenmerk kan worden gewijzigd voor bestaande velden. Moet null of een lege verzameling zijn voor complexe velden.
Velden Een lijst met subvelden als dit een veld van het type Edm.ComplexType of Collection(Edm.ComplexType)is. Moet null of leeg zijn voor eenvoudige velden. Zie Complexe gegevenstypen modelleren in Azure AI Search voor meer informatie over hoe en wanneer subvelden moeten worden gebruikt.
Dimensies Geheel getal. Vereist voor vectorvelden. **Dit moet overeenkomen met de grootte van het insluiten van uitvoer van het 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 een maximum van 2048 drijvendekommawaarden.
vectorSearchConfiguration Vereist voor vectorvelddefinities. Hiermee geeft u de naam van de 'vectorSearch'-algoritmeconfiguratie gebruikt door het vectorveld. Zodra het veld is gemaakt, kunt u de naam van vectorSearchConfiguration niet wijzigen, maar u kunt de eigenschappen van de algoritmeconfiguratie in de index wijzigen. Hierdoor kunnen het algoritmetype en de parameters worden aangepast.

Notitie

Velden van het type Edm.String die filterbaar, sorteerbaar of facetabel 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 wilt opslaan dan dit in één tekenreeksveld, moet u expliciet filterbaar, sorteerbaar en facetabel instellen op false 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 op doorzoekbaar, filterbaar, sorteerbaar of facetabel, kan het veld niet worden verwezen in een query-expressie. Dit is handig voor velden die niet worden gebruikt in query's, maar die 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 op een velddefinitie.

Attribuut Beschrijving
naam Vereist. Tekenreeksveld waarmee een door de gebruiker gedefinieerde aangepaste normalizer wordt opgegeven.
charFilters Wordt gebruikt in een aangepaste normalizer. Dit kan een of meer beschikbare tekenfilters ondersteund voor gebruik in een aangepaste normalizer:
toewijzing
pattern_replace
tokenFilters Wordt gebruikt in een aangepaste normalizer. Het kan een of meer van de beschikbare token tilters 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 letters
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 profiel toewijzen dat u aan een query wilt toewijzen.

Als u een aangepast profiel maakt, kunt u deze standaard instellen door defaultScoringProfilein te stellen. Zie Scoreprofielen toevoegen aan een zoekindexvoor meer informatie.

semantisch

Een semantische configuratie maakt deel uit van een indexdefinitie die wordt gebruikt om te configureren welke velden worden gebruikt door semantische zoekopdrachten naar classificatie, bijschriften, hoogtepunten 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 subproperties (titleField, prioriteerdeKeywordsFields en prioriteerdeContentFields). Elk veld van het type Edm.String of Collection(Edm.String) kan worden gebruikt als onderdeel van een semantische configuratie.

Als u semantische zoekopdrachten wilt gebruiken, moet u de naam van een semantische configuratie opgeven tijdens de query. Zie Een semantische query makenvoor 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": "..."
             }
           ]
         }
       }
     ]
   }
}
Attribuut Beschrijving
naam Vereist. De naam van de semantische configuratie.
prioritair veld Vereist. Beschrijft de titel-, inhouds- en trefwoordvelden die moeten worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Ten minste één van de drie subproperties (titleField, prioriteerdeKeywordsFields en prioriteerdeContentFields) moet worden ingesteld.
prioritizedFields.titleField Hiermee definieert u het titelveld dat moet worden gebruikt voor semantische rangschikking, bijschriften, markeringen en antwoorden. Als u geen titelveld in uw index hebt, laat u dit veld 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 in natuurlijke taal bevatten. De volgorde van de velden in de matrix vertegenwoordigt hun prioriteit. Velden met een lagere prioriteit worden mogelijk 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 vertegenwoordigt hun prioriteit. Velden met een lagere prioriteit worden mogelijk 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 voor het gebruik van 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 Searchvoor meer informatie.

suggesties

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

Attribuut Beschrijving
naam Vereist. De naam van de suggestie.
sourceFields Vereist. Een of meer tekenreeksvelden waarvoor u automatisch aanvullen of voorgestelde resultaten inschakelt.
searchMode Vereist en altijd ingesteld op analyzingInfixMatching. Hiermee geeft u op dat overeenkomende waarden worden uitgevoerd op een term in de querytekenreeks.

vectorSearch

Het vectorSearch-object maakt configuratie van vectorzoekeigenschappen mogelijk. Alleen algoritmeconfiguraties kunnen momenteel worden geconfigureerd. Hiermee kunt u configuratie van het algoritmetype en de algoritmeparameters 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 vectorvelddefinitie (in de veldenverzameling) moet opgeven welke configuratie van vectorzoekalgoritmen (via de eigenschap vectorSearchConfiguration) die het veld gebruikt.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Attribuut 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 Facultatief. Parameters voor 'hnsw'-algoritme. Als dit object wordt weggelaten, worden standaardwaarden gebruikt.

hnswParameters

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

Attribuut Beschrijving
metriek Snaar. 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 tijdens de bouw voor elk nieuw element is gemaakt. De standaardwaarde is 4. Het toegestane bereik is 4 tot 10. Grotere waarden leiden tot dichtere grafieken, waardoor queryprestaties worden verbeterd, maar er is meer geheugen en berekening nodig.
efConstruction Geheel getal. De grootte van de dynamische lijst voor de dichtstbijzijnde buren die tijdens het indexeren worden gebruikt. 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 tijdens de zoektijd wordt gebruikt. De standaardwaarde is 500. Het toegestane bereik is 100 tot 1000. Als u deze parameter verhoogt, worden de zoekresultaten mogelijk verbeterd, maar worden de queryprestaties vertraagd.

Aangezien efSearch een querytijdparameter is, kan deze waarde worden bijgewerkt, zelfs als een bestaand veld een algoritmeconfiguratie gebruikt.

Zie ook