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
)
- Ein- oder Ausblenden von Feldern (
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=representation
festgelegt 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
"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.String sein. 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 false fest. 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-002 ist 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 defaultScoringProfile
festlegen. 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 analyzingInfixMatching festgelegt. 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 hnsw sind 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.