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

Gilt für: 2023-07-01-Preview, 2021-04-30-Preview, 2020-06-30-Preview

Wichtig

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

  • "vectorSearch" -Objekt, eine Konfiguration von Vektorsucheinstellungen. Gilt nur für Vektorsuchalgorithmen.
  • Datentyp "Collection(Edm.Single)", erforderlich für ein Vektorfeld. Stellt eine Gleitkommazahl mit einfacher Genauigkeit als primitiven Typ 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", die zum Eingrenzen der semantischen Rangfolge auf bestimmte Felder verwendet wird.
  • "identity" unter "encryptionKey", der verwendet wird, um einen kundenseitig verwalteten Verschlüsselungsschlüssel aus Azure Key Vault mithilfe einer benutzerseitig zugewiesenen verwalteten Identität abzurufen.

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

  • "Normalisierer", die für die Nichtberücksichtigung der Groß-/Kleinschreibung bei Sortierungen und Filtern verwendet werden.

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

Sie können POST oder PUT für eine Erstellungsanforderung verwenden. Für beide stellt der Anforderungstext 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 Dienstanforderungen erforderlich. Wenn der Index nicht vorhanden ist, wird er erstellt. Wenn sie bereits vorhanden ist, wird sie auf die neue Definition aktualisiert.

Beim Erstellen eines Indexes werden das Schema und die Metadaten festgelegt. Gefüllt wird der Index in einem separaten Vorgang. Für diesen Schritt können Sie einen Indexer verwenden (siehe Indexervorgänge, verfügbar für unterstützte Datenquellen) oder Dokumente hinzufügen, aktualisieren oder löschen. Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Preisstufe. Innerhalb jedes Indexes gibt es Grenzwerte für einzelne Elemente. Weitere Informationen finden Sie unter Dienstgrenzwerte für Azure AI Search.

Das Aktualisieren eines vorhandenen Indexes 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 einer GET abzurufen, zu ändern und dann mit PUT zu aktualisieren.

Da ein vorhandener Index Inhalt enthält, erfordern viele Indexänderungen eine Indexablage und -neuerstellung. Die folgenden Schemaänderungen sind eine Ausnahme von dieser Regel:

  • Hinzufügen neuer Felder

  • Hinzufügen oder Ändern von Bewertungsprofilen

  • Hinzufügen oder Ändern von semantischen Konfigurationen

  • Ändern von CORS-Optionen

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

    • Felder ein- oder ausblenden (retrievable: true | false)
    • Ändern des zur Abfragezeit verwendeten Analysetools (searchAnalyzer)
    • Hinzufügen oder Bearbeiten der zur Abfragezeit verwendeten synonymMap (synonymMaps)

Um eine der oben genannten Schemaänderungen an einem vorhandenen Index vorzunehmen, 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, haben alle vorhandenen Dokumente im Index automatisch einen NULL-Wert für dieses Feld. Es wird kein zusätzlicher Speicherplatz verbraucht, bis einer von zwei Dingen auftritt: Ein Wert wird für das neue Feld bereitgestellt (mithilfe von Merge), oder es werden neue Dokumente hinzugefügt.

Updates mit suggester ähnlichen Einschränkungen: Neue Felder können einer suggester zur gleichen Zeit hinzugefügt werden, während Felder hinzugefügt werden, aber vorhandene Felder können nicht entfernt oder hinzugefügt werden, suggesters ohne dass eine Indexneuerstellung erforderlich ist.

Updates zu einem Analysetool sind ein Tokenizer, ein Tokenfilter oder ein Charfilter nicht zulässig. 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 geschaltet:

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

Mit diesem Vorgang wird Ihr Index für mindestens einige Sekunden offline geschaltet. Dies bedeutet, dass bei der Indizierung und Abfrageanforderungen ein Fehler auftritt, bis der Index wieder online ist und für die Verarbeitung von Anforderungen bereit 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, mit einem Buchstaben oder einer Zahl beginnen, keine Schrägstriche oder Punkte aufweisen und weniger als 128 Zeichen lang sein. Bindestriche können nicht aufeinander folgen.
api-version Erforderlich. Die aktuelle Vorschauversion ist 2023-07-23-preview. Weitere Versionen finden Sie unter API-Versionen .
allowIndexDowntime Optional. Der Standardwert ist gleich „False“. Legen Sie für bestimmte Updates auf true fest, z. B. das Hinzufügen oder Ändern einer Analyse-, Tokenisierungs-, Tokenfilter-, char-Filter- oder Ähnlichkeitseigenschaft. Der Index wird während der Aktualisierung offline geschaltet, in der Regel nicht mehr als mehrere Sekunden.

Anforderungsheader

Die folgende Tabelle beschreibt die erforderlichen und optionalen Anforderungsheader.

Felder BESCHREIBUNG
Content-Type Erforderlich. Legen Sie diesen Wert auf fest. application/json
api-key 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 bei Ihrem Suchdienst authentifiziert. Erstellen von Anforderungen muss einen api-key Header enthalten, der auf Ihren Administratorschlüssel (im Gegensatz zu einem Abfrageschlüssel) festgelegt ist. Weitere Informationen finden Sie unter Herstellen einer Verbindung mit Azure AI Search mithilfe der Schlüsselauthentifizierung .

Anforderungstext

Der Text 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 kein Text sind, kann ein Vektorfeld nicht als Schlüssel verwendet werden, und es akzeptiert keine Analysetools, Normalisierer, Suggester oder Synonyme. Sie muss über eine Dimensionseigenschaft und eine VectorSearchConfiguration-Eigenschaft verfügen.

Ein Schema, das die Vektorsuche unterstützt, kann auch Schlüsselwort (keyword) Suche unterstützen. Andere Nichtvektorfelder im Index können alle Analysetools, Synonyme und Bewertungsprofile verwenden, die Sie in Ihren Index einschließen.

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

Eigenschaft BESCHREIBUNG
name Erforderlich. Der Name des Index. Ein Indexname darf nur Kleinbuchstaben, Ziffern oder Bindestriche enthalten, kann nicht mit Bindestrichen beginnen oder enden und ist auf 128 Zeichen beschränkt.
description Eine optionale Beschreibung.
fields Eine Auflistung von Feldern für diesen Index, in denen jedes Feld einen Namen, einen unterstützten Datentyp hat, der dem Entitätsdatenmodell (Entity Data Model, EDM) entspricht, und Attribute, die zulässige Aktionen für dieses Feld definieren. Die Fields-Auflistung muss über ein Feld vom Typ Edm.String verfügen, wobei "key" auf "true" festgelegt ist. Dieses Feld stellt den eindeutigen Bezeichner (manchmal auch als Dokument-ID bezeichnet) für jedes mit dem Index gespeicherte Dokument dar. Die Fields-Auflistung akzeptiert jetzt Vektorfelder.
Ähnlichkeit Optional. Legen Sie für Dienste, die vor dem 15. Juli 2020 erstellt wurden, diese Eigenschaft so fest, dass sie den BM25-Bewertungsalgorithmus aktiviert.
Vorschlagser Gibt ein Konstrukt an, in dem Präfixe für den Abgleich für partielle Abfragen wie autovervollständigen und Vorschläge gespeichert werden.
scoringProfiles Optional. Wird zur Relevanzoptimierung für Volltextabfragen verwendet.
semantisch Optional. Definiert die Parameter eines Suchindexes, die die semantischen Suchfunktionen beeinflussen. Für semantische Abfragen ist eine semantische Konfiguration erforderlich. Weitere Informationen finden Sie unter Erstellen einer Semantikabfrage.
vectorSearch Optional. Konfiguriert verschiedene Einstellungen für die Vektorsuche. Es können nur Vektorsuchalgorithmen konfiguriert werden.
Normalisierer Optional. Normalisiert die lexikographische Reihenfolge von Zeichenfolgen, wodurch die Sortierung und Filterung ohne Beachtung der Groß-/Kleinschreibung erzeugt wird.
analyzers, charFilters, tokenizers, tokenFilters Optional. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierte Analysetools definieren. Standardmäßig sind diese Abschnitte NULL.
defaultScoringProfile Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt.
corsOptions Optional. Wird für ursprungsübergreifende Abfragen an Ihren Index verwendet.
encryptionKey Optional. Wird für die zusätzliche Verschlüsselung des Indexes über kundenseitig verwaltete Verschlüsselungsschlüssel (CMK) in Azure Key Vault verwendet. Verfügbar für abrechenbare Suchdienste, die am oder nach dem 01.01.2019 erstellt wurden.

Antwort

Für eine erfolgreiche Erstellungsanforderung sollte status Code "201 Erstellt" angezeigt werden. Standardmäßig enthält der Antworttext den JSON-Code für die indexdefinition, die erstellt wurde. Wenn der Prefer-Anforderungsheader jedoch auf return=minimal festgelegt ist, ist der Antworttext leer, und der Erfolg status Code 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 Erfolg status Code "200 OK".

Beispiele

Beispiel: Vektor

Die Vektorsuche wird auf Feldebene implementiert. Diese Definition legt den Fokus auf Vektorfelder. Vektorfelder müssen vom Typ Collection(Edm.Single) sein, der zum Speichern von Gleitkommawerten mit einzeler Genauigkeit verwendet wird. Vektorfelder verfügen über eine Dimensionseigenschaft, die die Anzahl der Ausgabedimensionen enthält, die vom Machine Learning-Modell unterstützt werden, das zum Generieren von Einbettungen verwendet wird. Wenn Sie beispielsweise text-embedding-ada-002 verwenden, beträgt die maximale Anzahl von Ausgabedimensionen 1536 pro Dokument. "algorithmConfiguration" wird auf den Namen der "vectorSearch"-Konfiguration in Ihrem Index festgelegt. Sie können mehrere im Index definieren und dann eins pro Feld angeben.

Viele Attribute gelten nur für Nichtvektorfelder. Attribute wie "filterable", "sortable", "facetable", "analyzer", "normalizer" und "synonymMaps" werden für Vektorfelder ignoriert. Wenn Sie ebenfalls nur vektorbasierte Eigenschaften wie "dimensions" oder "vectorSearchConfiguration" für ein Feld festlegen, das alphanumerischen Inhalt enthält, werden diese Attribute ignoriert.

{
    "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 Nichtvektorabfragen. Die Felder "title", "titleVector", "content", "contentVector" folgen dieser Konvention. Wenn Sie auch die semantische Suche verwenden möchten, müssen Sie über Nichtvektortextfelder für diese Verhaltensweisen verfügen.

{
    "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 "key" auf true festgelegt haben.

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

Eine Vorschlagsdefinition sollte "durchsuchbare" und "abrufbare" Zeichenfolgenfelder angeben (in den REST-APIs sind "retrievable": true standardmäßig alle einfachen Felder). Nachdem ein Vorschlagsgeber definiert wurde, können Sie ihn anhand des Namens in Abfrageanforderungen verweisen, die entweder die Vorschläge-API oder die AutoVervollständigen-API verwenden, 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: Analysetools und Normalisierer

Analysetools und Normalisierer werden in Felddefinitionen referenziert und können entweder vordefiniert oder benutzerdefinierte sein. Wenn Sie benutzerdefinierte Analysetools oder Normalisierer verwenden, geben Sie diese im Index in den Abschnitten "Analysetools" und "Normalisierer" an.

Das folgende Beispiel veranschaulicht benutzerdefinierte Analysetools und Normalisierer für "Tags". Außerdem wird ein vordefinierter Normalisierer (Standard) und ein Analysetool (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 für die Such relevanz

Diese Eigenschaft legt den Rangfolgenalgorithmus fest, der zum Erstellen einer Relevanzbewertung in den Suchergebnissen einer Volltextsuchabfrage verwendet wird. Bei Diensten, die nach dem 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 bm25 aktivieren, 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. Um ursprungsübergreifende Abfragen für Ihren Index zuzulassen, aktivieren Sie CORS (Cross-origin resource sharing (Wikipedia)), indem Sie das corsOptions Attribut festlegen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt.

{
   "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 kundenseitig verwaltete Schlüssel, die für die zusätzliche Verschlüsselung verwendet werden. Weitere Informationen finden Sie unter Verschlüsselung mithilfe von kundenseitig 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 mithilfe einer systemseitig oder benutzerseitig zugewiesenen verwalteten Identität (Vorschauversion) authentifizieren. Lassen Sie in diesem Fall die Zugriffsanmeldeinformationen aus, oder legen Sie auf NULL fest. Das folgende Beispiel zeigt eine benutzerseitig zugewiesene verwaltete Identität. Um eine systemseitig zugewiesene verwaltete Identität zu verwenden, lassen Sie Zugriffsanmeldeinformationen und Identität weg. Solange die Systemidentität Ihres Suchdiensts über Berechtigungen in 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 dem Sie beeinflussen können, welche Dokumente in den Suchergebnissen höher angezeigt werden. Bewertungsprofile bestehen aus Feldgewichtungen und Funktionen. Um sie verwenden zu können, fügen Sie in die Abfragezeichenfolge den Profilnamen ein. Weitere Informationen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex (Azure AI Search-REST-API).

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

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

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

Link 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 kundenseitig verwaltete Verschlüsselung.
fields Legt Definitionen und Attribute eines Felds in einem Suchindex fest.
Normalisierer Konfiguriert einen benutzerdefinierten Normalisierer. Normalisiert die lexikographische Reihenfolge von Zeichenfolgen, wodurch die Sortierung, Faceting und Filterung der Groß-/Kleinschreibung nicht beachtet wird.
semantisch Konfiguriert Felder, die von der semantischen Suche für Rangfolgen, Beschriftungen, Hervorhebungen und Antworten verwendet werden.
scoringProfiles Wird zur Relevanzoptimierung für Volltextabfragen verwendet.
Ähnlichkeit
Vorschlagser Konfiguriert den internen Präfixspeicher für den Abgleich für partielle Abfragen wie autovervollständigen und Vorschläge.
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. Um ursprungsübergreifende Abfragen für Ihren Index zuzulassen, aktivieren Sie CORS (Cross-Origin Resource Sharing), indem Sie das Attribut "corsOptions" festlegen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt.

attribute Beschreibung
allowedOrigins Erforderlich. Eine durch Trennzeichen getrennte Liste der Ursprünge, denen Zugriff auf Ihren Index gewährt wird, wobei jeder Ursprung in der Regel von der Form protocol://< fully qualified-domain-name>:<port> ist (obwohl der <Port> häufig nicht angegeben wird). Dies bedeutet, dass jeder JavaScript-Code, der von diesen Ursprüngen bereitgestellt wird, Ihren Index abfragen darf (vorausgesetzt, er enthält einen gültigen API-Schlüssel). 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 nützlich sein.
maxAgeInSeconds Optional. Von Browsern wird dieser Wert verwendet, um die Dauer (in Sekunden) des Zwischenspeicherns von CORS-Preflight-Antworten zu ermitteln. Dies muss eine positive ganze Zahl sein. Die Leistung verbessert sich, wenn dieser Wert größer ist, aber diese Gewinne werden durch die Zeit kompensiert, die benötigt wird, bis CORS-Richtlinienänderungen wirksam werden. Wenn sie nicht festgelegt ist, wird eine Standarddauer von 5 Minuten verwendet.

defaultScoringProfile

Optional. Eine Zeichenfolge, die der Name eines benutzerdefinierten Bewertungsprofils ist, 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 kundenseitig verwaltete Verschlüsselungsschlüssel (CMK). Verfügbar für abrechenbare 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 systemseitig oder benutzerseitig (Vorschau) sein. Wenn der Suchdienst sowohl über eine systemseitig zugewiesene verwaltete Identität als auch über eine Rollenzuweisung verfügt, die Lesezugriff auf den Schlüsseltresor gewährt, können Sie sowohl "identity" als auch "accessCredentials" weglassen, und die Anforderung authentifiziert sich mithilfe der verwalteten Identität. Wenn der Suchdienst über eine benutzerseitig zugewiesene Identität und Rollenzuweisung verfügt, legen Sie die Eigenschaft "identity" auf die Ressourcen-ID dieser Identität fest.

attribute 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 sein. https://my-keyvault-name.vault.azure.net
accessCredentials Optional. Lassen Sie diese Eigenschaft weg, wenn Sie eine verwaltete Identität verwenden. Andernfalls umfassen die Eigenschaften von "accessCredentials":
"applicationId" (eine Azure Active Directory-Anwendungs-ID mit Zugriffsberechtigungen für Ihre angegebene Azure Key Vault).
"applicationSecret" (der Authentifizierungsschlüssel der angegebenen Azure AD-Anwendung).
Identität Optional, es sei denn, Sie verwenden eine benutzerseitig 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]".

fields

Enthält Informationen zu Attributen einer Felddefinition.

attribute BESCHREIBUNG
name Erforderlich. Legt den Namen des Felds fest, das innerhalb der Fields-Auflistung des Index- oder übergeordneten Felds eindeutig sein muss.
type Erforderlich. Legt den Datentyp für das Feld fest. Felder können einfach oder komplex sein. Einfache Felder sind von primitiven Typen, z. B Edm.String . für Text oder Edm.Int32 für ganze Zahlen. Komplexe Felder können Unterfelder aufweisen, die entweder einfach oder komplex sind. Dadurch können Sie Objekte und Arrays von Objekten modellieren, wodurch Sie die meisten JSON-Objektstrukturen in Ihren Index hochladen können. Collection(Edm.Single) für Gleitkommawerte mit einzeler Genauigkeit. Es wird nur für Vektorfelder verwendet und ist erforderlich. Die vollständige Liste der unterstützten Typen finden Sie unter Unterstützte 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 der obersten Ebene in jedem Index muss als Schlüsselfeld ausgewählt werden, und es muss vom Typ Edm.Stringsein. Standard 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 eine weise behandelt, bei der die Groß-/Kleinschreibung beachtet wird. Weitere Informationen finden Sie unter Nachschlagedokument und Hinzufügen, Aktualisieren oder Löschen von Dokumenten .
retrievable Gibt an, ob das Feld in einem Suchergebnis zurückgegeben werden kann. Legen Sie dieses Attribut auf fest false , wenn Sie ein Feld (z. B. Margin) als Filter-, Sortier- oder Bewertungsmechanismus verwenden möchten, das Feld aber nicht für den Endbenutzer sichtbar sein soll. Dieses Attribut muss true für Schlüsselfelder und für komplexe Felder sein null . Dieses Attribut kann für vorhandene Felder geändert werden. Das Festlegen von abrufbar auf führt nicht zu true einer Erhöhung der Indexspeicheranforderungen. Der Standardwert ist true für einfache Felder und null für komplexe Felder.
searchable Gibt an, ob das Feld volltextsuchbar ist und in Suchabfragen referenziert werden kann. Dies bedeutet, dass es lexikalischen Analysen unterzogen wird, z. B. Wortbruch während der Indizierung. Wenn Sie ein durchsuchbares Feld auf einen Wert wie "Sonniger Tag" festlegen, wird es intern in die einzelnen Token "sunny" und "day" normalisiert. Dies ermöglicht die Volltextsuche nach diesen Begriffen. Felder vom Typ Edm.String oder Collection(Edm.String) sind standardmäßig durchsuchbar. Dieses Attribut muss false für einfache Felder anderer Nichtzeichenfolgendatentypen und null für komplexe Felder gelten.

Ein durchsuchbares Feld beansprucht zusätzlichen Platz in Ihrem Index, da Azure KI Search den Inhalt dieser Felder verarbeitet und sie für eine leistungsfähige Suche in hilfsfähigen Datenstrukturen anordnet. Wenn Sie Speicherplatz im Index sparen möchten und kein Feld in Suchvorgänge einbezogen werden muss, legen Sie durchsuchbar auf falsefest. Weitere Informationen finden Sie unter Funktionsweise der Volltextsuche in Azure AI Search .
filterable Gibt an, ob in $filter Abfragen auf das Feld verwiesen werden soll. Filterbar unterscheidet sich von durchsuchbar in der Behandlung von Zeichenfolgen. 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 "Sonniger Tag" festlegen, $filter=f eq 'sunny' findet keine Übereinstimmungen, wird jedoch $filter=f eq 'Sunny day' verwendet. Dieses Attribut muss für komplexe Felder sein null . Der Standardwert ist true für einfache Felder und null für komplexe Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut für false Felder, nach denen Sie nicht filtern möchten, auf fest.
sortable Gibt an, ob in Ausdrücken auf das Feld verwiesen $orderby werden soll. Standardmäßig sortiert Azure KI Search Ergebnisse nach Bewertung, aber in vielen Umgebungen möchten Benutzer nach Feldern in den Dokumenten sortieren. Ein einfaches Feld kann nur sortiert werden, wenn es einwertig 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 Vorgängerfeld handelt, das die komplexe Auflistung ist. Komplexe Felder können nicht sortierbar sein, und das sortierbare Attribut muss für solche Felder sein null . Die Standardeinstellung für sortierbar ist true für einwertige einfache Felder, false für mehrwertige einfache Felder und null für komplexe Felder.
facetable Gibt an, ob in Facetabfragen auf das Feld verwiesen werden soll. Wird in der Regel in einer Präsentation von Suchergebnissen verwendet, die die Trefferanzahl nach Kategorie enthält (z. B. suchen Sie nach Digitalkameras und sehen Sie Treffer nach Marke, nach Megapixeln, nach Preis usw.). Dieses Attribut muss für komplexe Felder sein null . Felder vom Typ Edm.GeographyPoint oder Collection(Edm.GeographyPoint) können nicht facetable sein. Der Standardwert gilt true für alle anderen einfachen Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut für false Felder, für die Sie keine Facettierung ausführen, auf fest.
Analyzer Legt das lexikalische Analysetool für die Tokenisierung von Zeichenfolgen bei Indizierungs- und Abfragevorgängen fest. Gültige Werte für diese Eigenschaft sind Sprachanalysetools, integrierte Analysetools und benutzerdefinierte Analysetools. Der Standardwert lautet standard.lucene. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden und kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Nachdem das Analysetool ausgewählt und das Feld im Index erstellt wurde, kann es für das Feld nicht mehr geändert werden. Muss für komplexe Felder seinnull.
searchAnalyzer Legen Sie diese Eigenschaft zusammen mit indexAnalyzer fest, um verschiedene lexikalische Analysetools für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest null , und stellen Sie sicher, dass indexAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysetools und benutzerdefinierte Analysetools. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Das Suchanalysetool kann für ein vorhandenes Feld aktualisiert werden, da es nur zur Abfragezeit verwendet wird. Muss für komplexe Felder seinnull.
indexAnalyzer Legen Sie diese Eigenschaft zusammen mit searchAnalyzer fest, um verschiedene lexikalische Analysetools für die Indizierung und Abfragen anzugeben. Wenn Sie diese Eigenschaft verwenden, legen Sie analyzer auf fest null , und stellen Sie sicher, dass searchAnalyzer auf einen zulässigen Wert festgelegt ist. Gültige Werte für diese Eigenschaft sind integrierte Analysetools und benutzerdefinierte Analysetools. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Nachdem das Indexanalysetool ausgewählt wurde, kann es für das Feld nicht mehr geändert werden. Muss für komplexe Felder seinnull.
Normalizer 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 handeln, der innerhalb des Index definiert ist. Der Standardwert ist null, was zu einer exakten Übereinstimmung mit wörtlichem, nicht analysiertem Text führt. Dieses Attribut kann nur mit Edm.String Feldern und Collection(Edm.String) verwendet werden, für die mindestens eines der filterbaren, sortierbaren oder facettierbaren Felder auf TRUE festgelegt ist. Ein Normalisierer kann nur für das Feld festgelegt werden, wenn es dem Index hinzugefügt wird, und kann später nicht geändert werden. Muss für komplexe Felder seinnull. Gültige Werte für einen vordefinierten Normalisierer sind:

standard– Kleinbuchstaben des Texts gefolgt von asciifolding.
lowercase– Transformiert Zeichen in Kleinbuchstaben.
uppercase – Transformiert Zeichen in Großbuchstaben.
asciifolding – Transformiert Zeichen, die sich nicht im Basic Latin Unicode-Block befinden, in ihre ASCII-Entsprechung, sofern vorhanden. Ändern Sie z. B. "à" in "a".
elision– Entfernt die Elision vom Anfang der Token.
synonymMaps Eine Liste der Namen von Synonymzuordnungen, 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 auf dieses Feld abzielen, zur Abfragezeit mithilfe der Regeln in der Synonymzuordnung erweitert werden. Dieses Attribut kann für vorhandene Felder geändert werden. Muss oder eine leere Auflistung für komplexe Felder sein null .
fields Eine Liste von Unterfeldern, wenn dies ein Feld vom Typ Edm.ComplexType oder Collection(Edm.ComplexType)ist. Muss für einfache Felder oder leer sein null . Weitere Informationen zur Verwendung von Unterfeldern finden Sie unter Modellieren komplexer Datentypen in Azure AI Search .
dimensions Eine ganze Zahl. Erforderlich für Vektorfelder. **Dies muss mit der Ausgabeeinbettungsgröße Ihres Einbettungsmodells übereinstimmen. Bei einem beliebten Azure OpenAI-Modell text-embedding-ada-002sind die Ausgabedimensionen beispielsweise 1536, sodass dies die Dimensionen sind, die für dieses Vektorfeld festgelegt werden sollen. Das „dimensions“-Attribut weist mindestens 2 und maximal 2048 Gleitkommawerte auf.
vectorSearchConfiguration Erforderlich für Vektorfelddefinitionen. Gibt den Namen der vom Vektorfeld verwendeten Algorithmuskonfiguration "vectorSearch" an. Nachdem das Feld erstellt wurde, können Sie den Namen der vectorSearchConfiguration nicht mehr ändern, aber Sie können die Eigenschaften der Algorithmuskonfiguration im Index ändern. Dies ermöglicht Anpassungen am Algorithmustyp und den Parametern.

Hinweis

Felder vom Typ Edm.String , die filterbar, sortierbar oder facetable sind, können maximal 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 diesen in einem einzelnen Zeichenfolgenfeld speichern müssen, müssen Sie in Ihrer Indexdefinition filterbar, sortierbar und facetable explizit auf false festlegen.

Das Festlegen eines Felds als durchsuchbar, filterbar, sortierbar oder facetable hat Auswirkungen auf die Indexgröße und 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 in keinem Abfrageausdruck auf das Feld verwiesen werden. Dies ist nützlich für Felder, die nicht in Abfragen verwendet werden, aber in Suchergebnissen benötigt werden.

Normalisierer

Definiert einen benutzerdefinierten Normalisierer mit einer benutzerdefinierten Kombination aus Zeichen- und Tokenfiltern. Nachdem Sie einen benutzerdefinierten Normalisierer im Index definiert haben, können Sie ihn als Namen in einer Felddefinition angeben.

attribute BESCHREIBUNG
name Erforderlich. Zeichenfolgenfeld, das entweder einen benutzerdefinierten benutzerdefinierten Normalisierer angibt.
charFilters Wird in einem benutzerdefinierten Normalisierer verwendet. Es kann sich um einen oder mehrere verfügbare Zeichenfilter handeln, 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 tilter handeln, 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

Großbuchstaben

scoringProfiles

Bewertungsprofile gelten für die Volltextsuche. Ein Profil wird in einem Index definiert und gibt eine benutzerdefinierte Logik an, die übereinstimmenden Dokumenten, die die im Profil definierten Kriterien erfüllen, höhere Suchbewertungen vergeben kann. Sie können mehrere Bewertungsprofile erstellen und dann das gewünschte Profil einer Abfrage zuweisen.

Wenn Sie ein benutzerdefiniertes Profil erstellen, können Sie es zur Standardeinstellung machen, indem Sie festlegen defaultScoringProfile. 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 Rangfolgen, Beschriftungen, Hervorhebungen und Antworten verwendet werden. Semantische Konfigurationen bestehen aus einem Titelfeld, priorisierten Inhaltsfeldern und priorisierten Schlüsselwort (keyword) Feldern. 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 verwenden zu können, müssen Sie zur Abfragezeit den Namen einer semantischen Konfiguration angeben. Weitere Informationen finden Sie unter Erstellen einer Semantikabfrage.

{
   "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": "..."
             }
           ]
         }
       }
     ]
   }
}
attribute BESCHREIBUNG
name Erforderlich. Der Name der semantischen Konfiguration.
priordFields Erforderlich. Beschreibt Titel, Inhalt und Schlüsselwort (keyword) Felder, 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 Rangfolgen, Beschriftungen, Hervorhebungen und Antworten verwendet werden soll. Wenn Sie kein Titelfeld in Ihrem Index haben, lassen Sie es leer.
priordFields.priordContentFields Definiert die Inhaltsfelder, die für semantische Rangfolgen, 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 können abgeschnitten werden, wenn der Inhalt lang ist.
priordFields.priordKeywordsFields Definiert die Schlüsselwort (keyword) Felder, die für semantische Rangfolgen, Beschriftungen, Hervorhebungen und Antworten verwendet werden sollen. Um das beste Ergebnis zu erzielen, sollten die ausgewählten Felder eine Liste mit Schlüsselwörtern enthalten. Die Reihenfolge der Felder im Array stellt ihre Priorität dar. Felder mit niedrigerer Priorität können abgeschnitten werden, 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 sie den BM25-Rankingalgorithmus verwendet, der im Juli 2020 eingeführt wurde. Gültige Werte sind ( "#Microsoft.Azure.Search.ClassicSimilarity" der vorherige Standardwert) oder "#Microsoft.Azure.Search.BM25Similarity".

Für alle Dienste, die nach Juli 2020 erstellt wurden, hat das Festlegen dieser Eigenschaft keine Auswirkungen. Alle neueren Dienste verwenden BM25 als einzigen Rankingalgorithmus für die Volltextsuche. Weitere Informationen finden Sie unter Rangfolgen von Algorithmen in Azure AI Search.

Vorschlagser

Gibt ein Konstrukt an, in dem Präfixe für den Abgleich für partielle Abfragen wie autovervollständigen und Vorschläge gespeichert werden.

attribute BESCHREIBUNG
name Erforderlich. Der Name der Vorschlagsfunktion.
sourceFields Erforderlich. Mindestens ein Zeichenfolgenfeld, für das Sie die automatische Vervollständigung oder die vorgeschlagenen 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. Konfigurationen, auf die von einem Vektorfeld verwiesen wird, können weder geändert noch gelöscht werden. Alle Konfigurationen, auf die nicht verwiesen wird, können geändert oder gelöscht werden. Eine Vektorfelddefinition (in der Fields-Auflistung) muss angeben, welche Vektorsuchalgorithmuskonfiguration (über die vectorSearchConfiguration -Eigenschaft) vom Feld verwendet wird.

"vectorSearch": {
    "algorithmConfigurations": [
        {
            "name": "my-vector-config",
            "kind": "hnsw",
            "hnswParameters": {
                "m": 4,
                "efConstruction": 400,
                "efSearch": 500,
                "metric": "cosine"
            }
        }
    ]
}
attribute BESCHREIBUNG
name Erforderlich. Der Name der Algorithmuskonfiguration.
kind Der zu verwendende Algorithmustyp. Es wird nur "hnsw" unterstützt, d. h. der hierarchische navigable Small World-Algorithmus (HNSW).
hnswParameters Optional. Parameter für den "hnsw"-Algorithmus. Wenn dieses Objekt ausgelassen wird, werden Standardwerte verwendet.

hnswParameters

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

attribute BESCHREIBUNG
Metrik Eine Zeichenfolge. Die Ähnlichkeitsmetrik, die für Vektorvergleiche verwendet werden soll. Für hnswsind die zulässigen Werte "kosinus", "euklidan" und "dotProduct". Der Standardwert ist "Kosinus".
m Eine ganze Zahl. Die Anzahl der bidirektionalen Verknüpfungen, die während des Aufbaus für jedes neue Element erstellt werden. Der Standardwert ist 4. Der zulässige Bereich beträgt 4 bis 10. Größere Werte führen zu dichteren Diagrammen, die die Abfrageleistung verbessern, erfordern jedoch mehr Arbeitsspeicher und Berechnungen.
efConstruction Eine 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 Berechnungen.
efSearch Eine ganze Zahl. Die Größe der dynamischen Liste mit den nächsten Nachbarn, die während der Suchzeit verwendet wird. Der Standard 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.

Weitere Informationen