Поделиться через


Индексирование BLOB-объектов и файлов с помощью режима синтаксического анализа с разделителями

Область применения: индексаторы хранилища BLOB-объектов, индексаторы файлов

В поиске ИИ Azure индексаторы для Хранилище BLOB-объектов Azure и Файлы 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-файла будет рассматриваться как один документ поиска.

При создании нескольких документов поиска из одного большого двоичного объекта обязательно просмотрите индексирование больших двоичных объектов, чтобы создать несколько документов поиска, чтобы понять, как работают назначения ключей документов. Индексатор больших двоичных объектов может находить или создавать значения, однозначно определяющие каждый новый документ. В частности, он может создать транзитивную теорию AzureSearch_DocumentKey , когда большой двоичный объект анализируется в небольших частях, где значение затем используется в качестве ключа документа поиска в индексе.

Настройка индексирования CSV

Чтобы индексировать BLOB-объекты CSV, создайте или обновите определение индексатора с delimitedText помощью режима синтаксического анализа в запросе create Indexer .

Поддерживается только кодировка UTF-8.

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

firstLineContainsHeaders указывает, что первая (небланк) строка каждого большого двоичного объекта содержит заголовки. Если большие двоичные объекты не содержат строку заголовка, заголовки следует указать в конфигурации индексатора.

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

Можно настроить символ разделителя с помощью параметра конфигурации delimitedTextDelimiter. Рассмотрим пример.

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

Примечание.

В режиме синтаксического анализа текста служба "Поиск ИИ Azure" предполагает, что все большие двоичные объекты являются CSV-файлами. Если у вас есть сочетание BLOB-объектов CSV и не CSV в одном источнике данных, рассмотрите возможность использования фильтров расширений файлов для управления импортом файлов при каждом запуске индексатора.

Примеры запросов

Сложив все вместе, ниже приведены полные примеры полезных данных.

Источник данных:

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