使用 delimitedText 剖析模式編製 CSV Blob 和檔案的索引
適用於: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.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>" }
}
索引:
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" } }
}