deduplicate

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

  1. Запрос
  2. Ответ
  3. Пример

Метод выполняет следующие операции с ключевыми фразами:

Склейка дублей

Объединение нескольких фраз, отличающихся только минус-словами, формой слов, наличием стоп-слов. Объединенная фраза будет содержать минус-слова всех фраз. Например, фразы заказ окон -жалюзи и окна на заказ -дешево будут заменены фразой окна на заказ -дешево -жалюзи. В частности, при склейке удаляются дубликаты фраз.

Кросс-минусовка

Добавление минус-слова в случае, когда фраза содержится в другой фразе, отличающейся на одно слово. Например, в паре фраз шуба и шуба норковая к первой фразе будет добавлено минус-слово и получится фраза шуба -норковая. В результате поисковому запросу норковая шуба будет соответствовать только одна из фраз, а не обе.

Метод принимает на вход массив, который может содержать:

  • новые ключевые фразы без идентификатора;
  • существующие ключевые фразы, имеющие идентификатор в Директе или внешней базе данных.

В результате склейки дублей и кросс-минусовки метод возвращает инструкции, какие фразы нужно добавить, изменить или удалить. Формат ответа максимально приближен к формату запроса для методов 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.

{
  "result": {
    "Add": [{
      "Keyword": "E F"
    }],
    "Update": [{
      "Id": 1000,
      "Keyword": "A B -C -D"
    }],
    "Delete": {
      "Ids": [ 1001 ]
    }
  }
}