Indexera CSV-blobar och filer med avgränsattextparsningsläge

Gäller för: Blob-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 delimetern ska 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 som genereras 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.

Datasource:

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>" }
}   

Indexerare:

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" } }
}

Se även