Skip to content

VariantRequestSettings

VariantRequestSettings controls whether Product Search and Product Recommendation requests return Product-only results, one selected Variant per Product, or multiple Variants per Product.

Use VariantRequestSettings instead of the older Search setting ExplodedVariants and the older Recommendation setting RecommendVariant. The legacy settings are obsolete and only remain for backwards compatibility.

Settings

SettingDescription
MaxVariantsPerProductThe maximum number of Variants that may be returned for each Product.
SortingDefines whether Variants should stay grouped by Product or be sorted by their own relevance.

MaxVariantsPerProduct

ValueBehavior
0Product-only results.
1Return one selected Variant per Product.
2+Allow multiple Variants per Product.

For Product Search requests, MaxVariantsPerProduct replaces the obsolete ExplodedVariants setting.

For Product Recommendation requests, MaxVariantsPerProduct = 1 replaces the common legacy behavior of RecommendVariant = true, while MaxVariantsPerProduct = 0 replaces RecommendVariant = false.

Sorting

ValueBehaviorRecommended for
GroupedByProductKeeps Product ranking dominant and returns Variants grouped under their Product.Product listing pages and classic Product-focused result lists.
ByRelevanceAllows concrete Variants to participate more directly in relevance ranking.Variant-focused Search and Recommendation experiences where the exact Variant matters.

GroupedByProduct is usually the safer first choice for Product listing pages. Use ByRelevance when the experience should surface the most relevant concrete Variants, even if that means several Variants from one Product can rank close to Variants from other Products.

ExperienceSuggested setting
Product-only result listMaxVariantsPerProduct = 0
Product result with one selected VariantMaxVariantsPerProduct = 1
Product listing page with a few visible VariantsMaxVariantsPerProduct = 2 to 5, Sorting = GroupedByProduct
Variant-focused Search or Recommendation experienceMaxVariantsPerProduct = 2 to 5, Sorting = ByRelevance

Search Examples

The examples below configure a Product Search request to return up to five Variants per Product and let those Variants participate in relevance-based ordering.

json
{
  "$type": "Relewise.Client.Requests.Search.ProductSearchRequest, Relewise.Client",
  "Term": "red helmet",
  "Settings": {
    "VariantRequestSettings": {
      "MaxVariantsPerProduct": 5,
      "Sorting": "ByRelevance"
    }
  },
  "Skip": 0,
  "Take": 20,
  "Language": {
    "Value": "en-US"
  },
  "Currency": {
    "Value": "EUR"
  }
}
csharp
using Relewise.Client.DataTypes;
using Relewise.Client.Requests.Search;
using Relewise.Client.Requests.Search.Settings;
using Relewise.Client.Requests.Shared;

ProductSearchRequest request = new(
    language: new Language("en-US"),
    currency: new Currency("EUR"),
    user: User.ByTemporaryId("user-123"),
    displayedAtLocation: "Search Page",
    term: "red helmet",
    skip: 0,
    take: 20)
{
    Settings = new ProductSearchSettings
    {
        VariantRequestSettings = new VariantSearchRequestSettings
        {
            MaxVariantsPerProduct = 5,
            Sorting = VariantSorting.ByRelevance,
        },
    },
};
ts
import { ProductSearchBuilder, Searcher, UserFactory } from "@relewise/client";

const searcher = new Searcher(RELEWISE_DATASET_ID, RELEWISE_API_KEY, {
  serverUrl: RELEWISE_SERVER_URL,
});

const request = new ProductSearchBuilder({
  language: "en-US",
  currency: "EUR",
  displayedAtLocation: "Search Page",
  user: UserFactory.byTemporaryId("user-123"),
})
  .setTerm("red helmet")
  .setVariantRequestSettings((variantSettings) => {
    variantSettings.setMaxVariantsPerProduct(5);
    variantSettings.setSorting("ByRelevance");
  })
  .pagination((pagination) => {
    pagination.setPageSize(20);
    pagination.setPage(1);
  })
  .build();

const response = await searcher.searchProducts(request);

Recommendation Examples

The examples below configure a Purchased With Product recommendation to return up to three Variants per Product and rank concrete Variants by relevance.

json
{
  "$type": "Relewise.Client.Requests.Recommendations.PurchasedWithProductRequest, Relewise.Client",
  "ProductAndVariantId": {
    "ProductId": "skate-helmet",
    "VariantId": "red-medium"
  },
  "Settings": {
    "NumberOfRecommendations": 12,
    "AllowFillIfNecessaryToReachNumberOfRecommendations": true,
    "VariantRequestSettings": {
      "MaxVariantsPerProduct": 3,
      "Sorting": "ByRelevance"
    }
  },
  "Language": {
    "Value": "en-US"
  },
  "Currency": {
    "Value": "EUR"
  }
}
csharp
using Relewise.Client.DataTypes;
using Relewise.Client.Requests.Recommendations;
using Relewise.Client.Requests.Shared;

PurchasedWithProductRequest request = new(
    language: new Language("en-US"),
    currency: new Currency("EUR"),
    displayedAtLocationType: "PDP - Purchased With",
    user: User.ByTemporaryId("user-123"),
    productAndVariantId: new ProductAndVariantId("skate-helmet", "red-medium"))
{
    Settings = new ProductRecommendationRequestSettings
    {
        NumberOfRecommendations = 12,
        AllowFillIfNecessaryToReachNumberOfRecommendations = true,
        VariantRequestSettings = new VariantRecommendationRequestSettings
        {
            MaxVariantsPerProduct = 3,
            Sorting = VariantSorting.ByRelevance,
        },
    },
};
ts
import { PurchasedWithProductBuilder, Recommender, UserFactory } from "@relewise/client";

const recommender = new Recommender(RELEWISE_DATASET_ID, RELEWISE_API_KEY, {
  serverUrl: RELEWISE_SERVER_URL,
});

const request = new PurchasedWithProductBuilder({
  language: "en-US",
  currency: "EUR",
  displayedAtLocation: "PDP - Purchased With",
  user: UserFactory.byTemporaryId("user-123"),
})
  .product({
    productId: "skate-helmet",
    variantId: "red-medium",
  })
  .setNumberOfRecommendations(12)
  .allowFillIfNecessaryToReachNumberOfRecommendations(true)
  .setVariantRequestSettings((variantSettings) => {
    variantSettings.setMaxVariantsPerProduct(3);
    variantSettings.setSorting("ByRelevance");
  })
  .build();

const response = await recommender.recommendPurchasedWithProduct(request);

Don't know us? Don't worry - you can find more information about us, by visiting our main page www.relewise.com