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

Si applica a: Indicizzatori BLOB, Indicizzatori file

In Ricerca di intelligenza artificiale di Azure gli indicizzatori per Archiviazione BLOB di Azure e File di Azure supportano una delimitedText modalità di analisi per i file CSV che considerano ogni riga nel file CSV come documento di ricerca separato. Ad esempio, dato il testo delimitato da virgole seguente, la delimitedText modalità di analisi 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 delimeter, 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 delimitedText modalità di analisi, 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 Indicizzazione di 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 transito AzureSearch_DocumentKey che viene generato quando un BLOB viene analizzato in parti più piccole, in cui il valore viene quindi usato come chiave del documento di ricerca nell'indice.

Configurazione dell'indicizzazione di CSV

Per indicizzare i BLOB CSV, creare o aggiornare una definizione dell'indicizzatore con la delimitedText modalità di analisi in una richiesta Crea 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 (nonblank) di ogni BLOB contiene intestazioni. 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, Ricerca di intelligenza artificiale di Azure presuppone che tutti i BLOB siano CSV. Se si dispone di 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

Mettendo tutto insieme, ecco gli esempi di payload completi.

Origine dati:

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

Indicizzatore:

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

Vedi anche