@klevu/core
Version:
Typescript SDK that simplifies development on Klevu backend. Klevu provides advanced AI-powered search and discovery solutions for online retailers.
51 lines (50 loc) • 1.73 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.visuallySimilar = void 0;
const KlevuSearchPreference_js_1 = require("../../models/KlevuSearchPreference.js");
const KlevuTypeOfRecord_js_1 = require("../../models/KlevuTypeOfRecord.js");
const KlevuTypeOfRequest_js_1 = require("../../models/KlevuTypeOfRequest.js");
const defaultOptions = {
limit: 5,
};
/**
* Visually similar recommendation query
*
* @category RecommendationQuery
* @param options
* @param modifiers
* @returns
*/
function visuallySimilar(itemGroupIds, options, ...modifiers) {
const opts = Object.assign(Object.assign({}, defaultOptions), options);
const query = {
id: "visuallySimilar",
typeOfRequest: KlevuTypeOfRequest_js_1.KlevuTypeOfRequest.VisuallySimilar,
settings: {
limit: opts.limit,
typeOfRecords: [KlevuTypeOfRecord_js_1.KlevuTypeOfRecord.Product],
context: {
sourceObjects: [
{
typeOfRecord: KlevuTypeOfRecord_js_1.KlevuTypeOfRecord.Product,
records: itemGroupIds.map((itemGroupId) => ({ itemGroupId })),
},
],
},
excludeIds: itemGroupIds.map((itemGroupId) => ({
key: "itemGroupId",
value: itemGroupId,
})),
searchPrefs: [KlevuSearchPreference_js_1.KlevuSearchPreference.ignoreManualBoosting],
query: {
term: "*",
},
},
};
return {
klevuFunctionId: "recommendation",
queries: [query],
modifiers,
};
}
exports.visuallySimilar = visuallySimilar;