Freigeben über


Erstellen oder Aktualisieren des Indexes (Vorschau-REST-API)

gilt für: 2023-07-01-Preview. Diese Version wird nicht mehr unterstützt. Upgrade sofort auf eine neuere Version.

Wichtig

2023-07-01-Preview fügt die Vektorsuche hinzu.

  • "vectorSearch" Objekt, eine Konfiguration der Vektorsucheinstellungen. Gilt nur für Vektorsuchalgorithmen.
  • "Collection(Edm.Single)" Datentyp, der für ein Vektorfeld erforderlich ist. Stellt eine Gleitkommazahl mit einfacher Genauigkeit als Grundtyp dar.
  • "dimensions" Eigenschaft, die für ein Vektorfeld erforderlich ist. Stellt die Dimensionalität Ihrer Vektoreinbettungen dar.
  • "vectorSearchConfiguration" Eigenschaft, die für ein Vektorfeld erforderlich ist. Wählt die Algorithmuskonfiguration für dieses Feld aus.

2021-04-30-Preview fügt Folgendes hinzu:

  • "semanticConfiguration" verwendet, um die semantische Rangfolge auf bestimmte Felder festzulegen.
  • "Identität", unter "encryptionKey", verwendet, um einen vom Kunden verwalteten Verschlüsselungsschlüssel aus Azure Key Vault mithilfe einer vom Benutzer zugewiesenen verwalteten Identität abzurufen.

2020-06-30-Preview fügt Folgendes hinzu:

  • "Normalisierer", die für Sortierungen und Filter bei Sortierungen und Filtern verwendet wird, bei der Groß-/Kleinschreibung nicht beachtet wird.

Ein Index gibt das Indexschema an, einschließlich der Feldsammlung (Feldnamen, Datentypen und Attribute), aber auch andere Konstrukte (Suggester, Bewertungsprofile und CORS-Konfiguration), die andere Suchverhalten definieren.

Sie können POST oder PUT für eine Erstellungsanforderung verwenden. Der Anforderungstext stellt entweder die Objektdefinition bereit.

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

Verwenden Sie für Updateanforderungen PUT, und geben Sie den Indexnamen für den URI an.

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

HTTPS ist für alle Serviceanfragen erforderlich. Wenn der Index nicht vorhanden ist, wird er erstellt. Wenn sie bereits vorhanden ist, wird sie auf die neue Definition aktualisiert.

Erstellen eines Indexes das Schema und die Metadaten. Das Auffüllen des Indexes ist ein separater Vorgang. In diesem Schritt können Sie einen Indexer (siehe Indexervorgänge, verfügbar für unterstützte Datenquellen) oder Hinzufügen, Aktualisieren oder Löschen von Dokumentenverwenden. Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Preisniveau. Innerhalb jedes Indexes gibt es Grenzwerte für einzelne Elemente. Weitere Informationen finden Sie unter Dienstbeschränkungen für Azure AI Search.

Das Aktualisieren eines vorhandenen Index- muss die vollständige Schemadefinition enthalten, einschließlich aller ursprünglichen Definitionen, die Sie beibehalten möchten. Im Allgemeinen besteht das beste Muster für Updates darin, die Indexdefinition mit einem GET abzurufen, zu ändern und dann mit PUT zu aktualisieren.

Da ein vorhandener Index Inhalt enthält, benötigen viele Indexänderungen eine Indexablage und erstellenneu. Die folgenden Schemaänderungen sind eine Ausnahme zu dieser Regel:

  • Hinzufügen neuer Felder

  • Hinzufügen oder Ändern von Bewertungsprofilen

  • Hinzufügen oder Ändern semantischen Konfigurationen

  • Ändern von CORS-Optionen

  • Ändern vorhandener Felder mit einer der folgenden drei Änderungen:

    • Ein- oder Ausblenden von Feldern (retrievable: true | false)
    • Ändern der zur Abfragezeit verwendeten Analyse (searchAnalyzer)
    • Hinzufügen oder Bearbeiten der zur Abfragezeit verwendeten synonymMap (synonymMaps)

Wenn Sie eine der oben genannten Schemaänderungen an einem vorhandenen Index vornehmen möchten, geben Sie den Namen des Indexes für den Anforderungs-URI an, und fügen Sie dann eine vollständig angegebene Indexdefinition mit den neuen oder geänderten Elementen ein.

Wenn ein neues Feld hinzugefügt wird, weisen alle vorhandenen Dokumente im Index automatisch einen Nullwert für dieses Feld auf. Es wird kein zusätzlicher Speicherplatz verbraucht, bis eines von zwei Dingen auftritt: Ein Wert wird für das neue Feld (mithilfe von Zusammenführung) oder neue Dokumente hinzugefügt.

Aktualisierungen für eine suggester ähnliche Einschränkungen aufweisen: Neue Felder können einem suggester gleichzeitig hinzugefügt werden, aber vorhandene Felder können nicht aus suggesters entfernt oder hinzugefügt werden, ohne dass ein Index neu erstellt wird.

Aktualisierungen an einer Analyse, einem Tokenizer, einem Tokenfilter oder einem Zeichenfilter nicht zulässig sind. Neue können mit den gewünschten Änderungen erstellt werden, aber Sie müssen den Index offline schalten, wenn Sie die neuen Analysedefinitionen hinzufügen. Durch Festlegen des allowIndexDowntime Flags auf "true" in der Indexaktualisierungsanforderung wird der Index offline:

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

Dieser Vorgang nimmt Den Index für mindestens ein paar Sekunden offline, was bedeutet, dass Indizierungs- und Abfrageanforderungen fehlschlagen, bis der Index wieder online ist und bereit für die Verarbeitung von Anforderungen ist.

URI-Parameter

Parameter Beschreibung
Dienstname Erforderlich. Legen Sie diesen Wert auf den eindeutigen, benutzerdefinierten Namen Ihres Suchdiensts fest.
Indexname Erforderlich für den URI, wenn PUT verwendet wird. Der Name muss klein geschrieben sein, beginnt mit einem Buchstaben oder einer Zahl, hat keine Schrägstriche oder Punkte und darf maximal 128 Zeichen lang sein. Striche können nicht aufeinander folgen.
API-Version Erforderlich. Weitere Versionen finden Sie unter API-Versionen.
allowIndexDowntime Wahlfrei. False standardmäßig. Für bestimmte Updates auf "true" festgelegt, z. B. Hinzufügen oder Ändern einer Analyse-, Tokenizer-, Tokenfilter-, Char-Filter- oder Ähnlichkeitseigenschaft. Der Index wird während der Aktualisierung offline geschaltet, in der Regel nicht mehr als mehrere Sekunden.

Anforderungsheader

In der folgenden Tabelle werden die erforderlichen und optionalen Anforderungsheader beschrieben.

Felder Beschreibung
Inhaltstyp Erforderlich. Legen Sie diesen Wert auf application/json
API-Schlüssel Optional, wenn Sie Azure-Rollen verwenden und ein Bearertoken für die Anforderung bereitgestellt wird, andernfalls ist ein Schlüssel erforderlich. Ein API-Schlüssel ist eine eindeutige vom System generierte Zeichenfolge, die die Anforderung an Ihren Suchdienst authentifiziert. Create requests must include an api-key header set to your admin key (as as to a query key). Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure AI Search mithilfe der Schlüsselauthentifizierung.

Anforderungstext

Der Textkörper der Anforderung enthält eine Schemadefinition, die die Liste der Datenfelder in Dokumenten enthält, die in diesen Index eingespeist werden.

Der folgende JSON-Code ist eine allgemeine Darstellung eines Schemas, das die Vektorsuche unterstützt. Ein Schema erfordert ein Schlüsselfeld, und dieses Schlüsselfeld kann durchsuchbar, filterbar, sortierbar und facetable sein.

Ein Vektorsuchfeld ist vom Typ Collection(Edm.Single). Da Vektorfelder nicht textual sind, kann ein Vektorfeld nicht als Schlüssel verwendet werden und akzeptiert keine Analyzer, Normalisierer, Suggester oder Synonyme. Sie muss über eine "dimensions"-Eigenschaft und eine "vectorSearchConfiguration"-Eigenschaft verfügen.

Ein Schema, das die Vektorsuche unterstützt, kann auch die Stichwortsuche unterstützen. Andere Nichtvektorfelder im Index können alle Analyse-, Synonyme und Bewertungsprofile verwenden, die Sie in Ihren Index aufnehmen.

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

Die Anforderung enthält die folgenden Eigenschaften:

Eigentum Beschreibung
Name Erforderlich. Der Name des Indexes. Ein Indexname darf nur Kleinbuchstaben, Ziffern oder Striche enthalten, darf nicht mit Bindestrichen beginnen oder enden und ist auf 128 Zeichen beschränkt.
Beschreibung Eine optionale Beschreibung.
Felder Eine Auflistung von Feldern für diesen Index, wobei jedes Feld einen Namen hat, einen unterstützten Datentyp, der dem Entity Data Model (EDM) entspricht, und Attribute, die zulässige Aktionen für dieses Feld definieren. Die Feldauflistung muss über ein Feld vom Typ Edm.String verfügen, wobei "key" auf "true" festgelegt ist. Dieses Feld stellt den eindeutigen Bezeichner dar, der manchmal als Dokument-ID bezeichnet wird, für jedes Dokument, das mit dem Index gespeichert ist. Die Fields-Auflistung akzeptiert jetzt Vektorfelder.
Ähnlichkeit Wahlfrei. Legen Sie für Dienste, die vor dem 15. Juli 2020 erstellt wurden, diese Eigenschaft so fest, dass sie sich für den BM25-Bewertungsalgorithmus entscheidet.
Suggester Gibt ein Konstrukt an, das Präfixe für den Abgleich für Teilabfragen wie AutoVervollständigen und Vorschläge speichert.
scoreProfiles- Wahlfrei. Wird für die Relevanzoptimierung für Volltextabfragen verwendet.
semantischen Wahlfrei. Definiert die Parameter eines Suchindexes, die die Semantik-Suchfunktionen beeinflussen. Für semantische Abfragen ist eine semantische Konfiguration erforderlich. Weitere Informationen finden Sie unter Erstellen einer semantischen Abfrage.
vectorSearch- Wahlfrei. Konfiguriert verschiedene Vektorsucheinstellungen. Es können nur Vektorsuchalgorithmen konfiguriert werden.
Normalisierer Wahlfrei. Normalisiert die lexikographische Sortierung von Zeichenfolgen, wodurch die Sortierung und Filterausgabe ohne Groß-/Kleinschreibung erzeugt wird.
Analyzer, charFilters, tokenizers, tokenFilters Wahlfrei. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierten Analysatorendefinieren. Standardmäßig sind diese Abschnitte null.
defaultScoringProfile- Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
corsOptions Wahlfrei. Wird für Ursprungsabfragen für Ihren Index verwendet.
encryptionKey- Wahlfrei. Wird für die zusätzliche Verschlüsselung des Indexes über vom Kunden verwalteten Verschlüsselungsschlüssel (CMK) in Azure Key Vault verwendet. Verfügbar für abrechnende Suchdienste, die am oder nach 2019-01-01 erstellt wurden.

Antwort

Für eine erfolgreiche Erstellungsanforderung sollte der Statuscode "201 Erstellt" angezeigt werden. Standardmäßig enthält der Antworttext den JSON-Code für die indexdefinition, die erstellt wurde. Wenn der Anforderungsheader "Prefer" jedoch auf "return=minimal" festgelegt ist, ist der Antworttext leer, und der Erfolgsstatuscode lautet "204 No Content" anstelle von "201 Created". Dies gilt unabhängig davon, ob PUT oder POST zum Erstellen des Indexes verwendet wird.

Für eine erfolgreiche Updateanforderung sollte "204 Kein Inhalt" angezeigt werden. Standardmäßig ist der Antworttext leer. Wenn der Prefer Anforderungsheader jedoch auf return=representationfestgelegt ist, enthält der Antworttext den JSON-Code für die Indexdefinition, die aktualisiert wurde. In diesem Fall lautet der Erfolgsstatuscode "200 OK".

Beispiele

Beispiel: Vector-

Die Vektorsuche wird auf Feldebene implementiert. Diese Definition legt den Fokus auf Vektorfelder. Vektorfelder müssen vom Typ Collection(Edm.Single) verwendet werden, um Gleitkommawerte mit einfacher Genauigkeit zu speichern. Vektorfelder verfügen über eine "dimensions"-Eigenschaft, die die Anzahl der Ausgabeabmessungen enthält, die vom maschinellen Lernmodell unterstützt werden, das zum Generieren von Einbettungen verwendet wird. Wenn Sie z. B. text-embedding-ada-002 verwenden, beträgt die maximale Anzahl von Ausgabeabmessungen 1536 pro diesem Dokument. Der "algorithmConfiguration" wird auf den Namen der "vectorSearch"-Konfiguration in Ihrem Index festgelegt. Sie können mehrere Werte im Index definieren und dann ein Feld pro Feld angeben.

Viele Attribute gelten nur für Nichtvektorfelder. Attribute wie "filterable", "sortable", "facetable", "analyzer", "normalizer" und "synonymMaps" werden für Vektorfelder ignoriert. Ebenso werden diese Attribute ignoriert, wenn Sie Vektoreigenschaften wie "dimensions" oder "vectorSearchConfiguration" für Felder festlegen, die alphanumerische Inhalte enthalten.

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

Beispiel: Feldauflistungen mit Vektor- und nicht Vektorfeldern

Die Vektorsuche wird auf Feldebene implementiert. Um Hybridabfrageszenarien zu unterstützen, erstellen Sie Felderpaare für Vektor- und Nichtvectorabfragen. Die Felder "title", "titleVector", "content", "contentVector" folgen dieser Konvention. Wenn Sie auch die semantische Suche verwenden möchten, müssen Sie nicht Vektortextfelder für diese Verhaltensweisen haben.

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

Beispiel: Ein Indexschema mit einfachen und komplexen Feldern

Das erste Beispiel zeigt ein vollständiges Indexschema mit einfachen und komplexen Feldern. Mindestens ein Zeichenfolgenfeld muss auf "key" auf "true" festgelegt sein.

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

Beispiel: Suggesters

Ein Suggester Definition sollte "durchsuchbare" und "abrufbare" Zeichenfolgenfelder angeben (in den REST-APIs sind alle einfachen Felder standardmäßig "retrievable": true). Nachdem ein Vorschlager definiert wurde, können Sie anhand des Namens für Abfrageanforderungen verweisen, die entweder die Vorschläge-API oder AutoVervollständigen-APIverwenden, je nachdem, ob Sie eine Übereinstimmung oder den Rest eines Abfrageausdrucks zurückgeben möchten.

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

Beispiel: Analyzer und Normalisierer

Analyzers und Normalisierer werden auf Felddefinitionen verwiesen und können entweder vordefinierte oder benutzerdefinierte Sein. Wenn Sie benutzerdefinierte Analyzer oder Normalisierer verwenden, geben Sie sie im Index in den Abschnitten "Analyzer" und "Normalizer" an.

Im folgenden Beispiel werden benutzerdefinierte Analysegeräte und Normalisierer für "Tags" veranschaulicht. Außerdem wird ein vordefinierter Normalisierer (Standard) und Analyzer (en.microsoft) für "HotelName" bzw. "Description" veranschaulicht.

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

Beispiel: Ähnlichkeit der Suchrelevanz

Diese Eigenschaft legt den Bewertungsalgorithmus fest, der zum Erstellen einer Relevanzbewertung in Suchergebnissen einer Volltextsuchabfrage verwendet wird. In Diensten, die nach 15. Juli 2020 erstellt wurden, wird diese Eigenschaft ignoriert, da der Ähnlichkeitsalgorithmus immer BM25 ist. Für vorhandene Dienste, die vor dem 15. Juli 2020 erstellt wurden, können Sie sich bei BM25 anmelden, indem Sie dieses Konstrukt wie folgt festlegen:

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

Beispiel: CORS-Optionen

Clientseitiges JavaScript kann standardmäßig keine APIs aufrufen, da der Browser alle ursprungsübergreifenden Anforderungen verhindert. Aktivieren Sie CORS (cross-origin resource sharing (Wikipedia)), um ursprungsübergreifende Abfragen für Ihren Index zuzulassen, indem Sie das attribut corsOptions festlegen. Aus Sicherheitsgründen unterstützen nur Abfrage-APIs 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)  
     }
}

Beispiel: Verschlüsselungsschlüssel mit Zugriffsanmeldeinformationen

Verschlüsselungsschlüssel sind vom Kunden verwaltete Schlüssel, die für eine zusätzliche Verschlüsselung verwendet werden. Weitere Informationen finden Sie unter Verschlüsselung mithilfe von vom Kunden verwalteten Schlüsseln in Azure Key Vault.

{
    "name": "hotels",  
    "fields": [ omitted for brevity ],
    "suggesters": [ omitted for brevity ],
    "analyzers": [ omitted for brevity ],
    "encryptionKey": (optional) { 
       "keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
       "keyVaultKeyVersion": "Version of the Azure Key Vault key",
       "keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
       "accessCredentials": (optional, only if not using managed system identity) {
          "applicationId": "AAD Application ID that was granted access permissions to your specified Azure Key Vault",
          "applicationSecret": "Authentication key of the specified AAD application)"
        }
    }
} 

Beispiel: Verschlüsselungsschlüssel mit verwalteter Identität

Sie können sich bei Azure Key Vault authentifizieren, indem Sie eine vom System zugewiesene oder vom Benutzer zugewiesene verwaltete Identität (Vorschau) verwenden. Lassen Sie in diesem Fall keine Zugriffsanmeldeinformationen aus, oder legen Sie den Wert auf NULL fest. Das folgende Beispiel zeigt eine vom Benutzer zugewiesene verwaltete Identität. Um eine vom System zugewiesene verwaltete Identität zu verwenden, lassen Sie Zugriffsanmeldeinformationen und -identität aus. Solange die Systemidentität Ihres Suchdiensts über Berechtigungen im Azure Key Vault verfügt, sollte die Verbindungsanforderung erfolgreich sein.

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

Beispiel: Bewertungsprofile

Ein Bewertungsprofil ist ein Abschnitt des Schemas, der benutzerdefinierte Bewertungsverhalten definiert, mit denen Sie beeinflussen können, welche Dokumente in den Suchergebnissen höher angezeigt werden. Bewertungsprofile bestehen aus Feldgewichtungen und Funktionen. Um sie zu verwenden, geben Sie ein Profil anhand des Namens in der Abfragezeichenfolge an. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex (Azure AI Search REST API) details.

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

Beispiel: Semantische Konfigurationen

Eine semantische Konfiguration ist Teil einer Indexdefinition, die verwendet wird, um zu konfigurieren, welche Felder von der semantischen Suche für Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden. Um die semantische Suche zu verwenden, müssen Sie den Namen einer semantischen Konfiguration zur Abfragezeit angeben. Weitere Informationen finden Sie unter Erstellen einer semantischen Abfrage.

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

Definitionen

Verbinden Beschreibung
corsOptions Listet die Domänen oder Ursprünge auf, die Ihrem Index gewährt werden.
defaultScoringProfile- Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
encryptionKey- Konfiguriert eine Verbindung mit Azure Key Vault für die vom Kunden verwaltete Verschlüsselung.
Felder Legt Definitionen und Attribute eines Felds in einem Suchindex fest.
Normalisierer Konfiguriert einen benutzerdefinierten Normalisierer. Normalisiert die lexikographische Sortierung von Zeichenfolgen, wodurch sortierung, Faceting und Filterausgabe ohne Groß-/Kleinschreibung erzeugt werden.
semantischen Konfiguriert Felder, die von der semantischen Suche für Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden.
scoreProfiles- Wird für die Relevanzoptimierung für Volltextabfragen verwendet.
Ähnlichkeit
Suggester Konfiguriert den internen Präfixspeicher für den Abgleich in Teilabfragen wie AutoVervollständigen und Vorschlägen.
vectorSearch- Konfiguriert den Algorithmus, der für Vektorfelder verwendet wird.

corsOptions

Clientseitiges JavaScript kann standardmäßig keine APIs aufrufen, da der Browser alle ursprungsübergreifenden Anforderungen verhindert. Aktivieren Sie CORS (Cross-Origin Resource Sharing) durch Festlegen des "corsOptions"-Attributs, um ursprungsübergreifende Abfragen für Ihren Index zuzulassen. Aus Sicherheitsgründen unterstützen nur Abfrage-APIs CORS.

Attribut Beschreibung
allowedOrigins Erforderlich. Eine durch Trennzeichen getrennte Liste von Ursprüngen, die Zugriff auf Ihren Index erhalten haben, wobei jeder Ursprung in der Regel der Form protocol://<vollqualifizierten Domänennamens>:<Port> (obwohl der <Port> häufig weggelassen wird). Dies bedeutet, dass jeder von diesen Ursprüngen bereitgestellte JavaScript-Code Ihren Index abfragen darf (vorausgesetzt, er stellt einen gültigen API-Schlüssel bereit). Wenn Sie den Zugriff auf alle Ursprünge zulassen möchten, geben Sie * als einzelnes Element im Array "allowedOrigins" an. Dies wird nicht für die Produktion empfohlen, kann aber für die Entwicklung oder das Debuggen hilfreich sein.
maxAgeInSeconds Wahlfrei. Browser verwenden diesen Wert, um die Dauer (in Sekunden) zu ermitteln, um CORS Preflight-Antworten zwischenzuspeichern. Dies muss eine nicht negative ganze Zahl sein. Die Leistung verbessert sich, wenn dieser Wert größer ist, aber diese Gewinne werden um den Zeitraum versetzt, der für CORS-Richtlinienänderungen erforderlich ist, um wirksam zu werden. Wenn sie nicht festgelegt ist, wird eine Standarddauer von 5 Minuten verwendet.

defaultScoringProfile

Wahlfrei. Eine Zeichenfolge, die den Namen eines benutzerdefinierten Bewertungsprofils darstellt, das im Index definiert ist. Ein Standardprofil wird aufgerufen, wenn ein benutzerdefiniertes Profil nicht explizit in der Abfragezeichenfolge angegeben wird. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex.

encryptionKey

Konfiguriert eine Verbindung mit Azure Key Vault für zusätzliche vom Kunden verwalteten Verschlüsselungsschlüssel (CMK). Verfügbar für abrechnende Suchdienste, die am oder nach dem 1. Januar 2019 erstellt wurden.

Eine Verbindung mit dem Schlüsseltresor muss authentifiziert werden. Sie können zu diesem Zweck entweder "accessCredentials" oder eine verwaltete Identität verwenden.

Verwaltete Identitäten können vom System oder vom Benutzer zugewiesen werden (Vorschau). Wenn der Suchdienst sowohl über eine vom System zugewiesene verwaltete Identität als auch eine Rollenzuweisung verfügt, die Lesezugriff auf den Schlüsseltresor gewährt, können Sie sowohl "Identität" als auch "accessCredentials" weglassen, und die Anforderung authentifiziert sich mithilfe der verwalteten Identität. Wenn der Suchdienst über eine vom Benutzer zugewiesene Identität und Rollenzuweisung verfügt, legen Sie die Eigenschaft "Identity" auf die Ressourcen-ID dieser Identität fest.

Attribut Beschreibung
keyVaultKeyName Erforderlich. Name des azure Key Vault-Schlüssels, der für die Verschlüsselung verwendet wird.
keyVaultKeyVersion Erforderlich. Version des Azure Key Vault-Schlüssels.
keyVaultUri Erforderlich. URI von Azure Key Vault (auch als DNS-Name bezeichnet), der den Schlüssel bereitstellt. Ein Beispiel-URI kann https://my-keyvault-name.vault.azure.net
accessCredentials Wahlfrei. Lassen Sie diese Eigenschaft aus, wenn Sie eine verwaltete Identität verwenden. Andernfalls umfassen die Eigenschaften von "accessCredentials":
"applicationId" (eine Azure Active Directory-Anwendungs-ID, die Zugriffsberechtigungen für Ihren angegebenen Azure Key Vault besitzt).
"applicationSecret" (der Authentifizierungsschlüssel der angegebenen Azure AD-Anwendung).
Identität Optional, es sei denn, Sie verwenden eine vom Benutzer zugewiesene verwaltete Identität für die Suchdienstverbindung mit Azure Key Vault. Das Format ist "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]".

Felder

Enthält Informationen zu Attributen in einer Felddefinition.

Attribut Beschreibung
Name Erforderlich. Legt den Namen des Felds fest, das innerhalb der Feldauflistung des Index- oder übergeordneten Felds eindeutig sein muss.
Art Erforderlich. Legt den Datentyp für das Feld fest. Felder können einfach oder komplex sein. Einfache Felder sind primitive Typen, z. B. Edm.String für Text oder Edm.Int32 für ganze Zahlen. Komplexe Felder können Unterfelder haben, die entweder einfach oder komplex sind. Auf diese Weise können Sie Objekte und Arrays von Objekten modellieren, wodurch Sie wiederum die meisten JSON-Objektstrukturen in Ihren Index hochladen können. Collection(Edm.Single) enthält Gleitkommawerte mit einfacher Genauigkeit. Sie wird nur für Vektorfelder verwendet und ist erforderlich. Die vollständige Liste der unterstützten Typen finden Sie unter unterstützten Datentypen.
Schlüssel Erforderlich. Legen Sie dieses Attribut auf "true" fest, um festzulegen, dass die Werte eines Felds Dokumente im Index eindeutig identifizieren. Die maximale Länge von Werten in einem Schlüsselfeld beträgt 1024 Zeichen. Genau ein Feld auf oberster Ebene in jedem Index muss als Schlüsselfeld ausgewählt werden und muss vom Typ Edm.Stringsein. Der Standardwert ist false für einfache Felder und null für komplexe Felder.

Schlüsselfelder können verwendet werden, um Dokumente direkt nachzuschlagen und bestimmte Dokumente zu aktualisieren oder zu löschen. Die Werte von Schlüsselfeldern werden beim Nachschlagen oder Indizieren von Dokumenten auf groß-/kleinschreibungsbezogene Weise behandelt. Weitere Informationen finden Sie unter Nachschlagedokument- und Hinzufügen, Aktualisieren oder Löschen von Dokumenten.
abrufbar Gibt an, ob das Feld in einem Suchergebnis zurückgegeben werden kann. Legen Sie dieses Attribut auf false fest, wenn Sie ein Feld (z. B. Rand) als Filter-, Sortier- oder Bewertungsmechanismus verwenden möchten, das Feld aber für den Endbenutzer nicht sichtbar sein soll. Dieses Attribut muss für Schlüsselfelder true werden, und es muss für komplexe Felder null werden. Dieses Attribut kann für vorhandene Felder geändert werden. Das Festlegen, das auf true abgerufen werden kann, führt nicht zu einer Erhöhung der Indexspeicheranforderungen. Der Standardwert ist true für einfache Felder und null für komplexe Felder.
durchsuchbar Gibt an, ob das Feld durchsuchbar ist und in Suchabfragen darauf verwiesen werden kann. Dies bedeutet, dass sie lexikalischen Analyse wie Wortbruch während der Indizierung durchlaufen wird. Wenn Sie ein durchsuchbares Feld auf einen Wert wie "Sunny day" festlegen, wird es intern in die einzelnen Token "sunny" und "day" normalisiert. Dadurch werden Volltextsuchen nach diesen Begriffen ermöglicht. Felder vom Typ Edm.String oder Collection(Edm.String) können standardmäßig durchsucht werden. Dieses Attribut muss für einfache Felder anderer Nichtzeichenfolgen-Datentypen false werden, und es muss für komplexe Felder null werden.

Ein durchsuchbares Feld verbraucht zusätzlichen Speicherplatz in Ihrem Index, da Azure AI Search die Inhalte dieser Felder verarbeitet und in Hilfsdatenstrukturen für die performante Suche organisiert. Wenn Sie Platz in Ihrem Index sparen möchten und kein Feld in Suchvorgänge einbezogen werden muss, legen Sie die Suchfunktion auf falsefest. Weitere Informationen finden Sie unter Funktionsweise der Volltextsuche in Azure AI Search.
filtrierbar Gibt an, ob das Feld in $filter Abfragen referenziert werden soll. Filterbar unterscheidet sich von der Durchsuchung, in der Zeichenfolgen behandelt werden. Felder vom Typ Edm.String oder Collection(Edm.String), die gefiltert werden können, werden nicht lexikalisch analysiert, sodass Vergleiche nur für genaue Übereinstimmungen gelten. Wenn Sie z. B. ein solches Feld f auf "Sunny day" festlegen, findet $filter=f eq 'sunny' keine Übereinstimmungen, aber $filter=f eq 'Sunny day' werden. Dieses Attribut muss für komplexe Felder null werden. Der Standardwert ist true für einfache Felder und null für komplexe Felder. Um die Indexgröße zu verringern, legen Sie dieses Attribut auf false für Felder fest, nach denen Sie nicht filtern werden.
sortierbar Gibt an, ob das Feld in $orderby Ausdrücken referenziert werden soll. Standardmäßig sortiert Azure AI Search Ergebnisse nach Bewertung, aber in vielen Erfahrungen möchten Benutzer nach Feldern in den Dokumenten sortieren. Ein einfaches Feld kann nur dann sortiert werden, wenn es ein wertig ist (es hat einen einzelnen Wert im Bereich des übergeordneten Dokuments).

Einfache Sammlungsfelder können nicht sortiert werden, da sie mehrwertig sind. Einfache Unterfelder komplexer Auflistungen sind ebenfalls mehrwertig und können daher nicht sortiert werden. Dies gilt unabhängig davon, ob es sich um ein unmittelbares übergeordnetes Feld oder ein Übergeordnetes Feld handelt, das die komplexe Auflistung ist. Komplexe Felder können nicht sortiert werden, und das sortierbare Attribut muss für solche Felder null werden. Der Standardwert für sortierbare Felder ist true für einwertige einfache Felder, false für mehrwertige einfache Felder und null für komplexe Felder.
Facetable Gibt an, ob das Feld in Facetabfragen referenziert werden soll. Wird in der Regel in einer Präsentation von Suchergebnissen verwendet, die trefferanzahl nach Kategorie enthalten (z. B. nach Digitalkameras suchen und Treffer nach Marke, Nach Megapixeln, nach Preis usw.) anzeigen. Dieses Attribut muss für komplexe Felder null werden. Felder vom Typ Edm.GeographyPoint oder Collection(Edm.GeographyPoint) können nicht facetable sein. Der Standardwert ist für alle anderen einfachen Felder true. Um die Indexgröße zu verringern, legen Sie dieses Attribut auf false für Felder fest, für die Sie kein Faceting ausführen.
Analysator Legt den lexikalischen Analyzer für die Tokenisierung von Zeichenfolgen während der Indizierung und Abfragevorgänge fest. Gültige Werte für diese Eigenschaft sind Sprachanalysatoren, integrierten Analyzernund benutzerdefinierten Analyzern. Der Standardwert ist standard.lucene. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden, und es kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Sobald die Analyse ausgewählt wurde und das Feld im Index erstellt wird, kann es für das Feld nicht mehr geändert werden. Muss für komplexe Feldernull werden.
searchAnalyzer Legen Sie diese Eigenschaft zusammen mit indexAnalyzer fest, um verschiedene lexikalische Analysegeräte für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie die Analyse auf null fest, und stellen Sie sicher, dass indexAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierten Analysatoren und benutzerdefinierten Analysatoren. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Die Suchanalyse kann für ein vorhandenes Feld aktualisiert werden, da sie nur zur Abfragezeit verwendet wird. Muss für komplexe Feldernull werden.
indexAnalyzer Legen Sie diese Eigenschaft zusammen mit searchAnalyzer fest, um verschiedene lexikalische Analysatoren für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie die Analyse auf null fest, und stellen Sie sicher, dass searchAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierten Analysatoren und benutzerdefinierten Analysatoren. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Nachdem der Indexanalyse ausgewählt wurde, kann er für das Feld nicht mehr geändert werden. Muss für komplexe Feldernull werden.
Normalisator Legt den Normalisierer für Filter-, Sortier- und Facetingvorgänge fest. Dabei kann es sich um den Namen eines vordefinierten Normalisierers oder um einen benutzerdefinierten Normalisierer, der innerhalb des Index definiert ist. Der Standardwert ist null, was zu einer exakten Übereinstimmung für unanalyseten Text führt. Dieses Attribut kann nur mit Edm.String und Collection(Edm.String) Feldern verwendet werden, die mindestens eine filterbare, sortierbare oder facetable auf "true" festgelegt haben. Ein Normalisierer kann nur für das Feld festgelegt werden, wenn er dem Index hinzugefügt wird und später nicht geändert werden kann. Muss für komplexe Feldernull werden. Gültige Werte für einen vordefinierten Normalisierer sind:

standard– Kleinbuchstaben des Texts gefolgt von asciifolding.
lowercase: Wandelt Zeichen in Kleinbuchstaben um.
uppercase : Wandelt Zeichen in Großbuchstaben um.
asciifolding – Transformiert Zeichen, die sich nicht im Block "Basic Latin Unicode" befinden, in ihre ASCII-Entsprechung, sofern vorhanden. Ändern Sie z. B. "à" in "a".
elision– Entfernt elision vom Anfang der Token.
synonymMaps Eine Liste der Namen des Synonyms, die diesem Feld zugeordnet werden sollen. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Derzeit wird nur eine Synonymzuordnung pro Feld unterstützt. Durch das Zuweisen einer Synonymzuordnung zu einem Feld wird sichergestellt, dass Abfragebegriffe, die zum Abfragezeitpunkt mithilfe der Regeln in der Synonymzuordnung erweitert werden, erweitert werden. Dieses Attribut kann für vorhandene Felder geändert werden. Muss null oder eine leere Auflistung für komplexe Felder sein.
Felder Eine Liste von Unterfeldern, wenn es sich um ein Feld vom Typ Edm.ComplexType oder Collection(Edm.ComplexType)handelt. Muss für einfache Felder null oder leer sein. Weitere Informationen dazu, wie und wann Unterfelder verwendet werden, finden Sie unter Modellieren komplexer Datentypen in Azure AI Search.
Dimensionen Ganze Zahl. Erforderlich für Vektorfelder. **Dies muss mit der Ausgabeeinbettungsgröße Ihres Einbettungsmodells übereinstimmen. Bei einem beliebten Azure OpenAI-Modell text-embedding-ada-002ist die Ausgabeabmessungen beispielsweise 1536, sodass dies die Für dieses Vektorfeld festzulegenden Dimensionen wäre. Das Dimensions-Attribut weist mindestens 2 und maximal 2048 Gleitkommawerte auf.
vectorSearchConfiguration Erforderlich für Vektorfelddefinitionen. Gibt den Namen der "vectorSearch"-Algorithmuskonfiguration an, vom Vektorfeld verwendet wird. Nachdem das Feld erstellt wurde, können Sie den Namen der vectorSearchConfiguration nicht ändern, aber Sie können die Eigenschaften der Algorithmuskonfiguration im Index ändern. Dies ermöglicht Anpassungen an den Algorithmustyp und parameter.

Anmerkung

Felder vom Typ Edm.String, die gefiltert, sortierbar oder facetable sind, können höchstens 32 KB lang sein. Dies liegt daran, dass Werte solcher Felder als einzelner Suchbegriff behandelt werden und die maximale Länge eines Begriffs in Azure AI Search 32 KB beträgt. Wenn Sie mehr Text als in einem einzelnen Zeichenfolgenfeld speichern müssen, müssen Sie in der Indexdefinition explizit filterbar, sortierbar und facetable auf false festlegen.

Das Festlegen eines Felds als durchsuchbar, filterbar, sortierbar oder facetable hat auswirkungen auf die Indexgröße und die Abfrageleistung. Legen Sie diese Attribute nicht für Felder fest, auf die in Abfrageausdrücken nicht verwiesen werden soll.

Wenn ein Feld nicht als durchsuchbar, filterbar, sortierbar oder facetable festgelegt ist, kann auf das Feld in keinem Abfrageausdruck verwiesen werden. Dies ist nützlich für Felder, die nicht in Abfragen verwendet werden, aber in Suchergebnissen erforderlich sind.

Normalisierer

Definiert einen benutzerdefinierten Normalisierer mit einer benutzerdefinierten Kombination aus Zeichenfiltern und Tokenfiltern. Nachdem Sie einen benutzerdefinierten Normalisierer im Index definiert haben, können Sie ihn anhand des Namens für eine Felddefinitionangeben.

Attribut Beschreibung
Name Erforderlich. Zeichenfolgenfeld, das einen benutzerdefinierten Normalisierer angibt.
charFilters Wird in einem benutzerdefinierten Normalisierer verwendet. Es kann sich um einen oder mehrere der verfügbaren Zeichenfilter, die für die Verwendung in einem benutzerdefinierten Normalisierer unterstützt werden:
Zuordnung
pattern_replace
tokenFilters Wird in einem benutzerdefinierten Normalisierer verwendet. Es kann sich um einen oder mehrere der verfügbaren Token-Kipper sein, die für die Verwendung in einem benutzerdefinierten Normalisierer unterstützt werden:
arabic_normalization
asciifolding
cjk_width
elision
german_normalization
hindi_normalization
indic_normalization
persian_normalization
scandinavian_normalization
scandinavian_folding
sorani_normalization
Kleinbuchstaben
großgeschriebenen

scoringProfiles

Bewertungsprofile gelten für die Volltextsuche. Ein Profil wird in einem Index definiert und gibt eine benutzerdefinierte Logik an, mit der höhere Suchergebnisse für übereinstimmende Dokumente vergeben werden können, die den im Profil definierten Kriterien entsprechen. Sie können mehrere Bewertungsprofile erstellen und dann eine Abfrage zuweisen.

Wenn Sie ein benutzerdefiniertes Profil erstellen, können Sie es als Standard festlegen, indem Sie defaultScoringProfilefestlegen. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex.

semantisch

Eine semantische Konfiguration ist Teil einer Indexdefinition, die verwendet wird, um zu konfigurieren, welche Felder von der semantischen Suche für Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden. Semantische Konfigurationen bestehen aus einem Titelfeld, priorisierten Inhaltsfeldern und priorisierten Schlüsselwortfeldern. Für jede der drei Untereigenschaften (titleField, priordKeywordsFields und priordContentFields) muss mindestens ein Feld angegeben werden. Jedes Feld vom Typ Edm.String oder Collection(Edm.String) kann als Teil einer semantischen Konfiguration verwendet werden.

Um die semantische Suche zu verwenden, müssen Sie den Namen einer semantischen Konfiguration zur Abfragezeit angeben. Weitere Informationen finden Sie unter Erstellen einer semantischen Abfrage.

{
   "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": "..."
             }
           ]
         }
       }
     ]
   }
}
Attribut Beschreibung
Name Erforderlich. Der Name der semantischen Konfiguration.
priordFields Erforderlich. Beschreibt die Titel-, Inhalts- und Schlüsselwortfelder, die für semantische Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden sollen. Mindestens eine der drei Untereigenschaften (titleField, priordKeywordsFields und priordContentFields) muss festgelegt werden.
priordFields.titleField Definiert das Titelfeld, das für semantische Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden soll. Wenn Sie kein Titelfeld in Ihrem Index haben, lassen Sie dieses Feld leer.
priordFields.priordContentFields Definiert die Inhaltsfelder, die für semantische Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden sollen. Um das beste Ergebnis zu erzielen, sollten die ausgewählten Felder Text in natürlicher Sprache enthalten. Die Reihenfolge der Felder im Array stellt ihre Priorität dar. Felder mit niedrigerer Priorität werden möglicherweise abgeschnitten, wenn der Inhalt lang ist.
priordFields.priordKeywordsFields Definiert die Schlüsselwortfelder, die für semantische Rangfolge, Beschriftungen, Hervorhebungen und Antworten verwendet werden sollen. Um das beste Ergebnis zu erzielen, sollten die ausgewählten Felder eine Liste von Schlüsselwörtern enthalten. Die Reihenfolge der Felder im Array stellt ihre Priorität dar. Felder mit niedrigerer Priorität werden möglicherweise abgeschnitten, wenn der Inhalt lang ist.

Ähnlichkeit

Optionale Eigenschaft, die für Dienste gilt, die vor dem 15. Juli 2020 erstellt wurden. Für diese Dienste können Sie diese Eigenschaft so festlegen, dass der BM25-Bewertungsalgorithmus verwendet wird, der im Juli 2020 eingeführt wurde. Gültige Werte sind "#Microsoft.Azure.Search.ClassicSimilarity" (die vorherige Standardeinstellung) oder "#Microsoft.Azure.Search.BM25Similarity".

Für alle Dienste, die nach Juli 2020 erstellt wurden, hat das Festlegen dieser Eigenschaft keine Auswirkung. Alle neueren Dienste verwenden BM25 als alleinigen Bewertungsalgorithmus für die Volltextsuche. Weitere Informationen finden Sie unter Bewertungsalgorithmen in Azure AI Search.

Suggester

Gibt ein Konstrukt an, das Präfixe für den Abgleich für Teilabfragen wie AutoVervollständigen und Vorschläge speichert.

Attribut Beschreibung
Name Erforderlich. Der Name des Vorschlagers.
sourceFields Erforderlich. Mindestens ein Zeichenfolgenfeld, für das Sie autoVervollständigen oder vorgeschlagene Ergebnisse aktivieren.
searchMode Erforderlich und immer auf analyzingInfixMatchingfestgelegt. Es gibt an, dass der Abgleich für einen beliebigen Ausdruck in der Abfragezeichenfolge erfolgt.

vectorSearch

Das vectorSearch-Objekt ermöglicht die Konfiguration von Vektorsucheigenschaften. Derzeit können nur Algorithmuskonfigurationen konfiguriert werden. Dies ermöglicht die Konfiguration des Algorithmustyps und der Algorithmusparameter, die für Vektorfelder verwendet werden. Sie können mehrere Konfigurationen haben. Alle Konfigurationen, auf die von einem Vektorfeld verwiesen wird, können nicht geändert oder gelöscht werden. Alle Konfigurationen, auf die nicht verwiesen wird, können geändert oder gelöscht werden. Eine Vektorfelddefinition (in der Feldauflistung) muss angeben, welche Konfiguration des Vektorsuchalgorithmus (über die eigenschaft vectorSearchConfiguration), die das Feld verwendet.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
Attribut Beschreibung
Name Erforderlich. Der Name der Algorithmuskonfiguration.
Art Der zu verwendende Algorithmustyp. Nur '"hnsw"' wird unterstützt, was der hierarchische Navigable Small World (HNSW)-Algorithmus ist.
hnswParameters Wahlfrei. Parameter für den Hnsw-Algorithmus. Wenn dieses Objekt nicht angegeben wird, werden Standardwerte verwendet.

hnswParameters

Dieses Objekt enthält die Anpassungen an hnsw Algorithmusparameter. Alle Eigenschaften sind optional, und Standardwerte werden verwendet, wenn sie weggelassen werden.

Attribut Beschreibung
Metrik Schnur. Die Ähnlichkeitsmetrik, die für Vektorvergleiche verwendet werden soll. Für hnswsind die zulässigen Werte "Kosinus", "Euklidean" und "dotProduct". Der Standardwert ist "Kosinus".
m Ganze Zahl. Die Anzahl der bidirektionalen Verknüpfungen, die für jedes neue Element während der Konstruktion erstellt wurden. Der Standardwert ist 4. Der zulässige Bereich beträgt 4 bis 10. Größere Werte führen zu Dichtediagrammen, zur Verbesserung der Abfrageleistung, erfordern jedoch mehr Arbeitsspeicher und Berechnung.
efConstruction Ganze Zahl. Die Größe der dynamischen Liste für die nächsten Nachbarn, die während der Indizierung verwendet werden. Der Standardwert ist 400. Der zulässige Bereich beträgt 100 bis 1000.Größere Werte führen zu einer besseren Indexqualität, erfordern jedoch mehr Arbeitsspeicher und Berechnung.
efSearch Ganze Zahl. Die Größe der dynamischen Liste, die die nächsten Nachbarn enthält, die während der Suchzeit verwendet wird. Der Standardwert ist 500. Der zulässige Bereich beträgt 100 bis 1000. Das Erhöhen dieses Parameters kann die Suchergebnisse verbessern, aber die Abfrageleistung wird verlangsamt.

Da efSearch ein Abfragezeitparameter ist, kann dieser Wert auch dann aktualisiert werden, wenn ein vorhandenes Feld eine Algorithmuskonfiguration verwendet.

Siehe auch