Indexar blobs CSV e arquivos usando o modo de análise delimitedText

Aplica-se a: indexadores de armazenamento de Blob, indexadores de arquivos

No Azure AI Search, os indexadores do Armazenamento de Blobs do Azure e dos Arquivos do Azure dão suporte a um delimitedText modo de análise para arquivos CSV que trata cada linha no CSV como um documento de pesquisa separado. Por exemplo, dado o seguinte texto delimitado por vírgula, o delimitedText modo de análise resultaria em dois documentos no índice de pesquisa:

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

Se um campo dentro do arquivo CSV contiver o delimitador, ele deve ser colocado entre aspas. Se o campo contiver uma citação, ele deve ser escapado usando aspas duplas ("").

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

Sem o delimitedText modo de análise, todo o conteúdo do arquivo CSV seria tratado como um documento de pesquisa.

Sempre que você criar vários documentos de pesquisa a partir de um único blob, certifique-se de revisar os blobs de indexação para produzir vários documentos de pesquisa para entender como as atribuições de chave de documento funcionam. O indexador de blob é capaz de encontrar ou gerar valores que definem exclusivamente cada novo documento. Especificamente, ele pode criar um transitório AzureSearch_DocumentKey quando um blob é analisado em partes menores, onde o valor é usado como a chave do documento de pesquisa no índice.

Configurar a indexação CSV

Para indexar blobs CSV, crie ou atualize uma definição de indexador com o delimitedText modo de análise em uma solicitação Criar indexador .

Apenas a codificação UTF-8 é suportada.

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

firstLineContainsHeaders Indica que a primeira linha (não em branco) de cada blob contém cabeçalhos. Se os blobs não contiverem uma linha de cabeçalho inicial, os cabeçalhos deverão ser especificados na configuração do indexador:

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

Você pode personalizar o caractere delimitador usando a definição de delimitedTextDelimiter configuração. Por exemplo:

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

Nota

No modo de análise de texto delimitado, o Azure AI Search assume que todos os blobs são CSV. Se você tiver uma combinação de blobs CSV e não CSV na mesma fonte de dados, considere o uso de filtros de extensão de arquivo para controlar quais arquivos são importados em cada execução de indexador.

Exemplos de pedidos

Juntando tudo, aqui estão os exemplos completos de carga útil.

Fonte de dados:

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

Indexador:

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