Indexera CSV-blobar och filer med avgränsattextparsningsläge
Gäller för: Blob Storage-indexerare, Filindexerare
I Azure AI Search stöder indexerare för Azure Blob Storage och Azure Files ett delimitedText
parsningsläge för CSV-filer som behandlar varje rad i CSV som ett separat sökdokument. Med tanke på följande kommaavgränsade text delimitedText
skulle till exempel parsningsläget resultera i två dokument i sökindexet:
id, datePublished, tags
1, 2016-01-12, "azure-search,azure,cloud"
2, 2016-07-07, "cloud,mobile"
Om ett fält i CSV-filen innehåller avgränsare bör det omslutas med citattecken. Om fältet innehåller ett citattecken måste det inte användas med dubbla citattecken (""
).
id, datePublished, tags
1, 2020-01-05, "tags,with,""quoted text"""
delimitedText
Utan parsningsläget skulle hela innehållet i CSV-filen behandlas som ett sökdokument.
När du skapar flera sökdokument från en enda blob bör du granska Indexeringsblobar för att skapa flera sökdokument för att förstå hur dokumentnyckeltilldelningar fungerar. Blobindexeraren kan hitta eller generera värden som unikt definierar varje nytt dokument. Mer specifikt kan den skapa en övergående AzureSearch_DocumentKey
när en blob parsas i mindre delar, där värdet sedan används som sökdokumentets nyckel i indexet.
Konfigurera CSV-indexering
Om du vill indexera CSV-blobar skapar eller uppdaterar du en indexerardefinition med delimitedText
parsningsläget på en Create Indexer-begäran .
Endast UTF-8-kodning stöds.
{
"name" : "my-csv-indexer",
... other indexer properties
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "firstLineContainsHeaders" : true } }
}
firstLineContainsHeaders
anger att den första raden (nonblank) för varje blob innehåller rubriker. Om blobbar inte innehåller en inledande rubrikrad bör rubrikerna anges i indexerarens konfiguration:
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextHeaders" : "id,datePublished,tags" } }
Du kan anpassa avgränsartecknet med hjälp av konfigurationsinställningen delimitedTextDelimiter
. Till exempel:
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextDelimiter" : "|" } }
Kommentar
I avgränsat textparsingläge förutsätter Azure AI Search att alla blobar är CSV. Om du har en blandning av CSV- och icke-CSV-blobar i samma datakälla kan du överväga att använda filnamnsfilter för att styra vilka filer som importeras på varje indexerare.
Exempel på begäran
Här är de kompletta nyttolastexemplen.
Datakälla:
POST https://[service name].search.windows.net/datasources?api-version=2024-07-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>" }
}
Indexerare:
POST https://[service name].search.windows.net/indexers?api-version=2024-07-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" } }
}