区切りテキスト解析モードを使用して CSV BLOB およびファイルにインデックスを作成する

適用対象: Blob Storage インデクサーFiles インデクサー

Azure AI Search で、Azure Blob Storage と Azure Files のインデクサーには、CSV の各行を個別の検索ドキュメントとして扱う CSV ファイルの delimitedText 解析モードが用意されています。 たとえば、次のコンマ区切りのテキストを指定すると、delimitedText 解析モードの結果、検索インデックスに 2 つのドキュメントが生成されます。

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 ファイルの内容全体が 1 つの検索ドキュメントとして扱われます。

1 つの 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" : "|" } }

Note

区切りテキスト解析モードのとき、Azure AI Search では、すべての 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" } }
}