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) |
|||
|
array of DeduplicateRequestItem |
Ключевые фразы, которые требуется предварительно обработать. Не более 400 000 элементов в массиве. |
Да |
|
array of DeduplicateOperationEnum |
Операции, которые требуется выполнить над массивом ключевых фраз:
Если параметр не задан, будут выполнены обе операции. |
Нет |
Структура DeduplicateRequestItem |
|||
|
long |
Идентификатор ключевой фразы в Директе или внешней базе данных. |
Нет |
|
string |
Ключевая фраза. Может содержать минус-слова и операторы. Длина ключевой фразы — не более 4096 символов. Оператор “!” перед минус-словом не учитывается в длине фразы (последовательность “-!” считается как один символ). Не более 7 слов в ключевой фразе, без учета стоп-слов и минус-слов. Каждое слово — не более 35 символов, без учета минуса перед минус-словом. |
Да |
|
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) |
||
|
array of DeduplicateResponseAddItem |
Ключевые фразы, которые можно подать на вход метода Keywords.add. |
|
array of DeduplicateResponseUpdateItem |
Ключевые фразы, которые можно подать на вход метода Keywords.update. |
|
IdsCriteria |
Ключевые фразы, которые можно подать на вход метода Keywords.delete. |
|
array of DeduplicateErrorItem |
Ключевые фразы, при обработке которых произошла ошибка. |
Структура DeduplicateResponseAddItem |
||
|
string |
Ключевая фраза, которую требуется добавить. |
Структура DeduplicateResponseUpdateItem |
||
|
long |
Идентификатор ключевой фразы из запроса. |
|
string |
Измененная ключевая фраза. |
Структура IdsCriteria |
||
|
array of long |
Идентификаторы ключевых фраз, которые требуется удалить. |
Структура DeduplicateErrorItem |
||
|
long |
Порядковый номер ключевой фразы во входном массиве (начиная с 1). |
|
array of ExceptionNotification |
Предупреждения, возникшие при обработке ключевой фразы. |
|
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`.
```javascript translate=no
{
"result": {
"Add": [{
"Keyword": "E F"
}],
"Update": [{
"Id": 1000,
"Keyword": "A B -C -D"
}],
"Delete": {
"Ids": [ 1001 ]
}
}
}
```