Similarity¶
Our similarity service is trying to answer a question: which are the visually similar products? Since the information is purely visual it creates relation between product looks being visually distinct variants.
We are able to add custom business logic into parsing similar looks using other information from feed, e.g.
only compare to products in the same category
filter only similar looks of a similar price (+- 20eur)
exclude different looks with same parent product from similarity
API Usage¶
Similarity results are updated automatically by processing customers feed
The results are filled into Catalogue as a relationships between looks.
See Catalogue: Look
endpoints labeled Get Similarities
in interactive OpenAPI docs.
Example Query - look/similarities¶
request
LOOK_ID='793769'
curl \
-X GET "${API_BASE_URL}/looks/${LOOK_ID}/similarities?limit=3" \
-H "accept: application/json" \
-H "x-api-key: ${API_KEY}" \
-H "Authorization: None"
response
{
"links": {
"next": "/similarities?limit=3&offset=3",
"prev": null,
"limit": 3,
"offset": 0
},
"results": [
{
"look_id": "793769",
"similar_look_id": "370299",
"position": 0
},
{
"look_id": "793769",
"similar_look_id": "844177",
"position": 1
},
{
"look_id": "793769",
"similar_look_id": "1035194",
"position": 2
}
]
}
Example Query - look/similar-looks¶
request
LOOK_ID='793769'
curl \
-X GET "${API_BASE_URL}/looks/${LOOK_ID}/similar-looks?limit=3" \
-H "accept: application/json" \
-H "x-api-key: ${API_KEY}" \
-H "Authorization: None"
response
{
"links": {
"next": "/similarities?limit=3&offset=3",
"prev": null,
"limit": 3,
"offset": 0
},
"results": [
{
"id": "1035194",
"code": "1035194",
"instance": {},
"product": {},
"primary_image": {}
},
{
"id": "1053562",
"code": "1053562",
"instance": {},
"product": {},
"primary_image": {}
},
{
"id": "750255",
"code": "750255",
"instance": {},
"product": {},
"primary_image": {}
}
]
}