Erstellen Sie einen Index in Azure AI Search

In Azure AI Search zielen Suchanfragen auf den durchsuchbaren Text in einem Suchindex.

In diesem Artikel lernen Sie die Schritte zum Definieren und Veröffentlichen eines Suchindexes kennen. Durch die Erstellung eines Indexes werden die physischen Datenstrukturen Ihres Suchdienstes festgelegt. Wenn die Indexdefinition vorhanden ist, folgt das Laden des Index als separate Aufgabe.

Voraussetzungen

  • Schreibberechtigungen. Die Berechtigung kann über einen Administrator-API-Schlüssel für die Anforderung erteilt werden. Alternativ können Sie, wenn Sie die rollenbasierte Zugriffskontrolle verwenden, eine Anfrage als Mitglied der Rolle "Search Contributor" senden.

  • Ein Verständnis der Daten, die Sie indizieren möchten. Die Erstellung eines Indexes ist eine Übung zur Schemadefinition, daher sollten Sie eine klare Vorstellung davon haben, welche Quellfelder Sie durchsuchbar, abrufbar, filterbar, facettierbar und sortierbar machen wollen (siehe die Schema-Checkliste als Anleitung).

    Sie müssen auch ein eindeutiges Feld in den Quelldaten haben, das als Dokumentenschlüssel (oder ID) im Index verwendet werden kann.

  • Eine stabile Indexposition. Das Verschieben eines vorhandenen Index zu einem anderen Suchdienst wird nicht sofort unterstützt. Schauen Sie sich die Anwendungsanforderungen erneut an, und vergewissern Sie sich, dass Ihr vorhandener Suchdienst, seine Kapazität und sein Speicherort für Ihre Anforderungen ausreichend sind.

  • Schließlich verfügen alle Dienstebenen über Indexgrenzwerte für die Anzahl von Objekten, die Sie erstellen können. Wenn Sie z. B. mit der kostenlosen Version experimentieren, können Sie immer nur drei Indizes gleichzeitig haben. Innerhalb des Index selbst gibt es Grenzwerte für die Anzahl komplexer Felder und Sammlungen.

Dokumentschlüssel

Ein Suchindex verfügt über ein erforderliches Feld: einen Dokumentschlüssel. Ein Dokumentschlüssel ist der eindeutige Bezeichner eines Suchdokuments. In Azure AI Search muss es sich um eine Zeichenfolge handeln, die aus eindeutigen Werten in der Datenquelle stammt, die den zu indizierenden Inhalt bereitstellt. Ein Suchdienst generiert keine Schlüsselwerte, aber in einigen Szenarien (wie dem Azure-Tabellenindexer) synthetisiert er vorhandene Werte, um einen eindeutigen Schlüssel für die zu indizierenden Dokumente zu erstellen.

Bei der inkrementellen Indizierung, bei der neue und aktualisierte Inhalte indiziert werden, werden eingehende Dokumente mit neuen Schlüsseln hinzugefügt, während eingehende Dokumente mit vorhandenen Schlüsseln entweder zusammengeführt oder überschrieben werden, je nachdem, ob Indexfelder leer oder gefüllt sind.

Schemaprüfliste

Verwenden Sie diese Prüfliste bei den Entwurfsentscheidungen für Ihren Suchindex.

  1. Überprüfen Sie die Benennungskonventionen, damit Index- und Feldnamen den Benennungsregeln entsprechen.

  2. Sehen Sie sich die unterstützten Datentypen an. Der Datentyp hat EinFlow auf die Verwendung des Feldes. Numerische Inhalte können beispielsweise gefiltert, aber nicht per Volltextsuche durchsucht werden. Der gängigste Datentyp ist Edm.String für durchsuchbaren Text, in Token umgewandelt und abgefragt mithilfe der Volltextsuchmaschine.

  3. Identifizieren Sie einen Dokumentschlüssel. Ein Dokumentschlüssel ist eine Anforderung für einen Index. Es handelt sich um ein einzelnes Zeichenfolgenfeld, das aus einem Quelldatenfeld mit eindeutigen Werten gespeist wird. Beispiel: Beim Indizieren über Blob Storage wird der Metadatenspeicherpfad häufig als Dokumentschlüssel verwendet, da er jeden Blob im Container eindeutig identifiziert.

  4. Identifizieren Sie die Felder in Ihrer Datenquelle, die zu durchsuchbaren Inhalten im Index beitragen. Durchsuchbare Inhalte sind beispielweise kurze oder lange Zeichenfolgen, die mit der Volltextsuchmaschine abgefragt werden. Wenn der Inhalt ausführlich ist (kleine Ausdrücke oder größere Blöcke), experimentieren Sie mit verschiedenen Analyzern, um zu sehen, wie der Text in Token umgewandelt wird.

    Die Zuweisung von Feldattributen bestimmt sowohl das Suchverhalten als auch die physische Darstellung Ihres Index im Suchdienst. Festzulegen, wie Felder angegeben werden sollen, ist für viele Kunden ein iterativer Prozess. Um Iterationen zu beschleunigen, beginnen Sie mit Beispieldaten, damit Sie problemlos löschen und neu erstellen können.

  5. Identifizieren Sie, welche Quellfelder als Filter verwendet werden können. Numerische Inhalte und kurze Textfelder, insbesondere solche mit sich wiederholenden Werten, sind gute Optionen. Beachten Sie beim Arbeiten mit Filtern Folgendes:

    • Filterbare Felder können optional in der Facettennavigation verwendet werden.

    • Filterbare Felder werden in beliebiger Reihenfolge zurückgegeben. Erwägen Sie daher, sie auch sortierbar zu machen.

  6. Legen Sie fest, ob Sie den Standard-Analysator ("analyzer": null) oder einen anderen Analysator verwenden wollen. Analysetools werden verwendet, um Textfelder während der Indizierung und Abfrageausführung mit Token zu versehen.

    Für mehrsprachige Zeichenketten wird ein Sprachanalysator verwendet.

    Für Strings mit Bindestrich oder Sonderzeichen sollten Sie spezialisierte Analysatoren in Betracht ziehen. Ein Beispiel hierfür ist ein Schlüsselwort, durch das der gesamte Inhalt eines Felds als ein einzelnes Token behandelt wird. Dieses Verhalten ist nützlich für Daten wie Postleitzahlen, IDs und einige Produktnamen. Weitere Informationen finden Sie unter Suche nach Teilausdrücken und Mustern mit Sonderzeichen (Bindestriche, Platzhalter, reguläre Ausdrücke, Muster).

Hinweis

Die Volltextsuche wird über Ausdrücke durchgeführt, die während der Indizierung mit Token versehen werden. Wenn Ihre Abfragen nicht die erwarteten Ergebnisse zurückgeben, testen Sie auf Tokenisierung, um zu überprüfen, ob die Zeichenfolge tatsächlich vorhanden ist. Sie können verschiedene Analysetools für Zeichenfolgen ausprobieren, um zu ermitteln, wie Token für verschiedene Analysetools erstellt werden.

Erstellen eines Index

Wenn Sie bereit sind, den Index zu erstellen, verwenden Sie einen Suchclient, der die Anforderung senden kann. Für die anfängliche Entwicklung sowie für Proof of Concept-Tests empfiehlt sich die Verwendung des Azure-Portals oder der REST-APIs.

Planen Sie während der Entwicklung häufige Neuerstellungen ein. Da physische Strukturen im Dienst erstellt werden, ist bei vielen Änderungen das Löschen und Neuerstellen von Indizes erforderlich. Sie sollten erwägen, mit einer Teilmenge Ihrer Daten zu arbeiten, damit Neuerstellungen schneller gehen.

Bei der Indexerstellung über das Portal werden Anforderungen und Schemaregeln für bestimmte Datentypen erzwungen, z. B. das Deaktivieren von Funktionen zur Volltextsuche bei numerischen Feldern.

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie auf der Übersichtsseite des Suchdiensts eine der beiden Optionen zum Erstellen eines Suchindex aus:

    Der Assistent ist ein End-to-End-Workflow, der einen Indexer, eine Datenquelle und einen fertigen Index erstellt. Außerdem werden die Daten geladen. Wenn dies mehr ist, als Sie möchten, verwenden Sie stattdessen Index hinzufügen.

Der folgende Screenshot hebt hervor, wo Sie Index hinzufügen und Daten importieren auf der Befehlsleiste finden. Nachdem ein Index erstellt wurde, können Sie ihn auf der Registerkarte Indizes wiederfinden.

Befehl „Index hinzufügen“

Tipp

Nachdem Sie einen Index im Portal erstellt haben, können Sie die JSON-Darstellung kopieren und ihrem Anwendungscode hinzufügen.

corsOptions für ursprungsübergreifende Abfragen festlegen

Indexschemas enthalten einen Abschnitt zum Festlegen von corsOptions. Standardmäßig kann clientseitiges JavaScript keine APIs aufrufen, da die Browser alle herkunftsübergreifenden Anfragen verhindern. Um herkunftsübergreifende Abfragen an Ihren Index zu ermöglichen, aktivieren Sie CORS (Cross-Origin Resource Sharing), indem Sie das Attribut corsOptions setzen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

Die folgenden Eigenschaften können für CORS festgelegt werden:

  • allowedOrigins (erforderlich): Dies ist eine Liste von Herkunftsländern, die Zugriff auf Ihren Index haben. JavaScript-Code, der von diesen Ursprüngen geliefert wird, darf Ihren Index abfragen (vorausgesetzt, der Aufrufer gibt einen gültigen Schlüssel an oder verfügt über Berechtigungen). Ursprünge werden in der Regel im Format protocol://<fully-qualified-domain-name>:<port> angegeben, wobei <port> häufig weggelassen wird. Weitere Informationen finden Sie unter Ursprungsübergreifende Ressourcennutzung (Wikipedia).

    Wenn Sie den Zugriff auf alle Ursprünge zulassen möchten, beziehen Sie * als ein einzelnes Element in das Array allowedOrigins ein. Dies ist keine empfohlene Praxis für produktive Suchdienste, aber es ist oft nützlich für die Entwicklung und Fehlersuche.

  • maxAgeInSeconds (optional): Browser verwenden diesen Wert, um die Dauer (in Sekunden) für das Caching von CORS-Preflight-Antworten zu bestimmen. Dies muss eine positive ganze Zahl sein. Ein längerer Cache-Zeitraum sorgt für eine bessere Leistung, verlängert aber die Zeit, die eine CORS-Richtlinie benötigt, um wirksam zu werden. Wenn dieser Wert nicht festgelegt ist, wird eine Standarddauer von fünf Minuten verwendet.

Zulässige Updates für vorhandene Indizes

Index erstellen erstellt die physischen Datenstrukturen (Dateien und invertierte Indizes) in Ihrem Suchdienst. Sobald der Index erstellt wurde, hängt die Möglichkeit, Änderungen mithilfe von Index erstellen vorzunehmen, davon ab, ob diese physischen Strukturen durch Ihre Änderungen ungültig werden. Die meisten Feldattribute können nicht mehr geändert werden, nachdem das Feld in Ihrem Index erstellt wurde.

Alternativ können Sie einen Indexalias erstellen, der als stabiler Verweis im Anwendungscode dient. Anstatt Ihren Code zu aktualisieren, können Sie einen Indexalias aktualisieren, um auf neuere Indexversionen zu zeigen.

Um die Änderungsrate im Entwurfsprozess zu minimieren, wird in der folgenden Tabelle beschrieben, welche Elemente im Schema fest und welche flexibel sind. Das Ändern eines festen Elements erfordert eine Indexneuerstellung, während flexible Elemente jederzeit ohne Beeinträchtigung der physischen Implementierung geändert werden können.

Element Kann aktualisiert werden?
Name Nein
Schlüssel Nein
Feldnamen und -typen Nein
Feldattribute (durchsuchbar, filterbar, facettierbar, sortierbar) Nein
Feldattribut (abrufbar) Ja
Analyzer Sie können benutzerdefinierte Analyzer im Index hinzufügen und ändern. Was die Analysator-Zuweisungen für String-Felder betrifft, können Sie nur searchAnalyzer ändern. Alle anderen Zuweisungen und Änderungen erfordern eine Neuerstellung.
Bewertungsprofile Ja
Vorschläge No
Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) Ja
Verschlüsselung Ja

Nächste Schritte

Verwenden Sie die folgenden Links, um sich mit dem Laden eines Indexes mit Daten oder dem Erweitern eines Indexes mit einer Synonymzuordnung vertraut zu machen.