Indizieren von CSV-Blobs und -Dateien mithilfe des delimitedText-Analysemodus

Gilt für: Blobindexer, Dateiindexer

In Azure KI-Suche unterstützen Indexer für Azure Blob Storage und Azure Files einen delimitedText-Parsing-Modus für CSV-Dateien, bei dem jede Zeile in der CSV-Datei als separates Suchdokument behandelt wird. Bei dem folgenden durch Trennzeichen getrennten Text ergeben sich mit dem Analysemodus delimitedText z. B. zwei Dokumente im Suchindex:

id, datePublished, tags
1, 2016-01-12, "azure-search,azure,cloud"
2, 2016-07-07, "cloud,mobile"

Wenn ein Feld in der CSV-Datei das Trennzeichen enthält, sollte es in Anführungszeichen eingeschlossen werden. Wenn das Feld ein Anführungszeichen enthält, muss es mit doppelten Anführungszeichen ("") versehen werden.

id, datePublished, tags
1, 2020-01-05, "tags,with,""quoted text"""

Ohne den delimitedText-Analysemodus wird der gesamte Inhalt der CSV-Datei als ein Suchdokument behandelt.

Wenn Sie mehrere Suchdokumente aus einem einzelnen Blob erstellen, sollten Sie sich Indizieren von Blobs zum Generieren mehrerer Suchdokumente durchlesen. Hier erhalten Sie weitere Informationen dazu, wie die Zuweisung von Dokumentschlüsseln funktioniert. Der Blobindexer kann Werte suchen oder generieren, die jedes neue Dokument eindeutig definieren. Insbesondere kann ein vorübergehendes AzureSearch_DocumentKey-Element erstellt werden, das beim Analysieren eines Blobs in kleinere Teile aufgeteilt wird, wobei der Wert dann als Schlüssel des Suchdokuments im Index verwendet wird.

Einrichten der CSV-Indizierung

Erstellen oder aktualisieren Sie zum Indizieren von CSV-Blobs eine Indexerdefinition mit dem delimitedText-Analysemodus in einer Indexer erstellen-Anforderung.

Nur die UTF-8-Codierung wird unterstützt.

{
  "name" : "my-csv-indexer",
  ... other indexer properties
  "parameters" : { "configuration" : { "parsingMode" : "delimitedText", "firstLineContainsHeaders" : true } }
}

firstLineContainsHeaders gibt an, dass die erste (nicht leere) Zeile der einzelnen Blobs Header enthält. Wenn Blobs am Anfang keine Headerzeile enthalten, sollten die Header in der Indexerkonfiguration angegeben werden:

"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextHeaders" : "id,datePublished,tags" } } 

Sie können das Trennzeichen mithilfe der Konfigurationseinstellung delimitedTextDelimiter anpassen. Beispiel:

"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextDelimiter" : "|" } }

Hinweis

Im durch Trennzeichen getrennten Textanalysemodus geht Azure KI-Suche davon aus, dass alle Blobs CSV-Dateien sind. Wenn Sie eine Mischung aus CSV- und Nicht-CSV-Blobs in derselben Datenquelle haben, sollten Sie Dateierweiterungsfilter verwenden, um zu steuern, welche Dateien in jeder Indexerausführung importiert werden.

Beispiele für Anforderungen

Dies alles wird an vollständigen Nutzdatenbeispielen demonstriert.

Datenquelle:

POST https://[service name].search.windows.net/datasources?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]
{
    "name" : "my-blob-datasource",
    "type" : "azureblob",
    "credentials" : { "connectionString" : "DefaultEndpointsProtocol=https;AccountName=<account name>;AccountKey=<account key>;" },
    "container" : { "name" : "my-container", "query" : "<optional, my-folder>" }
}   

Indexer:

POST https://[service name].search.windows.net/indexers?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]
{
  "name" : "my-csv-indexer",
  "dataSourceName" : "my-blob-datasource",
  "targetIndexName" : "my-target-index",
  "parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextHeaders" : "id,datePublished,tags" } }
}

Siehe auch