使用 delimitedText 剖析模式編製 CSV Blob 和檔案的索引

適用於Blob 索引子檔案索引子

在 Azure AI 搜尋中,Azure Blob 儲存體 和 Azure 檔案儲存體 的索引器支援 delimitedText CSV 檔案剖析模式,以將 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 索引子能夠尋找或產生可唯一定義每個新文件的值。 具體來說,其可以建立暫時性 AzureSearch_DocumentKey,暫時性 AzureSearch_DocumentKey 是在 Blob 剖析成較小的部分時產生的,而接著會將該值當作索引中搜尋文件索引鍵使用。

設定 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=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>" }
}   

索引子:

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

另請參閱