Indicizzare BLOB e file CSV usando la modalità di analisi delimitedText

Si applica a: indicizzatori di archiviazione BLOB, indicizzatori di file

In Azure AI Search, gli indicizzatori per Archiviazione BLOB di Azure e File di Azure supportano una modalità di analisi delimitedText per i file CSV che considera ogni riga nel file CSV come documento di ricerca separato. Ad esempio, dato il seguente testo delimitato da virgole, la modalità di analisi delimitedText genera due documenti nell'indice di ricerca:

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

Se un campo all'interno del file CSV contiene il delimitatore, deve essere racchiuso tra virgolette. Se il campo contiene una virgoletta, deve essere preceduto da virgolette doppie ("").

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

Senza la modalità di analisi delimitedText, l'intero contenuto del file CSV verrà considerato come un documento di ricerca.

Ogni volta che si creano più documenti di ricerca da un singolo BLOB, assicurarsi di esaminare l'indicizzazione dei BLOB per produrre più documenti di ricerca per comprendere il funzionamento delle assegnazioni di chiavi del documento. L'indicizzatore BLOB è in grado di trovare o generare valori che definiscono in modo univoco ogni nuovo documento. In particolare, può creare un blob transitorio AzureSearch_DocumentKey quando un BLOB viene analizzato in parti più piccole, in cui il valore viene quindi usato come chiave del documento di ricerca nell'indice.

Configurare l'indicizzazione CSV

Per indicizzare i BLOB CSV, creare o aggiornare una definizione dell'indicizzatore con la modalità di analisi delimitedText in una richiesta di creazione dell'indicizzatore.

È supportata solo la codifica UTF-8.

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

firstLineContainsHeaders indica che la prima riga (non vuota) di ogni BLOB contiene un'intestazione. Se i BLOB non contengono una riga di intestazione iniziale, è necessario specificare le intestazioni nella configurazione dell'indicizzatore:

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

È possibile personalizzare il carattere di delimitazione usando l'impostazione di configurazione delimitedTextDelimiter. Ad esempio:

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

Nota

In modalità di analisi del testo delimitato, Azure AI Search presuppone che tutti i BLOB siano CSV. Se si ha una combinazione di BLOB CSV e non CSV nella stessa origine dati, è consigliabile usare filtri di estensione di file per controllare quali file vengono importati in ogni esecuzione dell'indicizzatore.

Esempi di richiesta

Per concludere, ecco gli esempi completi del payload.

Origine dati:

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

Indicizzatore:

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