Tipps zur Problembehandlung bei der kognitiven SucheTroubleshooting tips for cognitive search

Dieser Artikel enthält eine Liste mit Tipps und Tricks als Unterstützung bei Ihren ersten Schritten mit der kognitiven Suche in Azure Search.This article contains a list of tips and tricks to keep you moving as you get started with cognitive search capabilities in Azure Search.

Sofern noch nicht geschehen, machen Sie sich zunächst unter Schnellstart: Erstellen einer Pipeline für die kognitive Suche mithilfe von Qualifikationen und Beispieldaten damit vertraut, wie Sie mithilfe der kognitive Suche Datenanreicherungen in einer Blobdatenquelle anwenden.If you have not done so already, step through the Tutorial: Learn how to call the cognitive search APIs for practice in applying cognitive search enrichments to a blob data source.

Tipp 1: Beginnen Sie mit einem kleinen Dataset.Tip 1: Start with a small dataset

Am besten lassen sich Probleme schnell finden, wenn Sie diese möglichst schnell beheben können.The best way to find issues quickly is to increase the speed at which you can fix issues. Die einfachste Möglichkeit, die Indizierungszeit zu verkürzen, besteht darin, die Anzahl der zu indizierenden Dokumente zu verringern.The best way to reduce the indexing time is by reducing the number of documents to be indexed.

Beginnen Sie, indem Sie eine Datenquelle mit nur wenigen Dokumenten bzw. Datensätzen erstellen.Start by creating a data source with just a handful of documents/records. Die zusammengestellten Dokumente sollten dabei möglichst die Vielfalt der zu indexierenden Dokumente widerspiegeln.Your document sample should be a good representation of the variety of documents that will be indexed.

Führen Sie Ihre Dokumentenzusammenstellung durch die End-to-End-Pipeline und prüfen Sie, ob die Ergebnisse Ihre Anforderungen erfüllen.Run your document sample through the end-to-end pipeline and check that the results meet your needs. Sobald Sie mit den Ergebnissen zufrieden sind, können Sie weitere Dateien zu Ihrer Datenquelle hinzufügen.Once you are satisfied with the results, you can add more files to your data source.

Tipp 2: Vergewissern Sie sich, dass Ihre Anmeldeinformationen für die Datenquelle korrekt sind.Tip 2: Make sure your data source credentials are correct

Die Datenquellenverbindung wird erst überprüft, wenn Sie einen Indexer definieren, der sie verwendet.The data source connection is not validated until you define an indexer that uses it. Wenn Fehler angezeigt werden, die darauf hinweisen, dass der Indexer nicht auf die Daten zugreifen kann, stellen Sie Folgendes sicher:If you see any errors mentioning that the indexer cannot get to the data, make sure that:

  • Die Verbindungszeichenfolge ist korrekt.Your connection string is correct. Insbesondere beim Erstellen von SAS-Token müssen Sie das von Azure Search erwartete Format verwenden.Specially when you are creating SAS tokens, make sure to use the format expected by Azure Search. Weitere Informationen zu den verschiedenen unterstützten Formaten finden Sie im Abschnitt Angeben von Anmeldeinformationen.See How to specify credentials section to learn about the different formats supported.
  • Der Containername im Indexer ist korrekt.Your container name in the indexer is correct.

Tipp 3: Achten Sie darauf, was funktioniert, auch wenn Fehler auftreten.Tip 3: See what works even if there are some failures

Manchmal wird ein Indexer durch einen kleinen Fehler an der Ausführung gehindert.Sometimes a small failure stops an indexer in its tracks. Das ist in Ordnung, wenn Sie beabsichtigen, ein Problem nach dem anderen zu beheben.That is fine if you plan to fix issues one by one. Möglicherweise möchten Sie aber auch einen bestimmten Fehlertyp ignorieren, damit der Indexer fortfahren kann, sodass Sie sehen können, welche Flows tatsächlich funktionieren.However, you might want to ignore a particular type of error, allowing the indexer to continue so that you can see what flows are actually working.

In diesem Fall sollten Sie den Indexer anweisen, Fehler zu ignorieren.In that case, you may want to tell the indexer to ignore errors. Dazu setzen Sie maxFailedItems und maxFailedItemsPerBatch als Teil der Indexerdefinition auf -1.Do that by setting maxFailedItems and maxFailedItemsPerBatch as -1 as part of the indexer definition.

{
  "// rest of your indexer definition
   "parameters":
   {
      "maxFailedItems":-1,
      "maxFailedItemsPerBatch":-1
   }
}

Tipp 4: Sehen Sie sich angereicherte Dokumente genauer an.Tip 4: Looking at enriched documents under the hood

Angereicherte Dokumente sind temporäre Strukturen, die während der Anreicherung erstellt und nach Abschluss der Verarbeitung gelöscht werden.Enriched documents are temporary structures created during enrichment, and then deleted when processing is complete.

Zum Erstellen einer Momentaufnahme des angereicherten Dokuments, das während der Indizierung erstellt wurde, fügen Sie ein Feld namens enriched zu Ihrem Index hinzu.To capture a snapshot of the enriched document created during indexing, add a field called enriched to your index. Der Indexer gibt für alle Anreicherungen dieses Dokuments automatisch eine Zeichenfolgendarstellung im Feld aus.The indexer automatically dumps into the field a string representation of all the enrichments for that document.

Das Feld enriched enthält eine Zeichenfolge, die eine logische Darstellung des im Speicher angereicherten Dokuments im JSON-Format ist.The enriched field will contain a string that is a logical representation of the in-memory enriched document in JSON. Der Feldwert ist jedoch ein gültiges JSON-Dokument.The field value is a valid JSON document, however. Anführungszeichen werden mit Escapezeichen versehen, sodass Sie \" durch " ersetzen müssen, um das Dokument als formatierten JSON-Code anzuzeigen.Quotes are escaped so you'll need to replace \" with " in order to view the document as formatted JSON.

Das angereicherte Feld ist für Debugzwecke vorgesehen und soll Sie beim Verständnis der logischen Form der Inhalte unterstützen, für die Ausdrücke ausgewertet werden.The enriched field is intended for debugging purposes only, to help you understand the logical shape of the content that expressions are being evaluated against. Sie sollten bei der Indizierung nicht auf dieses Feld angewiesen sein.You should not depend on this field for indexing purposes.

Fügen Sie ein Feld enriched als Teil Ihrer Indexdefinition zu Debuzwecken hinzu:Add an enriched field as part of your index definition for debugging purposes:

Syntax des AnforderungstextsRequest Body Syntax

{
  "fields": [
    // other fields go here.
    {
      "name": "enriched",
      "type": "Edm.String",
      "searchable": false,
      "sortable": false,
      "filterable": false,
      "facetable": false
    }
  ]
}

Tipp 5: Prüfen Sie, ob die erwarteten Inhalte angezeigt werden.Tip 5: Expected content fails to appear

Fehlender Inhalt könnte das Ergebnis von Dokumenten sein, die während der Indizierung verworfen werden.Missing content could be the result of documents getting dropped during indexing. Für die Preisstufen Free und Basic gibt es niedrige Grenzwerte für die Dokumentgröße.Free and Basic tiers have low limits on document size. Jede Datei, die den Grenzwert überschreitet, wird während der Indizierung verworfen.Any file exceeding the limit is dropped during indexing. Sie können im Azure-Portal nach verworfenen Dokumenten suchen.You can check for dropped documents in the Azure portal. Doppelklicken Sie im Dashboard des Suchdiensts auf die Kachel des Indexers.In the search service dashboard, double-click the Indexers tile. Überprüfen Sie das Verhältnis der erfolgreichen indizierten Dokumente.Review the ratio of successful documents indexed. Wenn es nicht 100% ist, können Sie auf darauf klicken, um mehr Details zu erhalten.If it is not 100%, you can click the ratio to get more detail.

Wenn das Problem mit der Dateigröße zusammenhängt, wird möglicherweise ein Fehler wie dieser angezeigt: „Das Blob ist <Dateigröße> Bytes groß und überschreitet daher das Größenlimit für die Dokumentenextrahierung für Ihren aktuellen Diensttarif.“If the problem is related to file size, you might see an error like this: "The blob " has the size of bytes, which exceeds the maximum size for document extraction for your current service tier." Weitere Informationen zu Indexergrenzwerten finden Sie unter Grenzwerte für den Azure Search-Dienst.For more information on indexer limits, see Service limits.

Ein zweiter Grund dafür, dass Inhalte nicht angezeigt werden, können Zuordnungsfehler bei der Eingabe/Ausgabe sein, die zusammenhängen.A second reason for content failing to appear might be related input/output mapping errors. Ein Beispiel hierfür wäre, wenn ein Ausgabezielname „Personen“ lautet, aber der Indexfeldname kleingeschrieben ist („personen“).For example, an output target name is "People" but the index field name is lower-case "people". Das System könnte 201 Erfolgsmeldungen für die gesamte Pipeline zurückgeben, sodass der Eindruck entsteht, dass die Indizierung erfolgreich war, obwohl tatsächlich ein Feld leer ist.The system could return 201 success messages for the entire pipeline so you think indexing succeeded, when in fact a field is empty.

Tipp 6: Verlängern Sie die Verarbeitung über die maximale Laufzeit hinaus (24-Stunden-Fenster).Tip 6: Extend processing beyond maximum run time (24-hour window)

Die Bildanalyse ist selbst für einfache Fälle rechenintensiv, sodass die Verarbeitungsdauer bei besonders großen oder komplexen Bildern die maximal zulässige Zeit überschreiten kann.Image analysis is computationally-intensive for even simple cases, so when images are especially large or complex, processing times can exceed the maximum time allowed.

Die maximale Laufzeit variiert je nach Tarif: mehrere Minuten beim Free-Tarif, 24-Stunden-Indizierung bei abrechenbaren Tarifen.Maximum run time varies by tier: several minutes on the Free tier, 24-hour indexing on billable tiers. Wenn die Verarbeitung nicht innerhalb eines 24-Stunden-Zeitraums für die bedarfsgesteuerte Verarbeitung abgeschlossen werden kann, wechseln Sie zu einem Zeitplan, damit der Indexer die Verarbeitung dort fortsetzt, wo sie unterbrochen wurde.If processing fails to complete within a 24-hour period for on-demand processing, switch to a schedule to have the indexer pick up processing where it left off.

Bei geplanten Indexern wird die Indizierung beim letzten erfolgreich verarbeiteten Dokument planmäßig fortgesetzt.For scheduled indexers, indexing resumes on schedule at the last known good document. Durch die Verwendung eines wiederkehrenden Zeitplans kann sich der Indexer über eine Reihe von Stunden oder Tagen durch den Rückstand der Bilder arbeiten, bis schließlich alle Bilder verarbeitet sind.By using a recurring schedule, the indexer can work its way through the image backlog over a series of hours or days, until all un-processed images are processed. Weitere Informationen zur Zeitplansyntax finden Sie unter Schritt 3: Erstellen eines Indexers.For more information on schedule syntax, see Step 3: Create-an-indexer.

Bei der portalbasierten Indizierung (wie im Schnellstart beschrieben) wird durch die Indexeroption „Einmal ausführen“ die Verarbeitung auf eine Stunde ("maxRunTime": "PT1H") eingeschränkt.For portal-based indexing (as described in the quickstart), choosing the "run once" indexer option limits processing to 1 hour ("maxRunTime": "PT1H"). Sie können das Verarbeitungsfenster auch erweitern.You might want to extend the processing window to something longer.

Tipp 7: Erhöhen Sie den Durchsatz der Indizierung.Tip 7: Increase indexing throughput

Für eine parallele Indizierung platzieren Sie Ihre Daten in mehrere Container oder mehrere virtuelle Ordner innerhalb desselben Containers.For parallel indexing, place your data into multiple containers or multiple virtual folders inside the same container. Erstellen Sie dann mehrere Datenquellen-Indexer-Paare.Then create multiple datasource and indexer pairs. Alle Indexer können das gleiche Skillset verwenden und in den gleichen Zielsuchindex schreiben, sodass Ihre Such-App über diese Partitionierung nicht informiert sein muss.All indexers can use the same skillset and write into the same target search index, so your search app doesn’t need to be aware of this partitioning. Weitere Informationen finden Sie unter Indizieren großer Datasets.For more information, see Indexing Large Datasets.

Weitere InformationenSee also