Indeksowanie obiektów blob CSV i plików przy użyciu trybu analizowania tekstu rozdzielanego
Dotyczy: indeksatory usługi Blob Storage, 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, powinien zostać opakowany 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 dokumentu. 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
, gdy obiekt blob jest analizowany 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.
Źródło danych:
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>" }
}
Indeksator:
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" } }
}