UNPKG

@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
"use strict"; 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;