Indeksowanie obiektów blob CSV i plików przy użyciu trybu analizowania tekstu rozdzielanego

Dotyczy: indeksatory obiektów blob, indeksatory plików

W usłudze Azure AI Search indeksatory usługi Azure Blob Storage i Azure Files obsługują delimitedText tryb analizowania plików CSV, który traktuje każdy wiersz w pliku CSV jako oddzielny dokument wyszukiwania. Na przykład, biorąc pod uwagę następujący tekst rozdzielany przecinkami, delimitedText tryb analizowania spowoduje wyświetlenie dwóch dokumentów w indeksie wyszukiwania:

id, datePublished, tags
1, 2016-01-12, "azure-search,azure,cloud"
2, 2016-07-07, "cloud,mobile"

Jeśli pole wewnątrz pliku CSV zawiera ogranicznik, należy go opakować w cudzysłowy. Jeśli pole zawiera cudzysłów, musi zostać uniknięta przy użyciu cudzysłowów ("").

id, datePublished, tags
1, 2020-01-05, "tags,with,""quoted text"""

delimitedText Bez trybu analizowania cała zawartość pliku CSV będzie traktowana jako jeden dokument wyszukiwania.

Za każdym razem, gdy tworzysz wiele dokumentów wyszukiwania z jednego obiektu blob, zapoznaj się z artykułem Indeksowanie obiektów blob w celu utworzenia wielu dokumentów wyszukiwania, aby zrozumieć, jak działają przypisania kluczy dokumentów. Indeksator obiektów blob może znajdować lub generować wartości, które jednoznacznie definiują każdy nowy dokument. W szczególności może utworzyć przechodnie AzureSearch_DocumentKey wygenerowane podczas analizowania obiektu blob w mniejszych częściach, gdzie wartość jest następnie używana jako klucz dokumentu wyszukiwania w indeksie.

Konfigurowanie indeksowania CSV

Aby indeksować obiekty blob CSV, utwórz lub zaktualizuj definicję indeksatora za pomocą delimitedText trybu analizowania w żądaniu create indexer .

Obsługiwane jest tylko kodowanie UTF-8.

{
  "name" : "my-csv-indexer",
  ... other indexer properties
  "parameters" : { "configuration" : { "parsingMode" : "delimitedText", "firstLineContainsHeaders" : true } }
}

firstLineContainsHeaders wskazuje, że pierwszy (nieblokujący) wiersz każdego obiektu blob zawiera nagłówki. Jeśli obiekty blob nie zawierają początkowego wiersza nagłówka, nagłówki powinny być określone w konfiguracji indeksatora:

"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextHeaders" : "id,datePublished,tags" } } 

Znak ogranicznika można dostosować przy użyciu delimitedTextDelimiter ustawienia konfiguracji. Na przykład:

"parameters" : { "configuration" : { "parsingMode" : "delimitedText", "delimitedTextDelimiter" : "|" } }

Uwaga

W trybie analizowania tekstu rozdzielanego usługa Azure AI Search zakłada, że wszystkie obiekty blob są woluminami CSV. Jeśli masz kombinację obiektów blob CSV i innych niż CSV w tym samym źródle danych, rozważ użycie filtrów rozszerzeń plików w celu kontrolowania, które pliki są importowane na każdym uruchomieniu indeksatora.

Przykłady żądań

Oto kompletne przykłady ładunków.

Datasource:

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

Indeksatora:

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

Zobacz też