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

Aplica-se a: Indexadores de blobs, Indexares de arquivos

Na Pesquisa de IA do Azure, os indexadores do Armazenamento de Blobs do Azure e dos Arquivos do Azure suportam um modo de análise delimitedText para arquivos CSV que trata cada linha do CSV como um documento de pesquisa separado. Por exemplo, considerando o seguinte texto delimitado por vírgula, o modo de análise delimitedText 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 no arquivo CSV contiver o delimitador, ele deverá ser encapsulado entre aspas. Se o campo contiver uma aspa, ele deverá ser escapado usando aspas duplas ("").

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

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

Sempre que você estiver criando vários documentos de pesquisa de um blob, certifique-se de examinar Como indexar blobs para produzir vários documentos de pesquisa para entender como funcionam as atribuições de chave de documento. O indexador de blob é capaz de localizar ou gerar valores que definem exclusivamente cada novo documento. Especificamente, ele pode criar um AzureSearch_DocumentKey transitório que é gerado quando um blob é analisado em partes menores, no qual o valor é usado como a chave do documento de pesquisa no índice.

Configurando a indexação de CSV

Para indexar os blobs CSV, criar ou atualizar uma definição de indexador com o modo de análise delimitedText em uma solicitação Criar Indexador:

Somente a codificação UTF-8 tem suporte.

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

firstLineContainsHeaders indica que a primeira linha (não vazia) de cada blob contém cabeçalhos. Se os blobs não contêm uma linha de cabeçalho inicial, os cabeçalhos devem ser especificados na configuração do indexador:

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

É possível personalizar o caractere delimitador usando a configuração delimitedTextDelimiter. Por exemplo:

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

Observação

No modo de análise de texto delimitado, a Pesquisa de IA do Azure pressupõe que todos os blobs sejam CSV. Se você tiver uma combinação de blobs CSV e não CSV na mesma fonte de dados, considere usar os filtros de extensão de arquivo para controlar quais arquivos são importados em cada execução do indexador.

Exemplos de solicitação

Reunindo tudo isso, estes são os exemplos de carga completa.

Fonte de dados:

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

Indexador:

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

Confira também