다음을 통해 공유


delimitedText 구문 분석 모드를 사용하여 CSV Blob 및 파일 인덱싱

적용 대상: Blob Storage 인덱서, 파일 인덱서

Azure AI 검색에서 Azure Blob Storage 및 Azure Files용 인덱서는 CSV의 각 줄을 별도의 검색 문서로 처리하는 CSV 파일에 대한 delimitedText 구문 분석 모드를 지원합니다. 예를 들어, 쉼표로 구분된 다음 텍스트가 주어지면 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 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" } }
}