Indexer in Azure Cognitive Search

Ein Indexer in Azure Cognitive Search ist ein Crawler, der durchsuchbare Inhalte aus Cloud-Datenquellen extrahiert und einen Suchindex mithilfe von Feld-zu-Feld-Zuordnungen zwischen Quelldaten und einen Suchindex auffüllt. Dieser Ansatz wird auch als „Pullmodell“ bezeichnet, weil der Suchdienst Daten abruft, ohne dass Sie Code schreiben müssen, der einem Index Daten hinzufügt. Indexer steuern auch die Funktionen der KI-Anreicherung von Cognitive Search und integrieren die externe Verarbeitung von Inhalten auf dem Weg zu einem Index.

Indexer sind nur in der Cloud verfügbar, mit einzelnen Indexern für unterstützte Datenquellen. Beim Konfigurieren eines Indexers geben Sie eine Datenquelle (Ursprung) sowie einen Suchindex (Ziel) an. Bei mehreren Quellen, z. B. Azure Blob Storage, gibt es mehrere Konfigurationseigenschaften speziell für diesen Inhaltstyp.

Sie können Indexer bei Bedarf oder nach einem Zeitplan für die regelmäßige Datenaktualisierung ausführen (z. B. alle fünf Minuten). Für häufigere Aktualisierungen ist ein Pushmodell erforderlich, bei dem Daten gleichzeitig in Azure Cognitive Search und in Ihrer externen Datenquelle aktualisiert werden.

Indexerszenarien und Anwendungsfälle

Sie können einen Indexer als alleiniges Mittel für die Datenerfassung oder in Kombination mit anderen Techniken verwenden. In der folgenden Tabelle werden die Hauptszenarios zusammengefasst.

Szenario Strategie
Einzelne Datenquelle Dieses Muster ist das einfachste: eine einzige Datenquelle ist der einzige Inhaltsanbieter für einen Suchindex. Die meisten unterstützten Datenquellen bieten eine Form der Änderungserkennung, sodass nachfolgende Indexerausführungen den Unterschied übernehmen, wenn Inhalte in der Quelle hinzugefügt oder aktualisiert werden.
Mehrere Datenquellen Eine Indexerspezifikation kann nur eine einzige Datenquelle haben, aber der Suchindex selbst kann Inhalte aus mehreren Quellen akzeptieren, wobei jede Indexerausführung neuen Inhalt von einem anderen Datenanbieter liefert. Jede Quelle kann ihren Anteil an vollständigen Dokumenten beitragen oder ausgewählte Felder in jedem Dokument auffüllen. Einen genaueren Blick auf dieses Szenario finden Sie unter Tutorial: Indizieren von mehreren Datenquellen mithilfe des .NET SDK.
Mehrere Indexer Mehrere Datenquellen werden in der Regel mit mehreren Indexern gekoppelt, wenn Sie Laufzeitparameter, den Zeitplan oder Feldzuordnungen anpassen müssen.

Regionübergreifendes Aufskalieren von Cognitive Search ist ein anderes Szenario. Es kann sein, dass sich mehrere Kopien des gleichen Suchindex in unterschiedlichen Regionen befinden. Zum Synchronisieren des Suchindexinhalts können mehrere Indexer vorhanden sein, die Daten aus derselben Datenquelle pullen und in jeder Region jeweils einen anderen Suchindex als Ziel verwenden.

Für die parallele Indizierung besonders großer Datasets ist ebenfalls eine Strategie mit mehreren Indexern erforderlich, wobei jedem Indexer eine Teilmenge der Daten zugeordnet ist.
Inhaltstransformation Indexer steuern auch die KI-Anreicherung. Inhaltstransformationen werden in einem Skillset definiert, das Sie dem Indexer anfügen.

Unterstützte Datenquellen

Die Indexer durchforsten die Datenspeicher in und außerhalb von Azure.

Indexer akzeptieren flache Zeilensätze, z. B. eine Tabelle oder Ansicht, oder Elemente in einem Container oder Ordner. In den meisten Fällen wird ein Suchdokument pro Zeile, Datensatz oder Element erstellt.

Indexerverbindungen mit Remotedatenquellen können über standardmäßige Internetverbindungen (öffentlich) oder über verschlüsselte privaten Verbindungen hergestellt werden, wenn Sie virtuelle Azure-Netzwerke für Client-Apps verwenden. Sie können auch Verbindungen mit Authentifizierung über eine verwaltete Identität einrichten. Weitere Informationen zu sicheren Verbindungen finden Sie unter Indexerzugriff auf Datenquellen mit Azure-Netzwerksicherheitsfeatures und Herstellen einer Verbindung zu einer Datenquelle mithilfe einer verwalteten Identität.

Phasen der Indizierung

Bei einer anfänglichen Ausführung, bei der der Index leer ist, liest ein Indexer alle Daten, die in der Tabelle oder im Container bereitgestellt werden. Bei nachfolgenden Ausführungen kann der Indexer in der Regel nur die geänderten Daten erkennen und abrufen. Bei Blobdaten erfolgt die Änderungserkennung automatisch. Bei anderen Datenquellen wie Azure SQL oder Azure Cosmos DB muss die Änderungserkennung aktiviert sein.

Für jedes empfangene Dokument implementiert oder koordiniert der Indexer mehrere Schritte – vom Abrufen des Dokuments bis hin zur Übergabe an eine Suchmaschine für die Indizierung. Optional initiiert ein Indexer auch Skillsetausführungen und -ausgaben, vorausgesetzt, dass ein Skillset definiert ist.

Indexerphasen

Phase 1: Dokumententschlüsselung

Dokumententschlüsselung ist der Vorgang des Öffnens von Dateien und des Extrahierens von Inhalt. Textbasierte Inhalte können aus Dateien in einem Dienst, Zeilen in einer Tabelle oder Elementen in Containern oder Sammlungen extrahiert werden. Wenn Sie einem Indexer ein Skillset und Bildanalyseskills hinzufügen, kann die Dokumententschlüsselung auch Bilder extrahieren und zur Verarbeitung in die Warteschlange einreihen.

Abhängig von der Datenquelle führt der Indexer verschiedene Vorgänge aus, um potenziell indizierbare Inhalte zu extrahieren:

  • Wenn das Dokument eine Datei mit eingebetteten Bildern ist, wie z. B. eine PDF, extrahiert der Indexer Text, Bilder und Metadaten. Indexer können Dateien aus Azure Blob Storage, Azure Data Lake Storage Gen2 und SharePoint öffnen.

  • Wenn es sich bei dem Dokument um einen Datensatz in Azure SQL handelt, extrahiert der Indexer die nicht binären Inhalte aus jedem Feld in jedem Datensatz.

  • Handelt es sich bei dem Dokument um einen Datensatz in Azure Cosmos DB, extrahiert der Indexer die nicht binären Inhalte aus Feldern und Unterfeldern des Azure Cosmos DB-Dokuments.

Phase 2: Feldzuordnungen

Ein Indexer extrahiert Text aus einem Quellfeld und sendet ihn an ein Zielfeld in einem Index oder Wissensspeicher. Wenn Feldnamen und -typen übereinstimmen, ist der Pfad klar. Möglicherweise möchten Sie aber unterschiedliche Namen oder Typen in der Ausgabe, in welchem Fall Sie dem Indexer mitteilen müssen, wie das Feld zugeordnet werden soll.

Um Feldzuordnungen anzugeben,geben Sie die Quell- und Zielfelder in die Indexerdefinition ein.

Dieser Schritt erfolgt nach der Dokumententschlüsselung, aber vor Transformationen, wenn der Indexer aus den Quelldokumenten liest. Wenn Sie eine Feldzuordnung definieren, wird der Wert des Quellfelds unverändert an das Zielfeld gesendet.

Phase 3: Skillset-Ausführung

Skillset-Ausführung ist ein optionaler Schritt, der die integrierte oder benutzerdefinierte KI-Verarbeitung aufruft. Skillsets können optische Zeichenerkennung (OCR) oder andere Formen der Bildanalyse hinzufügen, wenn der Inhalt binär ist. Darüber hinaus können Skillsets natürliche Sprachverarbeitung hinzufügen. Beispielsweise können Sie Textübersetzung oder Schlüsselbegriffserkennung hinzufügen.

Wie auch immer die Transformation aussieht, die Skillset-Ausführung ist der Zeitpunkt, an dem eine Anreicherung erfolgt. Wenn ein Indexer eine Pipeline ist, können Sie sich einen Skillset als „Pipeline innerhalb der Pipeline“ vorstellen.

Phase 4: Ausgabefeldzuordnungen

Wenn Sie ein Skillset einbeziehen, müssen Sie Ausgabefeldzuordnungen in der Indexerdefinition angeben. Die Ausgabe eines Skillsets wird intern als Struktur manifestiert, die als angereichertes Dokumentbezeichnet wird. Mithilfe von Ausgabefeldzuordnungen können Sie auswählen, welche Teile dieser Struktur Feldern in Ihrem Index zugeordnet werden sollen.

Trotz der Ähnlichkeit bei Namen erstellen Ausgabefeldzuordnungen und Feldzuordnungen Zuordnungen aus verschiedenen Quellen. Feldzuordnungen ordnen den Inhalt des Quellfelds einem Zielfeld in einem Suchindex zu. Ausgabefeld-Zuordnungen ordnen den Inhalt eines internen angereicherten Dokuments (Skill-Outputs) den Zielfeldern im Index zu. Anders als bei Feldzuordnungen, die als optional gelten, wird für jeden transformierten Inhalt, der Teil des Indexes sein soll, eine Ausgabefeldzuordnung benötigt.

Die nächste Abbildung zeigt eine Beispieldarstellung einer Indexer-Debugsitzungder Indexerphasen: Dokumententschlüsselung, Feldzuordnungen, Skillset-Ausführung und Ausgabefeldzuordnungen.

Beispieldebugsitzung

Grundlegender Workflow

Indexer können Features bereitstellen, die für die Datenquelle eindeutig sind. In dieser Hinsicht variieren einige Aspekte von Indexern oder der Datenquellenkonfiguration nach Indexertyp. Für alle Indexer werden aber die gleiche grundlegende Zusammenstellung und die gleichen Anforderungen verwendet. Die Schritte, die für alle Indexer gelten, sind unten beschrieben.

Schritt 1: Erstellen einer Datenquelle

Indexer benötigen ein Datenquellenobjekt mit einer Verbindungszeichenfolge und ggf. Anmeldeinformationen. Datenquellen sind unabhängige Objekte. Mehrere Indexer können dasselbe Datenquellenobjekt verwenden, um mehrere Indizes gleichzeitig zu laden.

Sie können eine Datenquelle mit einem der folgenden Ansätze erstellen:

Schritt 2: Erstellen eines Index

Mit einem Indexer werden einige Aufgaben in Bezug auf die Datenerfassung automatisiert, aber das Erstellen eines Index gehört im Allgemeinen nicht dazu. Als Voraussetzung müssen Sie über einen vordefinierten Index verfügen, der entsprechende Zielfelder für alle Quellfelder in Ihrer externen Datenquelle enthält. Felder müssen nach Name und Datentyp übereinstimmen. Andernfalls können Sie Feldzuordnungen definieren, um die Zuordnung einzurichten.

Weitere Informationen finden Sie unter Erstellen eines Index.

Schritt 3: Erstellen und Ausführen (oder Planen) des Indexers

Eine Indexerdefinition besteht aus Eigenschaften, die den Indexer eindeutig identifizieren, angeben, welche Datenquelle und welcher Index verwendet werden sollen, und weitere Konfigurationsoptionen mit Einfluss auf das Laufzeitverhalten bieten, etwa ob der Indexer bei Bedarf oder nach einem Zeitplan ausgeführt wird.

Fehler oder Warnungen zu Datenzugriffs- oder Skillsetprüfungen treten während der Indexerausführung auf. Bis zum Start der Indexerausführung sind abhängige Objekte wie Datenquellen, Indizes und Skillsets im Suchdienst inaktiv.

Weitere Informationen finden Sie unter Erstellen eines Indexers

Sie können einen Indexer nach der ersten Ausführung bei Bedarf erneut ausführen oder einen Zeitplan einrichten.

Sie können den Indexerstatus im Portal oder über die API zum Abrufen des Indexer-Status überwachen. Sie sollten auch Abfragen für den Index ausführen, um zu überprüfen, ob das Ergebnis Ihren Erwartungen entspricht.

Indexer verfügen nicht über dedizierte Verarbeitungsressourcen. Daher kann es sein, dass der Status des Indexers als im Leerlauf angezeigt wird, ehe er ausgeführt wird (abhängig von anderen Aufträgen in der Warteschlange), und dass Laufzeiten nicht vorhersehbar sind. Auch andere Faktoren bestimmen die Leistung des Indexers, wie z. B. Größe und Komplexität des Dokuments und Bildanalyse.

Nächste Schritte

Nach dieser Einführung können Sie sich als Nächstes mit Indexereigenschaften und -parametern sowie mit der Planung und Überwachung von Indexern vertraut machen. Alternativ können Sie zur Liste mit den unterstützten Datenquellen zurückkehren und sich ausführlicher über eine bestimmte Quelle informieren.