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

Товарный провайдер

Товарный провайдер — это сервис (или площадка) для торговли. Именно от товарного провайдера поступает информация о товарах (названия, настройки, конфигурации и тд) и товарных категориях в OT API и потом, с помощью ключа, транслируется на сайт владельца ключа.

Доступные для подключения товарные провайдеры.

Получить список доступных провайдеров и некоторую информацию о них можно методом GetProviderInfoList.

Свой каталог

С помощью дополнительного модуля «Товары на складе» появится провайдер «Склад», для которого можно создать и заполнить свой каталог товаров.

Подробнее о модуле и его подключении

Способы и условия поиска

У каждого товарного провайдера есть свой набор условий поиска. Этот набор можно варьировать под цели сайта. Получить список доступных способов поиска и полную информацию о том, что они поддерживают, можно методом GetProviderSearchMethodInfoList.

Сам поиск можно выполнить двумя методами: SearchItemsFrame и BatchSearchItemsFrame. По работе они полностью идентичны, только с помощью второго метода можно получить различную дополнительную информацию сразу за один запрос, помимо самого поиска. Возможная дополнительная информация будет описана далее.

Условия самого поиска также идентичны, передаются в параметр xmlParameters, и представлены структурой SearchItemsParameters (данная структура находится, например, в методе BatchSearchItemsFrame под полем "xmlParameters"). Посмотреть её содержимое можно кликнув по "Структура". Как и все структурные параметры, он имеет формат xml. xmlParameters в (Batch)SearchItemsFrame обязателен, так как он определяет, что собственно ищем. Примеры будут описаны далее.

Что называется условиями поиска

Что из этого доступно, что нет, или какие доступны варианты, можно узнать из информации о способах поиска.

Получение информации о способах поиска

Что именно можно узнать в информации о способе поиска, и на какие условия поиска оно влияет, можно увидеть в таблице ниже. Например, для условия поиска OrderBy (сортировка товаров) можно узнать возможные значения из поля AvailableSorts в информации о способе поиска, эти параметры в таблице находятся в одной строке.

Сопоставление условий и возможностей поиска

В следующей таблице представлено сравнительное описание условий поиска, как они представлены в структуре параметров, и как они представлены в описании способов поиска.

Параметр

Условия поискаИнформация о способе поиска
Название параметраПример значенияОписание параметра

Название параметра

Пример значенияОписание параметра
ПровайдерProviderTaobao

Если в условиях поиска не указан провайдер явно, он будет определен по другим условиям (например, категории). Если ни одно условие не определяет провайдера, поиск будет произведен в провайдере по умолчанию.

Если разные условия поиска ведут к различным провайдерам, то такой поиск невозможен и приведет к ошибке.

ProviderTaobaoИдентификатор провайдера
Способ поиска



SearchMethodOfficialЕсли не указано, используется определенный в настройках способ поиска по умолчанию.SearchMethodOfficialНазвание способа поиска
DisplayNameФирменные товары (Tmall)Отображаемое название способа поиска (на нужном языке)
Flags
Список особенностей способа поиска
Ограничения на число товаровUseOptimalFrameSizetrue/false

Признак использования оптимального размера фрейма вместо переданного.

Если данное условие передано в значении true, то параметр frameSize игнорируется, и будет использовано OptimalFrameSize из выбранного способа поиска.







OptimalFrameSize40

Оптимальное число запрашиваемых товаров (размер страницы).

Если использовать страницы данного размера, это обеспечивает максимальную возможную скорость работы поиска, т.к. оно соответствует размерам страниц у провайдера.




MaximumFrameSize200Максимальное число товаров, которое можно получить за 1 запрос. Может работать значительно медленнее, чем при использовании оптимального числа.



MaximumItemsCount4000Число товаров, до которого в принципе можно получить по одним и тем же условиям поиска. Чтобы получать больше товаров, надо менять и уточнять условия поиска.
Сортировка товаровOrderByPrice:AscЕсли не указано, или указанное значение не входит в число допустимых, будет использована определенная в настройках сортировка по умолчанию.AvailableSorts
Список допустимых сортировок в способе поиска.

Категория

CategoryId16Идентификатор категории, в которой искать товары.Categorytrue/falseПоддерживается ли поиск по категории

Название товара

ItemTitle

платье

Поисковая строка по названию товара.

Если в поисковой строке указаны только идентификатор (артикул) товара или ссылка на страницу на сайте провайдера, то будет найден и выдан именно этот единственный товар (или пусто, если таковой товар отсутствует).

Texttrue/falseПоддерживается ли поиск по тексту
LanguageOfQueryru

Язык поисковой строки по названию товара. Если не указан, считается равным языку выдачи товаров.

Если не равен языку провайдера, то производится автоперевод на язык провайдера.

Продавец

VendorId
Идентификатор продавцаVendortrue/falseПоддерживается ли поиск по продавцу
VendorName
Имя продавца

Местонахождение продавца

VendorAreaId
Идентификатор местонахождения продавца (зоны)VendorLocationtrue/falseПоддерживает ли способ поиска местонахождение продавца

Рейтинг продавца

 



VendorRatingRangetrue/falseПоддерживает ли способ поиска фильтр по рейтингу продавца
MinVendorRating5Минимальное значение рейтинга продавцаMinVendorRating1Минимальное значение рейтинга продавца
MaxVendorRating15Максимальное значение рейтинга продавцаMaxVendorRating20

Максимальное значение рейтинга продавца

ВАЖНО! Максимальное значение рейтинга у разных провайдеров разное. Его можно найти в доступных поисковых методах провайдера.

БрендBrandId
Идентификатор искомой торговой маркиBrandtrue/falseПоддерживает ли способ поиска бренды
BrandPropertyValueId
Идентификатор значения искомой торговой марки (устаревший параметр, используйте BrandId)
ЦенаMinPrice10Минимальная ценаPriceRangetrue/false


Поддерживает ли способ поиска фильтр по цене товара
MaxPrice1000Максимальная цена
CurrencyCodeCNY

Код валюты, в которой указан диапазон цен.
По умолчанию считается первая витринная валюта. Для поиска конвертируется по обратным правилам наценок и курсов в валюту провайдера.

Объем продаж

MinVolume100Минимальный объем продажVolumeRange true/falseПоддерживает ли способ поиска фильтр по объему продаж 
MaxVolume500Максимальный объем продаж



VolumeRangeLogicNone / Range / OnlyMin / OnlyMaxЛогика работы условий по объему продаж: диапазон, только минимум, только максимум.
Минимальная партияMinFirstLotМинимальный размер первой партии товараFirstLotRangetrue/falseПоддерживает ли способ поиска фильтр по минимальной партии
MaxFirstLot10Максимальный размер первой партии товара
Состояние товара (новый, б/у, неиспользованый)StuffStatusNew / Unused / SecondСостояние товараStuffStatustrue/falseПоддерживает ли способ поиска фильтр по состоянию товара

Характеристики товара (цвет, модель и тд)

Configurators

Список поисковых свойств, представленных структурой.

Configuratorstrue/false

Поддерживает ли способ поиска характеристики товара.

MultipleConfiguratorLogicNone / All / And

Логика работы способа поиска по нескольким значениям одной характеристики.

Использование в поиске нескольких значений одной характеристики.

(например, можно вывести только красное, красное И зеленое, красное ИЛИ зеленое)


Особенности товараFeatures

Список искомых специальных фильтров

Features


Список специальных фильтров, поддерживаемых способом поиска

Поиск по фотоImageUrl

Адрес изображения для поиска товаров

Module


Image 

Параметры поиска по фото допустимы только в способе поиска, в котором свойство Module равно Image


ImageFileId

Файловый идентификатор изображения для поиска товаров

Используется, если искомое изображение сперва было загружено через OTAPI.

Управление выдачейOutputModeFull / TotalCount / Provider

Режим выдачи результатов поиска.

По умолчанию делается обычный поиск, с выдачей товаров и всего сопутствующего. Другие варианты:

  • TotalCount — Выдача только общего количества товаров, без самих данных о товарах. Тем самым можно получить общее количество по данным условиям поиска, и не тратить время на обработку самих товаров.
  • Provider — Выдача только провайдера и способа поиска, которыми бы производился поиск, без самого поиска. Провайдер и способ поиска определяются на основе всех переданных условий поиска и различных настроек.



CategoryModeNothing / External / InternalLeaf / CurrentLevel

Режим выдачи категорий в результатах поиска.

В результатах поиска помимо товаров есть еще, хоть и не всегда, список категорий, в которых находятся найденные товары. Обычно они называются уточняющими категориями. Есть несколько вариантов обработки и выдачи данного списка.

  • Nothing — Отсутствие выдачи категорий (если они не нужны)
  • External — Выдача внешних категорий как есть, без приведения к внутренним
  • InternalLeaf — Приведение внешних категорий к внутренним конечным (в любом месте каталога)
  • CurrentLevel — Приведение внешних категорий к внутренним категориям текущего уровня. Если поиск не по категории, то к корневым. Если поиск по категории, то к тем что внутри неё. Тем самым уточняющие категории никогда не выходят за рамки текущего уровня просмотра каталога.



Устаревшие условияIsTmalltrue/falseПризнак выбора только товаров из Tmall


Примеры параметров с условиями поиска и запросов поиска

ПримерЗначение xmlParametersТестовый запросКомментарий
20 товаров провайдера Таобао


<SearchItemsParameters>
<Provider>Taobao</Provider>
<CategoryId>0</CategoryId>
</SearchItemsParameters>


Пример в документации

Метод не выполнится без одного из обязательных параметров (CategoryId, VendorName, VendorId, ItemTitle, BrandId, Configurators), поэтому из GetProviderInfo берём RootCategoryId и передаём его в CategoryId (для поиска в корневой категории провайдера).

Изменить количество искомых товаров (и другие параметры) можно перейдя по ссылке Пример в документации

20 товаров провайдера Алибаба1688 путём конкретного способа поиска


<SearchItemsParameters>
<Provider>Alibaba1688</Provider>
<CategoryId>abb-0</CategoryId>
<SearchMethod>Storage</SearchMethod>
</SearchItemsParameters> 


Пример в документации

По умолчанию, способ поиска выбирается автоматически (на основе настроек ключа и параметров поиска).

Иногда его нужно указывать явно, как, например, при поиске по отзывам.

Подробнее про способы поиска.

Поиск футболок с оптимальным для системы числом запрашиваемых товаров (размер страницы)


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<UseOptimalFrameSize>true</UseOptimalFrameSize>
</SearchItemsParameters>


Пример в документации

Подробнее про поиск с оптимальным для системы числом запрашиваемых товаров (размер страницы) можно найти в пункте "Ограничения на число товаров"

В frameSize передаём любое число больше 0.

Сортировка 20 товаров Таобао по убыванию цены


<SearchItemsParameters>
<Provider>Taobao</Provider>
<CategoryId>0</CategoryId>
<OrderBy>Price:Desc</OrderBy>
</SearchItemsParameters>


Пример в документацииПодробнее про возможные способы сортировки.
20 товаров провайдера Таобао отсортированные по кол-ву отзывов по убыванию


<SearchItemsParameters>
<Provider>Taobao</Provider>
<CategoryId>0</CategoryId>
<SearchMethod>Reviews</SearchMethod>
<OrderBy>ReviewCount:Desc</OrderBy>
</SearchItemsParameters>


Пример в документации

Только при наличии модуля «Отзывы».

Подробнее про возможные способы сортировки.

Поиск футболок по убыванию количества продаж


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<OrderBy>Volume:Desc</OrderBy>
</SearchItemsParameters>


Пример в документацииПодробнее про возможные способы сортировки.
Поиск по внутренней категории otc-4


<SearchItemsParameters>
<CategoryId>otc-4</CategoryId>
</SearchItemsParameters>


Пример в документации
Поиск по категории 50000671 провайдера Taobao


<SearchItemsParameters>
<Provider>Taobao</Provider>
<CategoryId>50000671</CategoryId>
</SearchItemsParameters>


Пример в документации

Поиск по категории с Alibaba1688


<SearchItemsParameters>
<CategoryId>abb-1031918</CategoryId>
</SearchItemsParameters>


Пример в документации
Поиск первых 100 товаров по запросу «красная футболка»


<SearchItemsParameters>
<ItemTitle>красная футболка</ItemTitle>
</SearchItemsParameters>


Пример в документации
Поиск на оригинальном языке: 红色T恤


<SearchItemsParameters>
<ItemTitle>红色T恤</ItemTitle>
<LanguageOfQuery>zh-chs</LanguageOfQuery>
</SearchItemsParameters>


Пример в документации
Поиск на русском языке — «красная футболка»


<SearchItemsParameters>
<ItemTitle>красная футболка</ItemTitle>
<LanguageOfQuery>ru</LanguageOfQuery>
</SearchItemsParameters>


Пример в документации
Поиск на английском языке — Red T-shirt


<SearchItemsParameters>
<ItemTitle>red t-shirt</ItemTitle>
<LanguageOfQuery>en</LanguageOfQuery>
</SearchItemsParameters>


Пример в документации
Поиск по английскому слову (без перевода на китайский): 3D Vision


<SearchItemsParameters>
<ItemTitle>3D Vision</ItemTitle>
<LanguageOfQuery>zh-chs</LanguageOfQuery>
</SearchItemsParameters>


Пример в документации
Поиск по артикулу: 583346884671


<SearchItemsParameters>
<ItemTitle>583346884671</ItemTitle>
</SearchItemsParameters>


Пример в документации
Поиск по ссылке с Alibaba1688


<SearchItemsParameters>
<ItemTitle>
https://detail.1688.com/offer/530220113667.html
</ItemTitle>
</SearchItemsParameters>


Пример в документации
Поиск по продавцу: maxmartin玛玛绨旗舰店


<SearchItemsParameters>
<VendorId>maxmartin玛玛绨旗舰店</VendorId>
</SearchItemsParameters>


Пример в документацииЗначение для параметра VendorId (идентификатор продавца) можно найти, например, в данных любого товара.

Поиск футболки по рейтингу продавца не меньше 19 

Важно: Максимальное значение рейтинга продавца у разных провайдеров разное.

Его можно найти в доступных поисковых методах провайдера.


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<MinVendorRating>19</MinVendorRating>
</SearchItemsParameters>


Пример в документацииВ данном конкретном примере единственный провайдер Таобао  и максимальный рейтинг  продавца у этого провайдера 20
Поиск по названию бренда: vero moda


<SearchItemsParameters>
<BrandId>29902</BrandId>
</SearchItemsParameters>


Пример в документации
Поиск футболок с ограниченной стоимостью: от 10 до 40 юаней


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<CurrencyCode>CNY</CurrencyCode>
<MinPrice>10</MinPrice>
<MaxPrice>40</MaxPrice>
</SearchItemsParameters>


Пример в документацииВ выборку попадают товары со скидочной ценой (PromotionPrice). Валюта (если не передана в явном виде) берётся из витрины (первая валюта) и конвертируется.
Поиск футболки с ценой в долларах (эквивалент) не выше 3


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<MaxPrice>3</MaxPrice>
<CurrencyCode>USD</CurrencyCode>
</SearchItemsParameters>


Пример в документацииКод валюты (CurrencyCode) берём в GetCurrencyInstanceList или в GetInstanceCurrencyInfoList
Поиск футболки с минимальным объёмом продаж 50 штук


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<MinVolume>50</MinVolume>
</SearchItemsParameters>


Пример в документации
Поиск футболки с минимальной партией заказа от 5 штук


<SearchItemsParameters>
<Provider>Alibaba1688</Provider>
<ItemTitle>футболка</ItemTitle>
<MinFirstLot>5</MinFirstLot>
</SearchItemsParameters>


Пример в документацииТолько для Alibaba1688
Поиск футболки с максимальной партией заказа 1 штука (аналог заказа в розницу)


<SearchItemsParameters>
<Provider>Alibaba1688</Provider>
<ItemTitle>футболка</ItemTitle>
<MaxFirstLot>1</MaxFirstLot>
</SearchItemsParameters>


Пример в документации
Поиск только новых футболок


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<StuffStatus>New</StuffStatus>
</SearchItemsParameters>


Пример в документации

На данный момент работает 2 состояния: новый и б/у.

New: Новый
Second: Б\У

Поиск по характеристике: футболка размера XL, красного цвета


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<Configurators>
<Configurator Pid="20509" Vid="28317" />
<Configurator Pid="1627207" Vid="13535612018" />
</Configurators>
</SearchItemsParameters>


Пример в документации
  • При помощи BatchGetItemFullInfo находим атрибуты для конкретного товара (в примере - id 646674173023) (<Attributes> )

<ItemAttribute Pid="20509" Vid="28317"> (для размера XL)

<ItemAttribute Pid="1627207" Vid="13535612018"> (для цвета “красный”)

Поиск футболок со скидкой


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<Features>
<Feature Name="Discount">true</Feature>
</Features>
</SearchItemsParameters>


Пример в документацииСписок возможных особенностей (фич) можно взять из пункта №2 в документации.
Поиск футболок в наличии


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<Features>
<Feature Name="IsStock">true</Feature>
</Features>
</SearchItemsParameters>


Пример в документации
Поиск футболок в Tмall


<SearchItemsParameters>
<ItemTitle>футболка</ItemTitle>
<Features>
<Feature Name="Tmall">true</Feature>
</Features>
</SearchItemsParameters>


Пример в документации
Поиск товаров в категории "платья" с отзывами после покупки


<SearchItemsParameters>
<CategoryId>162104</CategoryId>
<SearchMethod>Reviews</SearchMethod>
<Features>
<Feature Name="PurchasedItemReviews">true</Feature>
</Features>
</SearchItemsParameters>


Пример в документацииТолько при наличии модуля «Отзывы».
Поиск по изображению


<SearchItemsParameters>
<ImageUrl>
https://img.alicdn.com/imgextra/i1/529782397/O1CN01qnZeTY1TZs3xAcmOv_!!529782397.jpg
</ImageUrl>
</SearchItemsParameters>


Пример в документацииМожно искать по URL-у изображения или по закачанному через апи: подробности поиска по фото.


Описание результатов поиска

Результаты поиска представлены структурой OtapiItemSearchResult, ниже описание её полей.

ПараметрОписание
ItemsСписок найденных товаров с указанием полного числа товаров
CategoriesСписок категорий, в которых есть искомые товары (уточняющие товары)
BrandsСписок брендов, в которых встречаются товары (уточняющие бренды)
TranslatedItemTitleТекст, по которому реально искались товары (переведенный на язык провайдера)
ProviderТоварный провайдер, в котором был произведен поиск
SearchMethodСпособ поиска, которым был произведен поиск
CurrentSortРеальная текущая сортировка
CurrentFrameSizeРеальный текущий размер фрейма (страницы)
MaximumPageCountМаксимальное число страниц в поиске
IsFoundByItemIdЕсли true, то в результатах поиска содержится 1 товар, который был найден по артикулу или ссылке


Дополнительные блоки информации в BatchSearchItemsFrame

Используя метод BatchSearchItemsFrame, можно получить дополнительную информацию за тот же один запрос к OTAPI. Список дополнительных блоков передается в параметре blockList, через запятую. Результатом является BatchItemSearchResult, который включает в себя обычный OtapiItemSearchResult, а также все свойства для дополнительной информации.

Название блокаОписание
SubCategoriesсразу получить подкатегории, если поиск был по категории
SearchPropertiesсразу получить фильтры по характеристикам/свойствам
RootPath сразу получить путь к корню, если поиск был по категории
Vendorсразу получить информацию о продавце, если поиск был по продавцу
Brandсразу получить информацию о бренде, если поиск был по бренду
Categoryсразу получить информацию о категории, если поиск был по категории
HintCategoriesсразу получить подходящие по названию категории, если поиск был по тексту
AvailableSearchMethodsсразу получить список подходящих под данные параметры способов поиска, и всю информацию по ним