deduplicate
Метод выполняет следующие операции с ключевыми фразами:
- Склейка дублей
-
Объединение нескольких фраз, отличающихся только минус-словами, формой слов, наличием стоп-слов. Объединенная фраза будет содержать минус-слова всех фраз. Например, фразы заказ окон -жалюзи и окна на заказ -дешево будут заменены фразой окна на заказ -дешево -жалюзи. В частности, при склейке удаляются дубликаты фраз.
- Кросс-минусовка
-
Добавление минус-слова в случае, когда фраза содержится в другой фразе, отличающейся на одно слово. Например, в паре фраз шуба и шуба норковая к первой фразе будет добавлено минус-слово и получится фраза шуба -норковая. В результате поисковому запросу норковая шуба будет соответствовать только одна из фраз, а не обе.
Метод принимает на вход массив, который может содержать:
- новые ключевые фразы без идентификатора;
- существующие ключевые фразы, имеющие идентификатор в Директе или внешней базе данных.
В результате склейки дублей и кросс-минусовки метод возвращает инструкции, какие фразы нужно добавить, изменить или удалить. Формат ответа максимально приближен к формату запроса для методов add, update и delete сервиса Keywords.
Запрос
Структура запроса в формате JSON:
{
"method": "deduplicate",
"params": { /* params */
"Keywords": [ { /* DeduplicateRequestItem */
"Id": (long),
"Keyword": (string), /* required */
"Weight": (long)
}, ... ], /* required */
"Operation": [( MERGE_DUPLICATES | ELIMINATE_OVERLAPPING ), ... ]
}
}
Ниже приведено описание параметров.
Параметр | Тип | Описание | Обяза-тельный |
Структура params (для JSON) / DeduplicateRequest (для SOAP) | |||
---|---|---|---|
Keywords | array of DeduplicateRequestItem | Ключевые фразы, которые требуется предварительно обработать. Не более 400 000 элементов в массиве. | Да |
Operation | array of DeduplicateOperationEnum | Операции, которые требуется выполнить над массивом ключевых фраз:
Если параметр не задан, будут выполнены обе операции. | Нет |
Структура DeduplicateRequestItem | |||
Id | long | Идентификатор ключевой фразы в Директе или внешней базе данных. | Нет |
Keyword | string | Ключевая фраза. Может содержать минус-слова и операторы. Длина ключевой фразы — не более 4096 символов. Оператор «!» перед минус-словом не учитывается в длине фразы (последовательность «-!» считается как один символ). Не более 7 слов в ключевой фразе, без учета стоп-слов и минус-слов. Каждое слово — не более 35 символов, без учета минуса перед минус-словом. | Да |
Weight | long | Вес ключевой фразы. Положительное число. В случае склейки нескольких фраз будет оставлена или изменена фраза с наибольшим весом, остальные будут удалены. | Нет |
Параметр | Тип | Описание | Обяза-тельный |
Структура params (для JSON) / DeduplicateRequest (для SOAP) | |||
---|---|---|---|
Keywords | array of DeduplicateRequestItem | Ключевые фразы, которые требуется предварительно обработать. Не более 400 000 элементов в массиве. | Да |
Operation | array of DeduplicateOperationEnum | Операции, которые требуется выполнить над массивом ключевых фраз:
Если параметр не задан, будут выполнены обе операции. | Нет |
Структура DeduplicateRequestItem | |||
Id | long | Идентификатор ключевой фразы в Директе или внешней базе данных. | Нет |
Keyword | string | Ключевая фраза. Может содержать минус-слова и операторы. Длина ключевой фразы — не более 4096 символов. Оператор «!» перед минус-словом не учитывается в длине фразы (последовательность «-!» считается как один символ). Не более 7 слов в ключевой фразе, без учета стоп-слов и минус-слов. Каждое слово — не более 35 символов, без учета минуса перед минус-словом. | Да |
Weight | long | Вес ключевой фразы. Положительное число. В случае склейки нескольких фраз будет оставлена или изменена фраза с наибольшим весом, остальные будут удалены. | Нет |
Ответ
Структура ответа в формате JSON:
{
"result": { /* result */
"Add": [{ /* DeduplicateResponseAddItem */
"Keyword": (string) /* required */
}, ... ],
"Update": [{ /* DeduplicateResponseUpdateItem */
"Id": (long), /* required */
"Keyword": (string) /* required */
}, ... ],
"Delete": { /* IdsCriteria */
"Ids": [(long), ... ] /* required */
},
"Failure": [{ /* DeduplicateErrorItem */
"Position": (long), /* required */
"Warnings": [{ /* ExceptionNotification */
"Code": (int), /* required */
"Message": (string), /* required */
"Details": (string)
}, ... ],
"Errors": [{ /* ExceptionNotification */
"Code": (int), /* required */
"Message": (string), /* required */
"Details": (string)
}, ... ]
}, ... ]
}
}
Ниже приведено описание параметров.
Параметр | Тип | Описание |
Структура result (для JSON) / DeduplicateResponse (для SOAP) | ||
---|---|---|
Add | array of DeduplicateResponseAddItem | Ключевые фразы, которые можно подать на вход метода Keywords.add. |
Update | array of DeduplicateResponseUpdateItem | Ключевые фразы, которые можно подать на вход метода Keywords.update. |
Delete | IdsCriteria | Ключевые фразы, которые можно подать на вход метода Keywords.delete. |
Failure | array of DeduplicateErrorItem | Ключевые фразы, при обработке которых произошла ошибка. |
Структура DeduplicateResponseAddItem | ||
Keyword | string | Ключевая фраза, которую требуется добавить. |
Структура DeduplicateResponseUpdateItem | ||
Id | long | Идентификатор ключевой фразы из запроса. |
Keyword | string | Измененная ключевая фраза. |
Структура IdsCriteria | ||
Ids | array of long | Идентификаторы ключевых фраз, которые требуется удалить. |
Структура DeduplicateErrorItem | ||
Position | long | Порядковый номер ключевой фразы во входном массиве (начиная с 1). |
Warnings | array of ExceptionNotification | Предупреждения, возникшие при обработке ключевой фразы. |
Errors | array of ExceptionNotification | Ошибки, возникшие при обработке ключевой фразы. |
Параметр | Тип | Описание |
Структура result (для JSON) / DeduplicateResponse (для SOAP) | ||
---|---|---|
Add | array of DeduplicateResponseAddItem | Ключевые фразы, которые можно подать на вход метода Keywords.add. |
Update | array of DeduplicateResponseUpdateItem | Ключевые фразы, которые можно подать на вход метода Keywords.update. |
Delete | IdsCriteria | Ключевые фразы, которые можно подать на вход метода Keywords.delete. |
Failure | array of DeduplicateErrorItem | Ключевые фразы, при обработке которых произошла ошибка. |
Структура DeduplicateResponseAddItem | ||
Keyword | string | Ключевая фраза, которую требуется добавить. |
Структура DeduplicateResponseUpdateItem | ||
Id | long | Идентификатор ключевой фразы из запроса. |
Keyword | string | Измененная ключевая фраза. |
Структура IdsCriteria | ||
Ids | array of long | Идентификаторы ключевых фраз, которые требуется удалить. |
Структура DeduplicateErrorItem | ||
Position | long | Порядковый номер ключевой фразы во входном массиве (начиная с 1). |
Warnings | array of ExceptionNotification | Предупреждения, возникшие при обработке ключевой фразы. |
Errors | array of ExceptionNotification | Ошибки, возникшие при обработке ключевой фразы. |
Пример
- Запрос
-
{ "method": "deduplicate", "params": { "Keywords": [{ "Keyword": "A B -C" }, { "Id": 1000, "Keyword": "A B -D" }, { "Id": 1001, "Keyword": "A B" }, { "Keyword": "E F" }] } }
- Ответ
-
Фразы A B -C, A B -D и A B склеиваются в объединенную фразу A B -C -D:
- Фраза A B -C новая. Ее не требуется добавлять, поскольку ее аналог уже есть в базе данных. В ответе она пропущена.
- Фраза A B -D есть в базе данных, ее нужно изменить на объединенную фразу. Идентификатор фразы и новое значение возвращены в структуре Update.
- Фраза A B есть в базе данных, ее нужно удалить. Идентификатор фразы возвращен в структуре Delete.
Фраза E F новая, ее нужно добавить. Она возвращена в структуре Add.
{ "result": { "Add": [{ "Keyword": "E F" }], "Update": [{ "Id": 1000, "Keyword": "A B -C -D" }], "Delete": { "Ids": [ 1001 ] } } }