Delen via


CSV-blobs en bestanden indexeren met behulp van de parseringsmodus vanlimitedText

Van toepassing op: Blob-indexeerfuncties, bestandsindexeerfuncties

In Azure AI Search ondersteunen indexeerfuncties voor Azure Blob Storage en Azure Files een delimitedText parseermodus voor CSV-bestanden die elke regel in het CSV behandelen als een afzonderlijk zoekdocument. Op basis van de volgende door komma's gescheiden tekst zou de delimitedText parseringsmodus bijvoorbeeld resulteren in twee documenten in de zoekindex:

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

Als een veld in het CSV-bestand delimeter bevat, moet het tussen aanhalingstekens worden verpakt. Als het veld een aanhalingsteken bevat, moet deze worden ontsnapt met dubbele aanhalingstekens ("").

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

Zonder de delimitedText parseermodus wordt de volledige inhoud van het CSV-bestand behandeld als één zoekdocument.

Wanneer u meerdere zoekdocumenten maakt vanuit één blob, moet u indexeringsblobs controleren om meerdere zoekdocumenten te produceren om te begrijpen hoe documentsleuteltoewijzingen werken. De blob-indexeerfunctie kan waarden vinden of genereren die elk nieuw document uniek definiëren. Het kan met name een transitief AzureSearch_DocumentKey maken dat wordt gegenereerd wanneer een blob in kleinere delen wordt geparseerd, waarbij de waarde vervolgens wordt gebruikt als de sleutel van het zoekdocument in de index.

CSV-indexering instellen

Als u CSV-blobs wilt indexeren, moet u een indexeerfunctiedefinitie maken of bijwerken met de delimitedText parseringsmodus in een aanvraag voor indexeerfunctie maken.

Alleen UTF-8-codering wordt ondersteund.

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

firstLineContainsHeaders geeft aan dat de eerste regel (niet-lege) van elke blob headers bevat. Als blobs geen initiële headerregel bevatten, moeten de headers worden opgegeven in de configuratie van de indexeerfunctie:

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

U kunt het scheidingsteken aanpassen met behulp van de delimitedTextDelimiter configuratie-instelling. Bijvoorbeeld:

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

Notitie

In de geparseerde tekstmodus gaat Azure AI Search ervan uit dat alle blobs CSV zijn. Als u een combinatie van CSV- en niet-CSV-blobs in dezelfde gegevensbron hebt, kunt u overwegen om filters voor bestandsextensies te gebruiken om te bepalen welke bestanden worden geïmporteerd op elke indexeerfunctie.

Voorbeelden van aanvragen

Hier vindt u de volledige voorbeelden van nettoladingen.

Datasource:

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

Indexer:

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

Zie ook