Полнотекстовый поиск в REST API
Полнотекстовый поиск позволяет находить диалоги, в которых присутствует заданное слово или фраза. Запрос возвращает идентификаторы подходящих диалогов. Подробнее о том, как получить информацию о диалоге по его идентификатору, см. в инструкции.
Чтобы уточнить результаты поиска, вы можете использовать фильтрацию по параметрам вместе с полнотекстовым поиском. В таком случае в ответе вернутся только идентификаторы запросов, которые удовлетворяют и критериям полнотекстового поиска, и дополнительным фильтрам.
Перед началом работы
Чтобы искать данные через REST API Yandex Cloud:
-
В консоли управления создайте сервисный аккаунт.
- Добавьте сервисный аккаунт в пространство с ролью
Data viewer
. Это позволит сервисному аккаунту работать с данными в SpeechSense. -
Чтобы аутентифицироваться в API Yandex Cloud, создайте API-ключ или IAM-токен для сервисного аккаунта.
- Загрузите аудиозаписи или чаты в SpeechSense.
Полнотекстовый поиск
-
Создайте файл
search.json
, укажите в нем нужные идентификаторы и параметры для полнотекстового поиска:{ "organizationId": "<идентификатор_организации>", "spaceId": "<идентификатор_пространства>", "connectionId": "<идентификатор_подключения>", "projectId": "<идентификатор_проекта>", "query": { "text": "<поисковый_запрос>", "channelNumber": "<номер_канала>" }, "sort_data": { "fields": [{ "field": "<характеристика_диалога,_по_которой_производится_поиск>", "order": "<порядок_сортировки:_по_возрастанию_или_убыванию>", "position": "<приоритет_поля_сортировки>" }] }, "pageSize": "<количество_документов_на_странице>", "pageToken": "<токен_следующей_страницы_с_результатами_поиска>" }
Где:
organizationId
— идентификатор организации, в которой выполняется запрос. Чтобы получить идентификатор, перейдите в сервис Cloud Center и нажмите кнопку под названием организации, в разделе .spaceId
— идентификатор пространства, в котором выполняется запрос. Чтобы получить идентификатор, перейдите в сервис SpeechSense , откройте страницу нужного пространства и нажмите кнопку ID.connectionId
— идентификатор подключения, в котором выполняется запрос. Чтобы получить идентификатор, перейдите в сервис SpeechSense , откройте страницу нужного пространства, на вкладке Подключение откройте страницу нужного подключения и нажмите кнопку ID.projectId
— идентификатор проекта, в котором выполняется запрос. Чтобы получить идентификатор, перейдите в сервис SpeechSense , откройте страницу нужного пространства, на вкладке Проекты откройте страницу нужного проекта и нажмите кнопку ID.
-
query
— тело запроса полнотекстового поиска. Поддерживает следующие параметры:-
text
— текст поискового запроса. Вы можете задать слово или фразу. SpeechSense выполнит поиск заданной строки по текстовой расшифровке аудиозаписи или тексту чата. -
channelNumber
— номер канала. Если параметр указан, поиск производится только по текстовой расшифровке аудиозаписи или тексту чата для указанного канала.Нумерация каналов в подключениях для чатов:
0
— канал оператора;1
— канал клиента;2
— канал бота.
Нумерация каналов для аудио предустанавливается на уровне подключения и отличается от нумерации каналов для чатов.
-
-
sort_data
— параметры сортировки данных в ответе на запрос.fields
— список характеристик диалога, по которым производится сортировка. Поддерживает следующие параметры:field
— характеристика диалога, по которой производится сортировка.order
— порядок сортировки: по возрастанию или убыванию.position
— приоритет поля сортировки (при сортировке по нескольким характеристикам диалога одновременно).
-
pageSize
— количество документов на странице. -
pageToken
— токен следующей страницы с результатами поискового запроса.
Если результаты запроса разделены на несколько страниц, каждая страница имеет свой токен. В ответе на каждый поисковый запрос содержится токен следующей страницыnext_page_token
(если она существует). Вставьте его в параметрpageToken
поискового запроса, чтобы получить следующую страницу с результатами поиска.
Подробнее о параметрах search-запроса см. в справочнике API.
-
Задайте API-ключ сервисного аккаунта:
export API_KEY=<API-ключ_сервисного_аккаунта>
Если вы используете IAM-токен, передайте его вместо API-ключа:
export IAM_TOKEN=<IAM-токен_сервисного_аккаунта>
-
Отправьте search-запрос к API SpeechSense при помощи cURL:
curl -X POST https://rest-api.speechsense.yandexcloud.net/speechsense/v1/talks/search \ -H "Content-Type: application/json" \ -H "authorization: Api-Key ${API_KEY}" \ -d @search.json
Где
Api-Key
— API-ключ для аутентификации. Если вы используете IAM-токен, укажитеBearer ${IAM_TOKEN}
вместоApi-Key ${API_KEY}
.Идентификаторы диалогов, которые удовлетворяют условиям поиска, будут выведены в терминал в JSON-формате.
Примеры запросов
Пример тела запроса для полнотекстового поиска
Например, нужно найти все диалоги с техподдержкой провайдера, в которых оператор предлагал оформить заявку на выезд мастера. JSON-файл с параметрами запроса будет выглядеть так:
{
"organizationId": "yc.organization****************",
"spaceId": "f3fuclf1kufs********",
"connectionId": "eag0u346n4hn********",
"projectId": "eag9t3rm3o43********",
"query": {
"text": "выезд мастера",
"channel_number": "0"
},
}
Результат выполнения запроса:
{
"talk_ids": [
"aud95sn63lra********"
],
"talks_count":" 1",
"next_page_token": ""
}
Где:
talk_ids
— идентификаторы диалогов, которые удовлетворяют условиям поиска.talks_count
— количество диалогов, которые удовлетворяют условиям поиска.next_page_token
— токен следующей страницы с результатами поиска. Если результаты поиска разделены на несколько страниц, этот токен используется в следующем запросе, чтобы запросить следующую страницу. Если это поле вернулось пустым, результаты поиска заканчиваются на текущей странице.
Пример тела запроса для полнотекстового поиска с фильтрацией по параметрам
Например, нужно найти все диалоги с техподдержкой провайдера в промежуток между 11:00 и 12:00 24 сентября 2024 года, в которых оператор предлагал оформить заявку на выезд мастера. JSON-файл с параметрами запроса будет выглядеть так:
{
"organizationId": "yc.organization****************",
"spaceId": "f3fuclf1kufs********",
"connectionId": "eag0u346n4hn********",
"projectId": "eag9t3rm3o43********",
"query": {
"text": "выезд мастера",
"channel_number": "0"
},
"filters": [
{
"key": "userMeta.date",
"date_range": {
"from_value": "2024-09-24T11:00:00Z",
"to_value": "2024-09-24T12:00:00Z"
}
}
],
}
Результат выполнения запроса:
{
"talk_ids": [
"aud95sn63lra********"
],
"talks_count":" 1",
"next_page_token": ""
}
Где:
talk_ids
— идентификаторы диалогов, которые удовлетворяют условиям поиска.talks_count
— количество диалогов, которые удовлетворяют условиям поиска.next_page_token
— токен следующей страницы с результатами поиска. Если результаты поиска разделены на несколько страниц, этот токен используется в следующем запросе, чтобы запросить следующую страницу. Если это поле вернулось пустым, результаты поиска заканчиваются на текущей странице.