Javascript SDK ViSenze предоставляет точные, надежные и масштабируемые API-интерфейсы поиска изображений в наших каталогах. API-интерфейсы, включенные в этот SDK, призваны предоставить разработчикам конечные точки, которые эффективно выполняют поиск изображений, а также упрощают интеграцию в веб-приложения.
Примечание. Чтобы использовать любой из наших SDK, вам необходима учетная запись разработчика ViSenze. Вы получите доступ к собственной панели управления для управления ключами приложений и каталогами. Посетите здесь для получения дополнительной информации.
Выполните эти простые шаги, чтобы узнать, как можно интегрировать SDK и как он на самом деле работает, изучив наши демоверсии, включенные в основной репозиторий.
Если вы используете проект, предоставленный непосредственно из основного репозитория, вы можете просто запустить следующую команду из корневого каталога этого проекта:
npm install
Если вы пытаетесь включить этот SDK в свой проект через npm, выполните следующую команду из корневого каталога вашего проекта:
npm install visearch-javascript-sdk
В узле
import ViSearch from 'visearch-javascript-sdk' ;
...
const visearch = ViSearch ( ) ;
Если у вас есть несколько мест размещения или вы хотите использовать места размещения с разными конфигурациями, вам потребуется создать несколько экземпляров ViSearch.
const visearch1 = ViSearch ( ) ;
const visearch2 = ViSearch ( ) ;
В браузере
Если вы хотите включить SDK непосредственно на свою веб-страницу, добавьте это в заголовок своего сайта.
< script type =" text/javascript " >
! function ( e , t , r , s , a ) { if ( Array . isArray ( a ) ) for ( var n = 0 ; n < a . length ; n ++ ) o ( e , t , r , s , a [ n ] ) ; else o ( e , t , r , s , a ) ; function o ( e , t , r , s , a ) { var n = e [ a ] || { } ; e [ a ] = n , n . q = n . q || [ ] , n . factory = function ( e ) { return function ( ) { var t = Array . prototype . slice . call ( arguments ) ; return t . unshift ( e ) , n . q . push ( t ) , n } } , n . methods = [ "set" , "setKeys" , "sendEvent" , "sendEvents" , "productMultisearch" , "productMultisearchAutocomplete" , "productSearchByImage" , "productSearchById" , "productRecommendations" , "productSearchByIdByPost" , "productRecommendationsByPost" , "setUid" , "getUid" , "getSid" , "getLastQueryId" , "getSessionTimeRemaining" , "getDefaultTrackingParams" , "resetSession" , "resizeImage" , "generateUuid" , ] ; for ( var o = 0 ; o < n . methods . length ; o ++ ) { var i = n . methods [ o ] ; n [ i ] = n . factory ( i ) } if ( e . viInit ) viInit ( e , a ) ; else { var c , d , u , f , g , m = ( c = t , d = r , u = s , ( f = c . createElement ( d ) ) . type = "text/javascript" , f . async = ! 0 , f . src = u , ( g = c . getElementsByTagName ( d ) [ 0 ] ) . parentNode . insertBefore ( f , g ) , f ) ; m . onload = function ( ) { viInit ( e , a ) } , m . onerror = function ( ) { console . log ( "ViSearch Javascript SDK load fails" ) } } } } ( window , document , "script" , "https://cdn.visenze.com/visearch/dist/js/visearch-5.0.0.min.js" , "visearch" ) ;
script >
Скопируйте тот же код, но измените ключевое слово «visearch» на массив имен желаемых экземпляров.
< script type =" text/javascript " >
... ( window , document , "script" , 0 , [ "visearch" , "visearch2" ] ) ;
script >
Прежде чем вы сможете начать использовать SDK, вам необходимо настроить . Большинство этих ключей можно найти на панели управления вашей учетной записи.
Пожалуйста, взгляните на таблицу ниже, чтобы понять, что представляет собой каждая клавиша:
Ключ | Важность | Описание |
---|---|---|
ключ_приложения | Принудительный | Все функции SDK зависят от установки допустимого app_key. Ключ приложения также ограничивает возможности API, которые вы можете использовать. |
Placement_id | Принудительный | Идентификатор текущего места размещения |
конечная точка | Ситуационный | По умолчанию – https://search.visenze.com/ |
тайм-аут | Необязательный | По умолчанию 15000 |
жидкость | Необязательный | Если это не указано, мы автоматически сгенерируем uid. |
Настройте экземпляр(ы) ViSearch с помощью ключей консоли.
visearch . set ( 'app_key' , 'YOUR_APP_KEY' ) ;
visearch . set ( 'placement_id' , 'YOUR_PLACEMENT_ID' ) ;
visearch . set ( 'timeout' , TIMEOUT_INTERVAL_IN_MS ) ;
или
visearch . setKeys ( {
'app_key' : 'YOUR_APP_KEY' ,
'placement_id' : 'YOUR_PLACEMENT_ID'
} ) ;
visearch2 . setKeys ( {
'app_key' : 'YOUR_APP_KEY_2' ,
'placement_id' : 'YOUR_PLACEMENT_ID_2'
} ) ;
или
если вы находитесь в среде Node, вы можете передать конфигурации непосредственно при создании клиента ViSearch.
const visearch = ViSearch ( {
'app_key' : 'YOUR_APP_KEY' ,
'placement_id' : 'YOUR_PLACEMENT_ID'
} )
Демо-версия применима только для тех, кто работает непосредственно с основным репозиторием. Вам необходимо иметь среду Node.js и не забыть заполнить соответствующие файлы .
Создайте файл
.env
и укажите соответствующий ключ приложения и идентификатор места размещения.
SEARCH_APP_KEY =
SEARCH_PLACEMENT_ID =
SEARCH_IM_URL =
REC_PID =
REC_APP_KEY =
REC_PLACEMENT_ID =
ENDPOINT =
Чтобы запустить демонстрацию веб-страницы:
npm run start - demo
После приведенной выше команды вы должны увидеть, что сервер работает локально на вашем устройстве. Затем вы сможете получить доступ к различным демонстрационным веб-страницам в своем браузере, используя этот формат http://localhost:3000/examples/*.html
.
http://localhost:3000/examples/product_search_by_id.html
http://localhost:3000/examples/product_search_by_image.html
http://localhost:3000/examples/tracking.html
POST /product/search_by_image
Поиск по изображению может осуществляться тремя разными способами: по URL-адресу, идентификатору или файлу.
Использование идентификатора изображения:
const parameters = {
im_id : 'your-image-id'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productSearchByImage ( parameters , onResponse , onError ) ;
Использование URL-адреса изображения:
const parameters = {
im_url : 'your-image-url'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productSearchByImage ( parameters , onResponse , onError ) ;
Использование файла изображения:
< form >
Upload image: < input type =" file " id =" fileUpload " name =" fileInput " > < br >
< input type =" submit " value =" Submit " >
form >
const parameters = {
image : document . getElementById ( 'fileUpload' )
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productSearchByImage ( parameters , onResponse , onError ) ;
Параметры запроса для этого API можно найти в Центре документации ViSenze.
ПОЛУЧИТЬ /product/рекомендации/{product_id}
Поиск визуально похожих продуктов в базе данных продуктов по уникальному идентификатору индексируемого продукта.
const product_id = 'your-product-id' ;
const parameters = {
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productRecommendations ( product_id , parameters , onResponse , onError ) ;
Параметры запроса для этого API можно найти в Центре документации ViSenze.
POST /продукт/мультипоиск
Мультипоиск может осуществляться четырьмя различными способами: по тексту, URL-адресу, идентификатору или файлу.
Использование текста:
const parameters = {
q : 'your-text-query'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearch ( parameters , onResponse , onError ) ;
Использование идентификатора изображения:
const parameters = {
im_id : 'your-image-id'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearch ( parameters , onResponse , onError ) ;
Использование URL-адреса изображения:
const parameters = {
im_url : 'your-image-url'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearch ( parameters , onResponse , onError ) ;
Использование файла изображения:
< form >
Upload image: < input type =" file " id =" fileUpload " name =" fileInput " > < br >
< input type =" submit " value =" Submit " >
form >
const parameters = {
image : document . getElementById ( 'fileUpload' )
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearch ( parameters , onResponse , onError ) ;
Параметры запроса для этого API можно найти в Центре документации ViSenze.
POST /product/multisearch/autocomplete
Автозаполнение при множественном поиске может осуществляться четырьмя различными способами: по тексту, URL-адресу, идентификатору или файлу.
Использование текста:
const parameters = {
q : 'your-text-query'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearchAutocomplete ( parameters , onResponse , onError ) ;
Использование идентификатора изображения:
const parameters = {
im_id : 'your-image-id'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearchAutocomplete ( parameters , onResponse , onError ) ;
Использование URL-адреса изображения:
const parameters = {
im_url : 'your-image-url'
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearchAutocomplete ( parameters , onResponse , onError ) ;
Использование файла изображения:
< form >
Upload image: < input type =" file " id =" fileUpload " name =" fileInput " > < br >
< input type =" submit " value =" Submit " >
form >
const parameters = {
image : document . getElementById ( 'fileUpload' )
} ;
const onResponse = ( response ) => {
// TODO handle response
}
const onError = ( error ) => {
// TODO handle error
}
visearch . productMultisearchAutocomplete ( parameters , onResponse , onError ) ;
Параметры запроса для этого API можно найти в Центре документации ViSenze.
Javascript не содержит определений типов, и вместо этого ответ REST API для всех наших API просто преобразуется непосредственно в объекты JavaScript. Вот некоторые ключи объекта ответа API, на которые следует обратить внимание:
Имя | Тип | Описание |
---|---|---|
статус | нить | Статус запроса: OK , warning или fail |
имИД | нить | Идентификатор изображения. Можно использовать для повторного поиска без повторной загрузки. |
im_id | нить | |
ошибка | объект | Сообщение об ошибке и код, если запрос не был успешным, т. е. когда статус — warning или fail |
типы_продуктов | объект[] | Типы обнаруженных продуктов, оценка и их ограничивающая рамка в формате (x1,y1,x2,y2). |
результат | объект[] | Список товаров в результатах поиска. Важные поля для первого выпуска. Если он отсутствует, он будет пустым. Обратите внимание, что мы отображаем поля исходного каталога клиента в поле «данные». |
объекты | объект[] | Когда для параметра search_all_objects установлено значение true |
каталог_полей_маппинг | объект | Сопоставление полей исходного каталога |
грани | объект[] | Список значений полей фасета и ответа для фильтрации |
страница | число | Номер страницы результата |
предел | число | Количество результатов на странице |
общий | число | Общее количество результатов поиска |
требуемый идентификатор | нить | Идентификатор, присвоенный сделанному запросу |
Имя | Тип | Описание |
---|---|---|
код | число | Код ошибки, например 401, 404 и т. д. |
сообщение | нить | Ответное сообщение сервера. |
Имя | Тип | Описание |
---|---|---|
коробка | число[] | Координаты в пространстве изображения блока обнаружения, представляющего продукт. |
тип | нить | Обнаруженный тип продукта. |
Имя | Тип | Описание |
---|---|---|
Product_id | нить | Идентификатор продукта, который можно использовать в рекомендациях. |
main_image_url | нить | URL-адрес изображения. |
данные | объект | Это поле данных зависит от метаданных, запрошенных пользователем здесь. |
Поля, возвращаемые здесь, зависят от метаданных продукта, запрошенных с помощью параметров attrs_to_get
, и полей, проиндексированных в вашем каталоге.
Кроме этого, мы возвращаем два поля по умолчанию.
Предопределенные поля каталога ViSenze | Оригинальные имена каталога клиента X |
---|---|
Product_id | артикул |
main_image_url | среднее_изображение |
Если для параметра search_all_objects
установлено значение true
, ответ поиска будет возвращать результаты в списке ProductObject вместо непосредственного списка Product. Разница в том, что ProductObject разделит продукты по типам.
Имя | Тип | Описание |
---|---|---|
результат | объект[] | Перечень товаров, относящихся к этому типу. |
общий | число | Общее количество результатов данного типа. |
тип | нить | Обнаруженный тип продукта. |
коробка | число[] | Координаты в пространстве изображения блока обнаружения, представляющего продукт. |
Фасеты используются для потенциальной фильтрации результатов.
Имя | Тип | Описание |
---|---|---|
ключ | нить | |
предметы | объект[] | |
диапазон | объект |
Чтобы ознакомиться с руководством по использованию, пожалуйста, обратитесь сюда
Фасет для четкой фильтрации значений.
Имя | Тип | Описание |
---|---|---|
ценить | нить | |
считать | число |
Фасет для фильтрации диапазона значений.
Имя | Тип | Описание |
---|---|---|
мин | нить | |
Макс | нить |
Наш API поддерживает множество параметров, и в этом разделе мы покажем вам несколько примеров их использования.
Здесь вы можете найти все поддерживаемые параметры расширенного поиска для API ProductSearch.
Чтобы получить метаданные результатов вашего изображения, укажите список ключей метаданных для возвращаемого значения метаданных в свойстве attrs_to_get
:
visearch . productSearchByImage ( {
im_url : 'your-image-url' ,
attrs_to_get : [ 'price' , 'brand' , 'im-url' ] , // list of fields to be returned
} , ( res ) => {
// TODO handle response
} , ( err ) => {
// TODO handle error
} ) ;
Обратите внимание, что с помощью этого параметра можно получить только индексированные атрибуты. Вы можете перейти на страницу «Редактировать приложение» в консоли Discovery Suite, чтобы просмотреть, какие атрибуты были включены в индекс приложения.
Чтобы фильтровать результаты поиска на основе значений метаданных, укажите строковый массив ключа метаданных для фильтрации значения в свойстве filters
. Поддерживаются только параметры фильтра цена, категория, бренд, original_price.
visearch . productSearchByImage ( {
im_url : 'your-image-url' ,
filters : [ 'brand:my_brand' ] ,
} , ( res ) => {
// TODO handle response
} ,