使用 delimitedText 分析模式为 CSV blob 和文件编制索引
在 Azure AI 搜索中,Azure Blob 存储和 Azure 文件存储的索引器支持 CSV 文件的 delimitedText
分析模式,该模式将 CSV 中的每一行视为单独的搜索文档。 例如,如果给定以下以逗号分隔的文本,delimitedText
分析模式就会在搜索索引中产生两个文档:
id, datePublished, tags
1, 2016-01-12, "azure-search,azure,cloud"
2, 2016-07-07, "cloud,mobile"
如果 CSV 文件内的字段包含分隔符,应将其用引号引起来。 如果字段包含引号,必须双引号 (""
) 对其进行转义。
id, datePublished, tags
1, 2020-01-05, "tags,with,""quoted text"""
如果不使用 delimitedText
分析模式,CSV 文件的全部内容都会被视为一个搜索文档。
每次从一个 Blob 创建多个搜索文档时,请务必查看为 Blob 编制索引以生成多个搜索文档,以了解文档键分配的工作方式。 Blob 索引器能够查找或生成独一无二地定义每个新文档的值。 具体而言,它可以创建一个在 Blob 解析为较小部分时生成的暂时性 AzureSearch_DocumentKey
,其中的值随后会在索引中用作搜索文档的键。
设置 CSV 索引
若要对 CSV blob 编制索引,请使用 delimitedText
分析模式根据创建索引器请求创建或更新索引器定义。
仅支持 UTF-8 编码。
{
"name" : "my-csv-indexer",
... other indexer properties
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "firstLineContainsHeaders" : true } }
}
firstLineContainsHeaders
指示每个 blob 的第一行(非空)包含标头。
如果 blob 未包含初始标头行,则应在索引器配置中指定标头:
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextHeaders" : "id,datePublished,tags" } }
可以使用 delimitedTextDelimiter
配置设置来自定义分隔符字符。 例如:
"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextDelimiter" : "|" } }
注意
在带分隔符的文本分析模式下,Azure AI 搜索假定所有 blob 都是 CSV。 如果同一数据源中混合有 CSV 和非 CSV blob,请考虑使用文件扩展名筛选器来控制每个索引器运行时导入的文件。
请求示例
将其放在一起,以下是完整的有效负载示例。
数据源:
POST https://[service name].search.azure.cn/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>" }
}
索引器:
POST https://[service name].search.azure.cn/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" } }
}