Crownpeak
  • Product Discovery Developer Guide
  • 🛒Item catalog management
    • What is the Items API?
    • How to work with Items
      • Item Schema
        • Attributes
        • Nested Item Schemas
        • Using the Item Schema API
        • DefaultLocale API
        • Onboarding on/migrating to Fredhopper
        • List of Reserved Attributes
      • Category Tree
        • Using the Category Tree API
        • Onboarding on XO
      • Item Catalog
        • Using the Catalog API
      • Items
        • Using the streaming Items API
        • Using the batch Items API
    • Step by Step guide
      • Step by step guide for Fredhopper customers
    • Feedback
      • Using the Feedback API
    • Authorization to APIs
    • Troubleshooting API errors
  • 🎯XO Recommendations
    • Introduction
    • Using the Recommendations API
    • Setting up the Chrome extension
    • Micro-segmentation
    • XO Legacy APIs
  • 🔎XO Search
    • Introduction
    • Getting started
    • API Reference
      • Search API
      • Autocomplete API (Beta)
      • Product Suggest API
    • API Parameters
      • Search
      • Pagination
      • Faceting
      • Sorting
      • Grouping
      • Filtering
      • Disable features
      • Response mask
      • Context
    • Configuration limitation
  • 🧪A/B testing
    • Fredhopper A/B testing
      • Integration steps for a non-caching solution
      • Integration steps for a caching solution
        • Java SDK Integration
          • Setup
          • Retrieve running A/B tests - Java SDK
          • Filter and request variant - Java SDK
          • Extending the SDK
        • Manual A/B tests integration
          • Retrieve running A/B tests
          • Filter out irrelevant A/B tests
          • Assign variants to user
          • Request variant for page
        • Limitations and Best Practices
  • 📚Resources
    • Glossary
    • Best Practices
      • Tracker Best Practices
      • Items API Best Practices
      • Fredhopper Data Configuration Best Practices
      • Fredhopper Query Response Best Practices
      • Fredhopper Merchandising Studio Best Practices
    • Privacy Notice
  • Archived Pages
    • FHR Tracking plan
    • XO Tracking plan
    • The Tracking API and JS Library
      • What to Track
        • Generic Actions
          • View
          • Click
          • Add to Cart
          • Remove from Cart
          • Purchase
        • Custom Actions
      • Initializing the JavaScript Library
      • REST API Technical Documentation
Powered by GitBook
On this page
  • Catalog Items
  • Item Attributes
  • Navigation Index Attributes
  • Search Index Attributes
  • Incremental Updates
  1. Resources
  2. Best Practices

Fredhopper Data Configuration Best Practices

These are best practices to follow when configuring the data integration with your FAS instance.

PreviousItems API Best PracticesNextFredhopper Query Response Best Practices

Last updated 7 months ago

When configuring your integration with Fredhopper, it's important to optimise the data integration to maintain performance. For each data parameter listed, there is a recommend optimal setting or limit, and if applicable an acceptable upper limit. Ignoring a recommendation won't individually cause an issue, but when combined with other recommendations being exceeded, it may lead to performance issues. Where there is an optimal and acceptable recommendation, consider the acceptable as a maximum limit.

Catalog Items

This refers to the total number of primary and variant items, per universe.

It's important to practice good data hygiene with your catalog in Fredhopper. The number of items in the catalog will directly affect the performance of search and recommendations.

Recommendations

Limit the number of items in your catalog where possible.

  • Optimal limit: 1 million items

  • Acceptable limit: 2 million items

Item Attributes

The number of attributes per item will impact performance.

List and set attributes can have many values; the more values present the longer it will take to calculate a facet. Also keep in mind that incremental updates can be slow on list/set attributes with many values.

Recommendations

Pick the fastest possible. Ints are faster than floats which are faster than text, which is faster than list64, set64, list, set and categories. Assets should be used if text search is required but no facets or sorting is needed on the attribute.

Use list64 / set64 type when an attribute has less than 64 distinct values.

Consult the for more information.

Navigation Index Attributes

The Navigation index gives control over which attributes can be used for sorting (e.g. in rankings, modifications, campaigns), faceting, filtering (query criteria like stock>0, color<{black}), or for some types of triggers (e.g. value distribution).

If attributes are not needed for any of the above, deactivate them to improve re-index times and query performance.

This is one of the most important parameters affecting performance, and should always be minimized.

Recommendations

Remove all unused attributes from the navigation index.

The list of attributes in the navigation index, and their current usage in merchandising rules can be seen in the System > Navigation > Navigation index page of the merchandising studio.

Search Index Attributes

Manage the number of attributes used for sorting, faceting and filtering in search to reduce re-index times and improve query response times.

This is configured per universe / locale.

Recommendations

Limit the number of attributes to improve performance.

Optimal limit: 25 index attributres per universe/locale

Acceptable limit: 50 index attributres per universe/locale

Incremental Updates

The frequency of incremental updates has an impact on query response times because on every incremental update the navigation cache is cleared.

The lifetime of the navigation cache must be set to a value higher than the interval between incremental updates, to avoid unrequired clearing of the cache.

This is done in system.xml, with an entry under node /com/fredhopper/service/NavigationCache:

<entry key="result-lifetime" value="5"/>

Value 5, which is the system default, should be changed to a value higher than the maximum interval between two incremental updates.

Recommendations

Set the incremental update frequency at most every 30 minutes. Navigation cache must be set to a higher value than the increment update frequency.

📚
basetypes
guide on choosing base types