Skip to content

Товары и фильтры в Search API

Эта страница описывает структуру товаров и фильтров, которые возвращает /api/v1/search и использует виджет Relavio Search. Эти данные формируются из импортированного каталога и поискового индекса.

Объект товара

Товар в ответе поиска выглядит так:

json
{
  "position": 1,
  "id": "iphone-15-128",
  "title": "iPhone 15 128GB Black",
  "brand": "Apple",
  "model": "A3090",
  "categories": ["Смартфоны", "Apple"],
  "price": 99990,
  "old_price": 109990,
  "currency": "RUB",
  "available": true,
  "quantity": 12,
  "image": "https://example.com/images/iphone-15.jpg",
  "url": "https://example.com/products/iphone-15-128",
  "rating": 4.8,
  "reviews_count": 125,
  "score": 12.57
}

Поля товара

ПолеТипОписание
positionintegerПозиция товара в выдаче с учетом страницы.
idstring/nullИдентификатор товара из индекса.
titlestring/nullНазвание товара.
brandstring/nullБренд.
modelstring/nullМодель, если она была импортирована.
categoriesarrayСписок названий категорий.
pricenumber/nullТекущая цена.
old_pricenumber/nullСтарая цена.
currencystring/nullВалюта товара, например RUB.
availablebooleanПризнак наличия.
quantityintegerКоличество, если оно есть в индексе.
imagestring/nullОсновное изображение.
urlstring/nullСсылка на страницу товара.
ratingnumber/nullРейтинг товара.
reviews_countintegerКоличество отзывов.
scorenumber/nullПоисковый score.

Как товар отображается в виджете

Виджет использует несколько альтернативных названий полей, чтобы поддерживать разные форматы ответа, но стандартный Search API возвращает поля из таблицы выше.

В карточке товара виджет показывает:

  • изображение из image;
  • название из title;
  • описание из brand, model и categories, если нет отдельного описания;
  • цену из price;
  • старую цену из old_price;
  • ссылку из url.

Если image отсутствует, виджет показывает встроенный placeholder. Если url отсутствует или включен disableProductLinks, карточка не будет ссылкой.

Позиция товара

position считается на стороне API с учетом страницы и per_page.

Например при page: 2 и per_page: 20 первый товар страницы получит position: 21.

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

Фильтры в ответе

Фильтры возвращаются в поле filters, если в запросе /api/v1/search передано withFilters: true.

json
{
  "code": "brand",
  "name": "Бренд",
  "type": "terms",
  "values": [
    {
      "value": "Apple",
      "count": 12
    },
    {
      "value": "Samsung",
      "count": 8
    }
  ]
}

Типы фильтров

terms

Список значений. Используется для брендов, категорий и строковых характеристик.

json
{
  "code": "brand",
  "name": "Бренд",
  "type": "terms",
  "values": [
    {
      "value": "Apple",
      "count": 12
    }
  ]
}

В запросе выбранные значения передаются массивом:

json
{
  "filters": {
    "brand": ["Apple"]
  }
}

range

Диапазон числовых значений. Используется для цены и числовых атрибутов.

json
{
  "code": "price",
  "name": "Цена",
  "type": "range",
  "min": 1000,
  "max": 200000
}

Для атрибутов может вернуться unit:

json
{
  "code": "diagonal",
  "name": "Диагональ",
  "type": "range",
  "min": 5.4,
  "max": 6.9,
  "unit": "дюйм"
}

В запросе диапазон передается объектом:

json
{
  "filters": {
    "price": {
      "from": 50000,
      "to": 120000
    }
  }
}

boolean

Булевый фильтр. Используется для значений, которые в индексе представлены как true или false.

json
{
  "code": "available",
  "name": "Наличие",
  "type": "terms",
  "values": [
    {
      "value": true,
      "count": 30
    }
  ]
}

Системный фильтр наличия возвращается как terms, а пользовательские булевые атрибуты могут возвращаться как boolean.

Системные фильтры

Search API может вернуть системные фильтры:

  • price - диапазон цен;
  • brand - бренды;
  • category - категории;
  • available - наличие.

Дополнительно возвращаются фильтры по атрибутам товаров, которые были импортированы через <param> в YML или другим способом.

Рекомендации для качества карточек

Чтобы карточки в виджете выглядели полно, передавайте при импорте:

  • стабильный ID товара;
  • понятное название;
  • бренд и категории;
  • актуальную цену и старую цену;
  • изображение хорошего качества;
  • абсолютную или корректно собираемую ссылку на товар.