Partager via


Indexer des blobs et des fichiers CSV en utilisant le mode d’analyse delimitedText

S’applique à : Indexeurs de stockage de blobs, Indexeurs de fichiers

Dans la Recherche Azure AI, les indexeurs du Stockage Blob Azure et d’Azure Files prennent en charge un mode d’analyse delimitedText pour les fichiers CSV qui traite chaque ligne du fichier CSV comme un document de recherche séparé. Par exemple, dans le cas du texte délimité par des virgules suivant, le mode d’analyse delimitedText produirait deux documents dans l’index de recherche :

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

Si un champ du fichier CSV contient le délimiteur, il doit être placé entre guillemets. Si le champ contient un guillemet, il doit être échappé avec des guillemets doubles ("").

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

Sans le mode d’analyse delimitedText, le contenu entier du fichier CSV serait traité comme un seul document de recherche.

Quand vous créez plusieurs documents de recherche à partir d’un seul blob, veillez à consulter Indexation de blobs pour produire plusieurs documents de recherche afin de bien comprendre le fonctionnement des affectations de clés de document. L’indexeur d’objets blob est capable de rechercher ou de générer des valeurs qui définissent de façon unique chaque nouveau document. Plus précisément, elle peut créer un AzureSearch_DocumentKey transitoire quand un blob est décomposé en parties plus petites, où la valeur est ensuite utilisée comme clé du document de recherche dans l’index.

Configuration de l’indexation de CSV

Pour indexer des blobs CSV, créez ou mettez à jour une définition d’indexeur avec le mode d’analyse delimitedText sur une demande Créer un indexeur.

Seul le format d’encodage UTF-8 est pris en charge.

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

firstLineContainsHeaders indique que la première ligne (non vide) de chaque blob contient des en-têtes. Si les objets blob ne contiennent pas de ligne d’en-tête initiale, les en-têtes doivent être spécifiés dans la configuration de l’indexeur :

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

Vous pouvez personnaliser le caractère délimiteur à l’aide du paramètre de configuration delimitedTextDelimiter. Par exemple :

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

Remarque

Dans le mode d’analyse de texte délimité, la Recherche Azure AI part du principe que tous les blobs sont au format CSV. Si vous avez un mélange de blobs CSV et non-CSV dans la même source de données, envisagez d’utiliser des filtres d’extension de fichier pour contrôler quels fichiers sont importés sur chaque exécution de l’indexeur.

Exemples de requête

En résumé, voici des exemples complets de charges utiles.

Source de données :

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

Indexeur :

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