Index erstellen (Azure Cognitive Search REST-API)
Ein Index ist das primäre Mittel zum Organisieren und Durchsuchen von Dokumenten in Azure Cognitive Search, ähnlich wie eine Tabelle Datensätze in einer Datenbank organisiert. Jeder Index verfügt über eine Sammlung von Dokumenten, die alle dem Indexschema entsprechen (Feldnamen, Datentypen und Attribute), aber Indizes geben auch zusätzliche Konstrukte (Vorschlagsgeber, Bewertungsprofile und CORS-Konfiguration) an, die andere Suchverhalten definieren.
Sie können entweder POST oder PUT für die Anforderung verwenden. Für beide stellt das JSON-Dokument im Anforderungstext die Objektdefinition bereit.
POST https://[servicename].search.windows.net/indexes?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Alternativ können Sie mit PUT den Indexnamen für den URI angeben.
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 er bereits vorhanden ist, wird er mit der neuen Definition aktualisiert.
Durch das Erstellen eines Indexes werden das Schema und die Metadaten eingerichtet. Gefüllt wird der Index in einem separaten Vorgang. Für diesen Schritt können Sie einen Indexer (siehe Indexervorgänge, verfügbar für unterstützte Datenquellen) oder ein Hinzufügen, Aktualisieren oder Löschen von Dokumenten verwenden. Die invertierten Indizes werden generiert, wenn die Dokumente veröffentlicht werden.
Hinweis
Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Preisstufe. Weitere Informationen finden Sie unter Diensteinschränkungen.
URI-Parameter
Parameter | Beschreibung |
---|---|
Dienstname | Erforderlich. Legen Sie dies 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. Nach dem Start des Namens mit einem Buchstaben oder einer Zahl kann der Rest des Namens beliebige Buchstaben, Zahlen und Bindestriche enthalten, solange die Bindestriche nicht aufeinander folgen. |
api-version | Erforderlich. Die aktuelle stabile Version ist api-version=2020-06-30 . Weitere Versionen finden Sie unter API-Versionen . |
Anforderungsheader
Die folgende Tabelle beschreibt die erforderlichen und optionalen Anforderungsheader.
Felder | BESCHREIBUNG |
---|---|
Content-Type | Erforderlich. Auf application/json |
api-key | Erforderlich. api-key wird zum Authentifizieren der Anforderung beim Search-Dienst verwendet. Es handelt sich um einen für Ihren Dienst eindeutigen Zeichenfolgewert. Erstellen von Anforderungen muss einen api-key Header enthalten, der auf Ihren Administratorschlüssel (im Gegensatz zu einem Abfrageschlüssel) festgelegt ist. Sie finden den API-Schlüssel in Ihrem Suchdienstdashboard im Azure-Portal. |
Anforderungstext
Der Anforderungstext enthält eine Schemadefinition mit der Liste der Datenfelder in Dokumenten, die in diesen Index eingelesen werden.
Der folgende JSON-Code ist eine allgemeine Darstellung der Hauptteile der Definition.
{
"name": (optional on PUT; required on POST) "Name 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.Double) | Collection(Edm.Boolean) | Collection(Edm.DateTimeOffset) | Collection(Edm.GeographyPoint) | Collection(Edm.ComplexType)",
"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),
"key": true | false (default, only Edm.String fields can be keys, enable on one field only),
"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)
"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.)
}
],
"similarity": (optional) { },
"suggesters": (optional) [ ... ],
"scoringProfiles": (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 | Erforderlich. In diesen Index wird eine Sammlung von Fields hat eingespeist, einschließlich Name, Datentyp und Attributen, die zulässige Aktionen für dieses Feld definieren. Datentypen entsprechen dem Entity Data Model (EDM). Weitere Informationen finden Sie unter Unterstützte Datentypen. Es muss ein Feld in der Auflistung vorhanden sein, das als Schlüsselfeld angegeben wird. Dieses muss ein Zeichenfolgefeld sein. Dieses Feld stellt den eindeutigen Bezeichner (manchmal auch als Dokument-ID bezeichnet) für jedes mit dem Index gespeicherte Dokument dar. Bei Dokumentschlüsseln wird die Groß-/Kleinschreibung beachtet. Beispielsweise gilt ein Dokument mit dem Schlüssel "abc" als anders als ein Dokument mit dem Schlüssel "ABC". |
Ähnlichkeit | Optional. Legen Sie diese Eigenschaft für Dienste, die vor dem 15. Juli 2020 erstellt wurden, auf die Verwendung des BM25-Rankingalgorithmus fest. Gültige Werte sind "#Microsoft.Azure.Search.ClassicSimilarity" oder "#Microsoft.Azure.Search.BM25Similarity" . API-Versionen, die diese Eigenschaft unterstützen, sind 2020-06-30 und 2019-05-06-Preview. Weitere Informationen finden Sie unter Rangfolgen von Algorithmen in Azure Cognitive Search. |
Vorschlagser | Optional. Wird für automatisch abgeschlossene Abfragen oder vorgeschlagene Suchergebnisse verwendet, eine pro Index. Es handelt sich um eine Datenstruktur, in der Präfixe für den Abgleich für Teilabfragen wie autovervollständigen und Vorschläge gespeichert werden. name Besteht aus Feldern, die vorschlagsfähig sind und Inhalte für automatisch abgeschlossene Abfragen und vorgeschlagene Ergebnisse bereitstellen. searchMode ist erforderlich und immer auf analyzingInfixMatching festgelegt. Es gibt an, dass der Abgleich für einen beliebigen Ausdruck in der Abfragezeichenfolge erfolgt. |
scoringProfiles | Optional. Wird für die benutzerdefinierte Bewertung der Suchbewertung verwendet. Legen Sie defaultScoringProfile fest, dass ein benutzerdefiniertes Profil als Standard verwendet wird, das immer dann aufgerufen wird, wenn in der Abfragezeichenfolge kein benutzerdefiniertes Profil angegeben ist. Weitere Informationen zu Elementen finden Sie unter Hinzufügen von Bewertungsprofilen zu einem Suchindex und im Beispiel im nächsten Abschnitt. |
analyzers, charFilters, tokenizers, tokenFilters | Optional. Geben Sie diese Abschnitte des Indexes an, wenn Sie benutzerdefinierte Analysetools definieren. Standardmäßig sind diese Abschnitte NULL. |
defaultScoringProfile | Optional. Name eines benutzerdefinierten Bewertungsprofils, das das Standardbewertungsverhalten überschreibt. |
corsOptions | Optional. Clientseitiger JavaScript-Code kann standardmäßig keine APIs aufrufen, da der Browser jegliche ursprungsübergreifenden Anforderungen verhindert. Um ursprungsübergreifende Abfragen für Ihren Index zu ermöglichen, aktivieren Sie CORS (Cross-Origin Resource Sharing), indem Sie das Attribut corsOptions festlegen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt. Der corsOptions Abschnitt enthält Folgendes:allowedOrigins (Erforderlich) Eine durch Trennzeichen getrennte Liste der Ursprünge, die Zugriff auf Ihren Index erhalten, wobei jeder Ursprung in der Regel die Form protocol://< fully qualified-domain-name>:<port> hat (obwohl der <Port> häufig weggelassen wird). Das heißt, dass dem JavaScript-Code von diesen Ursprüngen erlaubt wird, Ihren Index abzufragen (vorausgesetzt, der richtige api-key wird angegeben). Wenn Sie den Zugriff auf alle Ursprünge zulassen möchten, geben Sie * als einzelnes Element im allowedOrigins Array an. Dies wird nicht für die Produktion empfohlen, kann aber für die Entwicklung oder das Debuggen nützlich sein. maxAgeInSeconds (Optional) Browser verwenden diesen Wert, um die Dauer (in Sekunden) zum Zwischenspeichern von CORS-Preflight-Antworten zu bestimmen. Dies muss eine positive ganze Zahl sein. Mit dem Wert steigt auch die Leistung, aber es dauert auch länger, bis CORS-Richtlinienänderungen in Kraft treten. Wenn diese Einstellung nicht festgelegt ist, gilt die Standarddauer von 5 Minuten. |
encryptionKey | Optional. Wird verwendet, um eine Synonymzuordnung mit Ihren eigenen Schlüsseln zu verschlüsseln, die in Ihrer Azure-Key Vault verwaltet werden. Verfügbar für abrechenbare Suchdienste, die am oder nach dem 01.01.2019 erstellt wurden. Ein encryptionKey Abschnitt enthält einen benutzerdefinierten keyVaultKeyName (erforderlich), einen systemgenerierten keyVaultKeyVersion (erforderlich) und einen keyVaultUri Schlüssel, der den Schlüssel bereitstellt (erforderlich, auch als DNS-Name bezeichnet). Ein Beispiel-URI kann "https://my-keyvault-name.vault.azure.net"" sein. Optional können Sie angeben accessCredentials , ob Sie keine verwaltete Systemidentität verwenden. Eigenschaften von accessCredentials include applicationId (Azure Active Directory-Anwendungs-ID, der Zugriffsberechtigungen für Ihre angegebene Azure Key Vault gewährt wurden) und applicationSecret (Authentifizierungsschlüssel der angegebenen Azure AD-Anwendung). Ein Beispiel im nächsten Abschnitt veranschaulicht die Syntax. |
Felddefinitionen
Die folgenden Attribute können beim Erstellen eines Indexes für ein Feld festgelegt werden.
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. Eine vollständige Liste der unterstützten Typen finden Sie unter Unterstützte Datentypen (Azure Cognitive Search). |
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.String sein. 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 Suchen oder Indizieren von Dokumenten unter 1000 Groß- und Kleinschreibung behandelt. Weitere Informationen finden Sie unter Nachschlagedokument (Azure Cognitive Search REST-API) und Hinzufügen, Aktualisieren oder Löschen von Dokumenten (Azure Cognitive Search REST-API). |
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, aber nicht möchten, dass das Feld für den Endbenutzer sichtbar ist. 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 Anforderungen an den Indexspeicher. Standard ist true für einfache Felder und null für komplexe Felder. |
searchable | Gibt an, ob das Feld volltextdurchsuchbar ist und in Suchabfragen referenziert werden kann. Dies bedeutet, dass es einer lexikalischen Analyse unterzogen wird, z. B. wortbrechend während der Indizierung. Wenn Sie ein durchsuchbares Feld auf einen Wert wie "Sonniger Tag" festlegen, wird es intern normalisiert und in die einzelnen Token "sunny" und "day" unterteilt. 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 für komplexe Felder sein null . Ein durchsuchbares Feld beansprucht zusätzlichen Speicherplatz in Ihrem Index, da Azure Cognitive Search den Inhalt dieser Felder verarbeitet und in zusätzlichen Datenstrukturen für eine leistungsfähige Suche organisiert. Wenn Sie Speicherplatz in Ihrem Index sparen möchten und kein Feld in Suchvorgänge einbezogen werden muss, legen Sie durchsuchbar auf fest false . Weitere Informationen finden Sie unter Funktionsweise der Volltextsuche in Azure Cognitive Search. |
filterable | Gibt an, ob das Feld in $filter Abfragen referenziert werden soll. Filterbar unterscheidet sich von durchsuchbar in der Behandlung von Zeichenfolgen. Felder vom Typ Edm.String oder Collection(Edm.String) die filterbar sind, werden nicht lexikalisch analysiert, sodass Vergleiche nur für genaue Übereinstimmungen gelten. Wenn Sie beispielsweise ein solches Feld f auf "Sonniger Tag" festlegen, $filter=f eq 'sunny' werden keine Übereinstimmungen gefunden.$filter=f eq 'Sunny day' Dieses Attribut muss für komplexe Felder gelten null . Standard ist true für einfache Felder und null für komplexe Felder. Um die Indexgröße zu reduzieren, legen Sie dieses Attribut auf false Felder fest, nach denen Sie nicht filtern. |
sortable | Gibt an, ob das Feld in $orderby Ausdrücken referenziert werden soll. Standardmäßig sortiert Azure Cognitive 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 sich um einen einzelwertigen Wert handelt (es verfügt über einen einzelnen Wert im Bereich des übergeordneten Dokuments). Einfache Sammlungsfelder können nicht sortiert werden, da sie mehrwertig sind. Einfache Unterfelder komplexer Sammlungen 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 . Der Standardwert für sortierbare Felder ist true für einfache Felder mit einem Wert, false für einfache Felder mit mehreren Werten 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 gelten 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 auf false Felder fest, für die Sie keine Facetierung ausführen. |
Analyzer | Legt das lexikalische Analysetool für die Tokenisierung von Zeichenfolgen während der Indizierungs- und Abfragevorgänge fest. Gültige Werte für diese Eigenschaft umfassen Sprachanalysetools, integrierte Analysetools und benutzerdefinierte Analysetools. Der Standardwert lautet standard.lucene . Dieses Attribut kann nur mit durchsuchbaren Zeichenfolgenfeldern verwendet werden, und es kann nicht zusammen mit searchAnalyzer oder indexAnalyzer festgelegt werden. Sobald 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 in Verbindung 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 umfassen 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 in Verbindung 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 umfassen integrierte Analysetools und benutzerdefinierte Analysetools. Dieses Attribut kann nur mit durchsuchbaren Feldern verwendet werden. Nachdem das Indexanalysetool ausgewählt wurde, kann er für das Feld nicht mehr geändert werden. Muss für komplexe Felder seinnull . |
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 Cognitive Search. |
Hinweis
Felder vom Typ Edm.String
, die filterbar, sortierbar oder facettierbar 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 Cognitive Search 32 Kb beträgt. Wenn Sie mehr Text als diesen in einem einzelnen Zeichenfolgenfeld speichern müssen, müssen Sie in Ihrer Indexdefinition explizit filterbar, sortierbar und facetable auf false
festlegen.
Das Festlegen eines Felds als durchsuchbar, filterbar, sortierbar oder facetable wirkt sich auf die Indexgröße und die Abfrageleistung aus. 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 facettierbar 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.
Hinweis
Die maximale Anzahl von Indizes, die Sie erstellen können, variiert je nach Tarif. Weitere Informationen finden Sie unter Diensteinschränkungen.
Antwort
Bei einer erfolgreichen Anforderung wird der Statuscode „201 – erstellt“ angezeigt.
Standardmäßig enthält der Antworttext die JSON für die erstellte Indexdefinition. Wenn der Prefer-Anforderungsheader jedoch auf „return=minimal“ festgelegt ist, ist der Antworttext leer und der Statuscode lautet „204 – kein Inhalt“ statt „201 – erstellt“. Dies gilt unabhängig davon, ob PUT oder POST zum Erstellen des Indexes verwendet wird.
Beispiele
Beispiel: Ein Indexschema
{
"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" },
{ "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 },
{ "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" }
]
}
],
"suggesters": [
{ "name": "sg", "searchMode": "analyzingInfixMatching", "sourceFields": ["HotelName"] }
],
"analyzers": [
{
"@odata.type": "#Microsoft.Azure.Search.CustomAnalyzer",
"name": "tagsAnalyzer",
"charFilters": [ "html_strip" ],
"tokenizer": "standard_v2"
}
]
}
Beispiel: Vorschlagser
"suggesters": [
{
"name": "name of suggester",
"searchMode": "analyzingInfixMatching",
"sourceFields": ["field1", "field2", ...]
}
]
Auf eine Vorschlagsfunktion wird in Abfrageanforderungen, die entweder die Vorschläge-API oder die AutoVervollständigen-API enthalten, anhand des Namens verwiesen, je nachdem, ob Sie eine Übereinstimmung oder den Rest eines Abfragebegriffs zurückgeben möchten. Weitere Informationen zum Erstellen und Verwenden einer Vorschlagsfunktion finden Sie unter Erstellen einer Vorschlagsfunktion.
Beispiel: Ähnlichkeit bei suchrelevanter Relevanz
Diese Eigenschaft legt den Bewertungsalgorithmus fest, der zum Erstellen einer Relevanzbewertung in Suchergebnissen einer Volltextsuchabfrage verwendet wird. In 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
Clientseitiger JavaScript-Code kann standardmäßig keine APIs aufrufen, da der Browser jegliche 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
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 mit 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: 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 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 .
{
"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"
}
]
}