Erstellen eines Index in Azure Cognitive Search

Der Zieltext von Abfrageanforderungen in Azure Cognitive Search ist der durchsuchbare Text in einem Suchindex.

In diesem Artikel lernen Sie die Schritte zum Definieren und Veröffentlichen eines Suchindexes kennen. Durch das Erstellen eines Index wird die physische Datenstruktur (Ordner und Dateien) in Ihrem Suchdienst eingerichtet. Wenn die Indexdefinition vorhanden ist, folgt das Laden des Index als separate Aufgabe.

Voraussetzungen

  • Schreibberechtigungen für den Suchdienst. Die Berechtigung kann über einen Administrator-API-Schlüssel für die Anforderung erteilt werden. Wenn Sie an der öffentlichen Vorschauversion der rollenbasierten Zugriffssteuerung teilnehmen, können Sie alternativ Ihre Anforderung als Mitglied der Rolle „Mitwirkender an der Suche“ ausstellen.

  • Eine externe Datenquelle, die den zu indizierten Inhalt bereitstellt. Sie sollten sich auf die Datenquelle beziehen, um die Schemaanforderungen Ihres Suchindexes zu verstehen. Die Indexerstellung ist größtenteils eine Schemadefinitionsübung. Vor dem Erstellen sollten Sie über Folgendes verfügen:

    • Eine klare Vorstellung davon, welche Quellfelder im Suchindex durchsuchbar, abrufbar, filterbar, facettierbar und sortierbar sein sollen (einen Leitfaden dazu finden Sie in der Schemaprüfliste).

    • Ein eindeutiges Feld in Quelldaten, der als Dokumentschlüssel (oder ID) im Index verwendet werden kann.

  • Eine stabile Indexposition. Das Verschieben eines vorhandenen Indexes in einen anderen Suchdienst wird nicht standardmäßig 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 beispielsweise mit dem Free-Tarif experimentieren, können jeweils nur drei Indizes gleichzeitig vorhanden sein. 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 Cognitive Search muss dies eine Zeichenfolge sein und aus eindeutigen Werten in der Datenquelle stammen, die den zu indizierten Inhalt bereitstellt. Ein Suchdienst generiert keine Schlüsselwerte, aber in einigen Szenarien (z. B. dem Azure-Tabellenindexer) synthetisiert er vorhandene Werte, um einen eindeutigen Schlüssel für die zu indizierten Dokumente zu erstellen.

Während der inkrementellen Indizierung, bei der nur neuer und aktualisierter Inhalt indiziert wird, werden eingehende Dokumente mit neuen Schlüsseln hinzugefügt, während eingehende Dokumente mit vorhandenen Schlüsseln entweder zusammengeführt oder überschrieben werden. Dies ist davon abhängig, ob Indexfelder NULL sind oder ausgefüllt werden.

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 wirkt sich auf die Verwendung des Felds aus. 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 dabei um ein einzelnes Zeichenfolgenfeld, das aus einem Quelldatenfeld aufgefüllt wird, das eindeutige Werte enthält. 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 durchsuchbare Inhalte zum 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.

    Feldattributzuweisungen bestimmen sowohl das Suchverhalten als auch die physische Darstellung Ihres Indexes 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 das Standardanalysetool ("analyzer": null) oder ein anderes Analysetool verwenden. Analysetools werden verwendet, um Textfelder während der Indizierung und Abfrageausführung mit Token zu versehen. Wenn Zeichenfolgen beschreibend und semantisch reichhaltig sind oder wenn Sie Zeichenfolgen übersetzt haben, sollten Sie die Standardeinstellung mit einem Sprachanalysetool außer Kraft setzen.

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. 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.

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

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

  • allowedOrigins (erforderlich): Dies ist eine Liste der Ursprünge, denen Zugriff auf Ihren Index gewährt wird. Dies bedeutet, dass jeglicher von diesen Ursprüngen bereitgestellte Javascript-Code Indexabfragen durchführen kann (sofern er den richtigen API-Schlüssel angibt). 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 Cross-Origin Resource Sharing, CORS (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 Vorgehensweise für Produktionssuchdienste, ist für Entwicklung und Debugging jedoch oft nützlich.

  • maxAgeInSeconds (optional): Von Browsern wird dieser Wert verwendet, um die Dauer (in Sekunden) des Zwischenspeicherns von CORS-Preflight-Antworten zu ermitteln. Dies muss eine positive ganze Zahl sein. 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.

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. In Bezug auf Analyzerzuweisungen in Zeichenfolgenfeldern können Sie nur „searchAnalyzer“ ändern. Alle anderen Zuweisungen und Änderungen erfordern eine Neuerstellung.
Bewertungsprofile Ja
Vorschläge Nein
Cross-Origin Remote Scripting (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.