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

Операции, которые требуется выполнить над массивом ключевых фраз:

  • MERGE_DUPLICATES — склейка дублей;
  • ELIMINATE_OVERLAPPING — кросс-минусовка.

Если параметр не задан, будут выполнены обе операции.

Нет

Структура 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

Ошибки, возникшие при обработке ключевой фразы.

Пример

Запрос

    {
      "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 ]
    }
  }
}
```