A note from 2026: This article was published in 2019 and refers to SAP Commerce Accelerators and their out-of-the-box faceted-search behavior at that time. SAP Commerce Cloud has evolved significantly since then, and many storefront implementations now use SAP Composable Storefront or custom frontends, so verify the feature-coverage table against your current SAP Commerce Cloud version and storefront architecture.

Overview

Abstract

Portrait of Rauf Aliev

In this article, I have structured the main concepts, best practices, design recommendations, interaction patterns, and visual design considerations for faceted search. I believe this work covers every aspect of the facet search UI: everything you need to know to create a facet search component from scratch or by using the ready-made building blocks from the SAP Commerce Cloud out-of-the-box search module. At the end of the article, you will find a summary explaining what features are implemented in the default SAP Commerce Cloud Accelerators; for those that are not implemented, you will find my ballpark estimates of the effort needed.

Key concepts

Faceted search is a technique that involves augmenting traditional search techniques with a faceted navigation system, allowing users to narrow down search results by applying multiple filters based on a faceted classification of the items. It is also called guided navigation.

Attribute-based Faceting and Needs-based Faceting

Your customers may not always be well versed in a product’s technical details. The facets may or may not be the product attributes. At the design phase, one or more product attributes can be converted into one facet. Other attributes can be simplified for use as facets or even split into two or more facets.

SAP Commerce Accelerators support the translation from product attributes into facets.

Filter value-selection paradigm: Drill-down or Parallel

There are two basic ways of selecting values for filters:

Drill-down and parallel selection comparison

Note that in the drill-down selection approach, you can’t open all documents published today and marked as “New York” directly from the initial form. You need to perform two actions in a row: select the city, then the publication date, or vice versa.

Drill-down selection may appear slow and cumbersome to the user. For this option, using AJAX is highly recommended.

For parallel selection, the user might not realize they have to hit a “Submit” button in order to actually apply the checkboxes, radio buttons, etc. they selected. They might select some checkboxes, radio buttons, etc. and wait, but nothing happens. This causes confusion and friction for the user, which can lead to a negative experience. Also, if the list of facets is taller than the visible portion of the page, the “Submit” button, which is generally placed at the top or bottom of the page, will get pushed out of the viewable screen, causing the user not to see that there is a Submit button at all.

Parallel selection with hidden submit button

To address this issue, in some implementations, after the user selects an item, the submit button is revealed next to the selected item, along with auxiliary information, such as the number of documents fetched.

Submit button displayed near selected facet item

The Parallel Selection approach works well when search is quite slow and the probability of complex selection (many options) is high.

For parallel selection, you can face the problem of dependent facets. Some combinations of facet values would return no results, and you need to mark those in the form somehow. Normally, this can be done by greying out some items so that the user cannot select them. This approach also creates other edge cases you need to work out.

Drill-down selection and parallel selection complement one another very well. Drill-down selection is great where customers need to display multiple levels in a hierarchy — for example, multi-level category drill-downs. Parallel selection is great for selecting one or more options for attributes like brands or sizes, especially if the system rearranges the facets in full after submitting the selection for a single facet.

Important notice: don’t confuse this with single/multiple options per facet. This section is about selecting more than one facet per form without automatic (per-click) form submission.

I’ve broken down the underlying components of faceted search into atomic building blocks.

Broadly, there are two main components of Facet Search:

There is also a search box, which is one of the entry points for the functionality. In this review, the search box, as well as the advanced search page, is out of scope.

The Facet Filters Panel contains:

The Facet Search Results Panel contains a list of items (documents, products).

Facet search UI components diagram

For the desktop version of the website, in relation to the Facet Search Results Panel, the Facet Filters Panel can be:

For example, Geizhals.at uses a top facet bar:

Geizhals top facet bar example

Note that the checkbox on the left is used to build a custom description.

For example, Aliexpress uses a combined approach:

Aliexpress combined facet layout example

However, the top part is more or less stable, while the list filters depend on the product category. Possibly, the top part contains the advanced search constraints, while the left part contains real facets.

In SAP Commerce Accelerators, the Facet Filters Panel is on the left.

A. Selected facet/value pairs (applied facets)

Applied facets can be implemented in two ways:

A.1. Non-dynamic list of facets

All facets are displayed in full and in the same order for all facet combinations, but some values are marked as selected. Some values are greyed out as non-selectable if they lead to zero results. This approach works well only with a small number of facets.

In SAP Commerce Accelerators, this approach is not implemented by default.

A.2. Dynamic list of facets

The applied facets can be listed in a separate area. For single-selection facets, the facet block is not displayed after selection. The user can remove a filter from the list of applied filters.

Applied facets list example

In SAP Commerce Accelerators, this approach is implemented by default.

B. Advanced Search Constraints (non-facet filters)

B.1. Advanced Search Constraints and Facet Constraints

For faceted search, there are two types of constraints:

In some solutions, both types of constraints are combined on the same facet navigation pane.

In the following example, query (“table”) and search scope (“products”) are non-facet constraints. Publication date and City are generally facet constraints.

Advanced search constraints and facet constraints example

B.2. Filters and Facets

According to Nielsen Norman Group research, there are two terms: filters and faceted navigation, and they are sometimes used interchangeably. “There is in fact quite a lot of overlap between these concepts: they share the same basic mechanism of analyzing a large set of content and excluding any objects that don’t meet certain criteria. The difference between the two is essentially one of degree, but it is an important difference. Filter means anything that analyzes a set of content and excludes some items. Faceted navigation is composed of multiple filters that comprehensively describe a set of content. Ideally, faceted navigation provides multiple filters, one for each different aspect of the content.”

In terms of this work, {Advanced Search Constraints} is {Filters} minus {Facets}.

B.3. Search within the results

In this scenario, the user is able to type query strings into a text box and have that constraint added to existing query refinements. According to our terminology, filters like “Search within the results” are technically not facets; they are Advanced Search Constraints. In terms of the UI, they can be visually grouped with facets.

Search within results example

C. Facet filters

C.1. Single Selection and Multiple Options

The facet can be configured as:

Type Example
Single selection
Single-selection facet example
Multiple selection
Multiple-selection facet example

SAP Commerce Accelerator supports both options for facets.

Aliexpress uses a combined approach. Some facets are single-selection, but you can convert them into multiple-selection mode by clicking “Choose more”:

Aliexpress choose more facet example

Allowing single-selection to be converted into multiple-selection is not a common interaction pattern for a user, so be careful not to overuse it.

Edge cases of multi-selection you need to work out:

C.2. Search Facet Types

The types of data exposed by facets may vary depending on the underlying elements of the document model they represent. They usually fall within five commonly used types:

Beyond these basic facet types, compound or computed facets may be used to enhance searching.

A correlated facet type is based on multiple underlying multi-valued fields, which may only exist in particular combinations such as “Size” and “Color” for an item in a retail dataset. Correlated facets may be created to express the intersections of certain non-exclusive facets and avoid both empty result sets and unnecessary multiple refinement actions. Ensuring an intuitive interaction and design is critical when implementing correlated facets.

Computed information such as the average rating or average price of a given item can be created at search time and appended to facet values to add additional information scent, guide emphasis, or influence the order of value presentation.

From the presentation perspective, these types are mapped into the following types of facets:

Examples of Ranges:

C.3. Search Facet Groups

Facet grouping can be easily illustrated with the following example from Macys.com:

Macy's facet grouping example

The “size” facet is actually a group named “Size”. It has four facets related to a group.

Another example shows how facets can be organized into tabs to provide a better UI:

Facet tabs example, first tab
Facet tabs example, second tab

Although tabs are an option, they can create friction for the user because they hide facets, causing users to have to remember what they selected unless they switch back and forth.

Search Facet Groups are not supported in the default SAP Commerce Accelerators. This functionality can be added as part of customization.

Facet group example

C.4. Search Facet Visibility

There are three possible options for facet visibility rules:

In SAP Commerce, the third approach is implemented.

C.5. Search Facet Type UI

C.5.1. Fixed List of items/numbers to select: Single Selection

The most common way of representing a single-selectable fixed list of items/numbers is a list of hyperlinks. SAP Commerce Accelerators also use this approach by default.

Hyperlink-based single-selection facet

Alternative options (customization is required):

C.5.2. Fixed List of terms/numbers to select: Multiple-selection

The most common way of representing a multiple-selectable fixed list of items/numbers is a list of checkboxes. SAP Commerce Accelerators also use this approach by default.

Checkbox-based multiple-selection facet

Alternative options (customization):

Checkboxes with manual form submit

There is a special case for organizing hierarchical structures into tree-like navigation, such as dates (year → month → day) or categories. Please read “Hierarchical facets” for details.

For large lists, providing a “Select All / Unselect All” action should be considered. It may help the user with the case of filtering out only one item from the list (an inverse operation to selecting an item).

C.5.3. Fixed List of icons to select: Single selection

The most common way of representing a single-selectable fixed list of icons is a list of clickable icons.

Clickable icon facet example

For the single-selection list of swatches with a submit button (“parallel selection”), you need to consider an option that removes the facet setting. For swatches, it may not be easy, because the icon for that is not common and may not be reliably recognizable.

Other types of facets of this kind:

Icon facet variations

Alternative options (customization):

Examples:

Icon facet examples

A product rating facet also relates to the “fixed list of icons” facet category:

Rating facet example

For large lists of icons, providing a “Select All / Unselect All” action should be considered. It may help the user with the case of filtering out only one item from the list (an inverse operation to selecting an item).

C.5.4. Fixed List of icons to select: Multiple selection

This approach is not implemented by default, but can be easily added via customization.

Alternative options (customization):

C.5.5. Ranges: Free Ranges

Free-range facets are not implemented in SAP Commerce Accelerators.

This concept is usually implemented as a slider with two knobs. Min/max are parameters that can be dynamically defined by the results returned or fixed as a facet parameter.

Free-range slider facet

The range is called “free” because the step is not clearly defined in the UI.

C.5.6. Ranges: Fixed Range Groups: Single Selection

Fixed-range single-selection groups are implemented in SAP Commerce Accelerators as a list of fixed groups (from–to).

Fixed-range single-selection groups

Alternative options (customization): sectioned slider with two knobs when min/max are defined.

Sectioned slider with two knobs

C.5.7. Ranges: Fixed Range Groups: Multiple Selection

According to this concept, the system calculates the ranges based on the search results to deliver a better customer experience.

Fixed-range multiple-selection groups are implemented in SAP Commerce Accelerators as a list of fixed groups and checkboxes (from–to).

Fixed-range multiple-selection groups

C.5.8. Dynamic Range Groups

Dynamic Range Groups are not supported by SAP Commerce Accelerators by default; customization is needed.

For example, if prices are between 0 and 60, the following groups should be generated:

price:[* TO 20]  -> 23 items
price:[20 TO 40] -> 42 items
price:[40 TO *]  -> 33 items

For example, if prices are between 0 and 300, the following groups should be generated:

price:[* TO 100]   -> 23 items
price:[100 TO 200] -> 42 items
price:[200 TO *]   -> 33 items

The algorithms behind this may differ. For example, the system can have a defined step and merge similar data into groups dynamically. Alternatively, it may perform basic cluster analysis to reveal groups efficiently. Think about the following example: 90% of your results are evenly distributed between $0 and $10, the remaining (10% minus one) are evenly distributed between $900 and $1000, and one costs exactly $800. What ranges should your system generate for a facet?

Aliexpress has an interesting example of how dynamic ranges may work:

Aliexpress dynamic price ranges

It has a fixed number of price groups, but the ranges are dynamic. For each range item, Aliexpress shows a percentage of the users who bought products in the price range.

The minimum price for the example above is $0.04, and the maximum price is $7880. Aliexpress split this range into five:

  1. 0.04 – 1.21 — 75,334 results — 10% of customers bought in this range
  2. 1.21 – 6.38 — 187,912 results — 38% of customers bought in this range
  3. 6.38 – 24.10 — 342,929 results — 38% of customers bought in this range
  4. 24.10 – 62.90 — 510,909 results — 11% of customers bought in this range
  5. 62.90 – $7880 — 306,862 results — 3% of customers bought in this range

It is unclear to me how Aliexpress splits the whole range into five subranges. The first guess could be that the calculation is based on cluster analysis and finding the middle points between the averages. With this approach, Aliexpress can detect five clusters. For the ranges above, their centers are the ranges’ middles: 0.625, 3.795, 15.24, 43.5, and 3971.45. If you have any ideas, share your thoughts in the comments.

C.5.9. Handling empty facets

There is an interesting case when the product facet attribute (or document facet attribute in general) may be present only for some products in the search results. For the remaining ones, it is undefined. In fact, we have at least two possible values of the facet: “undefined”, “value1”, “value2”, …, “valueN”.

The undefined value can be displayed or not — it depends on the design and business need:

Handling undefined facet values

The second option is more flexible, but it exposes data-quality issues to the customer.

The following example is from Best Buy:

Best Buy collection facet example

You can filter all products with collection='Magnolia', but you can’t see all products that are not in this collection.

In SAP Commerce Accelerator, empty items are not displayed in the facet as an option.

C.6. Resetting Multi-Option Facets

There are four ways to implement a multi-option facet reset:

All checkbox for facet reset

View all facet reset example

Clear all facet reset example

Reset button and reset all example

Option #4 is recommended. In SAP Commerce Accelerators, there is no way to reset facet state. However, it is a very light and minor customization.

C.7. Aggregations in the facet values

For a better UI, items in the facet values list can also have aggregation data, such as:

Show the number of matches against each faceted filter; this helps users pick the right filters based on their search commitment and intent.

Facet values with aggregation counts

C.8. Special types of the facets

C.8.1. Color choosers

Color chooser facet example

Color swatch facet example

This functionality is not implemented in SAP Commerce OOTB.

C.8.2. Sliders and histograms

For the take-off time range, Kayak shows a histogram showing demand:

Kayak histogram facet example

Slider and histogram example

C.8.3. Tags

This approach works well if the number of possible values is very large. However, it is not a facet filter even if it is visually designed as a facet. This filter relates to Advanced Search Constraints (see above).

In the next example, tags are used for filtering by a skill.

Tag-based skill filter example

C.8.4. Horizontal Single-selection Slider

This facet is just a way of representing a single-selection list with a fixed number of values. The number of options depends on the results.

Horizontal single-selection slider facet

C.9. Arranging Facets

The ideal ordering of facets and their values depends on the dataset and the information needs of the user. Commonly used facets can be evaluated effectively through user studies and later adjusted through log analysis. You can use A/B tests for that too. In most cases, people prefer known, easily understood ordering schemes like alphabetical, ordinal, or popularity sorting. In cases where there are a large number of facets that may not all be shown, users prefer to see the most salient/frequent options displayed, with the ability to expand the selection using a “more” action.

The order of facets can be set globally (global facet order) or configured per category or per user query (personalized facet order).

In SAP Commerce Accelerators, you can arrange facets per category OOTB.

C.10. Facet Titles and Tooltips

The facet can have a tooltip, a message that appears when a mouse cursor is positioned over the facet or facet value. Many use a question mark icon to provide a hint about a tooltip.

C.11. Facet Values/Options

There are two variants for how facet values (or options) are displayed:

The values can be sorted:

C.11.1. Arranging Search Facet Values

Each facet was analyzed to determine the most natural order for possible values. Alphabetical sorting was used most frequently, particularly for free-text value types. Where range facets are presented, we force the range values into a meaningful descending order. Most facets were very easy to assign sorting strategies to.

The values can be sorted by:

Custom per-facet sorting is an OOTB feature of SAP Commerce Accelerators.

C.11.2. Grouping Search Facet Value List Items

Facet Unique Values can be grouped for better navigation. In the following example, the cities are grouped into countries:

Facet values grouped by country

Facet value grouping is not implemented in SAP Commerce Accelerators OOTB.

C.11.3. Hierarchical facets

For some facet types, using hierarchical navigation can be more convenient than ranges.

The typical example of hierarchical navigation with limited depth is a date type:

Date hierarchy facet example

Similarly, hierarchical facets can be used for categories, for example.

Category hierarchy facet example

The next example shows two-level facet navigation from carzone.ie:

Two-level facet navigation example

Hierarchical facets can be:

C.12 Facet States and Collapsible Facet Value Lists

Facets can have different types of states depending on scope:

There are three initial facet states for available facets:

Often, there’s not enough space in the UI to show all values of faceted filters in a results list by default. If the list of facet values is long:

In SAP Commerce, only the first approach is implemented.

C.13. Quick Lookup

For long lists of facet values, you can use a Quick Lookup pattern:

Quick lookup pattern for facet values

This design potentially saves time in the retrieval process for navigation-driven users. For information-driven users, it front-loads the information-scent advantage of the facet ontology, adding additional opportunities for education about the structure of the collection and presenting additional opportunities for serendipitous discovery.

D. Search Results

D.1. Banners

For a particular combination of filters, you can display a banner or banners showing product recommendations. This block must be visually different from the normal search results and titled “Our recommendations”.

In SAP Commerce Accelerators, for the basic facet configuration, this functionality can be implemented via the personalization module.

D.2. Shareable links

The link should be shareable. The user should be able to send a link to a friend, and the friend should see the same results as the user. If possible, make the link human-readable and as short as possible. Test the facet search with all facets on and the longest facet values to avoid the issue of the URL being too long. URLs over 2,000 characters will not work in the most popular web browsers.

There are two approaches to building a human-readable URL for the facet search results page:

One challenge faced when structuring faceted URLs is correctly denoting taxonomy for multiple values and multiple options. As more facets are added, the URL structure becomes increasingly complicated.

The following examples illustrate two common approaches to this problem:

I recommend using Solution #1.

In SAP Commerce Accelerators, Solution #2 is used by default.

In both cases, ensure that all parameters are listed in some predefined order (for example, parameters are listed in alphabetical order). If they are in a different order, redirect the user to the rewritten URL. This approach will ensure that you have only one unique URL for the search query.

Also, ensure that you distinguish advanced search constraints and facet constraints in the URL.

In SAP Commerce Accelerators, the search results have a shareable link. However, the parameters are acceptable in a random order, which may create SEO issues if not configured appropriately.

D.3. Pagination vs Infinite Scrolling

Infinite scrolling is a technique that allows users to scroll through a massive chunk of content with no finish line in sight. This technique simply keeps refreshing a page when you scroll down it.

Infinite scrolling example

Generally, both approaches have their pros and cons. Below is a list of them for generic use of this concept, not only for search results.

Infinite Scrolling
Pros Cons
User Engagement and Content Discovery: it may make the user stay longer on your web page and therefore increase engagement. Page Performance and Device Resources: page performance may slow down; memory consumption.
Scrolling is Better Than Clicking: users have better experiences with scrolling than clicking/tapping. Item Search and Location: users can’t bookmark their location and come back to it later.
Scrolling is Good For Mobile Devices: the smaller the screen, the longer the scroll. Irrelevant Scroll Bar: it doesn’t reflect the actual amount of data available.
Pagination
Pros Cons
Good Conversion. Pagination is good when the user is searching for something in particular. Extra Actions. To get to the next page in pagination, the user has to find the link target (e.g. “Next”), hover the mouse over it, click it, and wait for the new page to load.
The sense of Control. When users know the number of results available, they are able to make a more informed decision, rather than being left to scour an infinitely scrolling list.
Item Location. Having a paginated interface lets the user keep a mental location of the item.

The findings above are taken from UXPlanet. If you are interested in the details, please follow the link and read the whole article.

D.4. Empty Results Handling

For facet constraints, the best practice is not to allow the user to create a condition that will end in no results. However, some links on the Internet may lead to a combination of filters that is not resultative today but used to be resultative in the past.

For advanced search constraints (any filters other than faceting), a query may end with zero results.

If no search results are returned, it is recommended to provide users with something presumably useful instead of a dead end in their journey, namely:

For example, Volkswagen displays the constraints that can be removed to make the search resultative.

Volkswagen empty results handling example

Log the no-results requests and analyze the log regularly. Possibly, for some queries, you will decide to add manual rules or personalized responses.

In SAP Commerce Accelerators, the basic response is implemented. All the recommendations listed above are customizations.

D.5. Handling “incompatible” facets

There is a case when search results contain products or documents of different types that have similar (but not the same) facets that were not designed to be shown together. For example, you have large equipment and tiny spare parts in the same catalogue. Both have an attribute length, which means a measurement of the item along its longest side. However, in the case of large equipment, the item is measured in metres, while for tiny spare parts it is measured in millimetres. You have two options for this case:

The second approach has a serious disadvantage: the facet’s definition becomes too complex in terms of its purpose. The first approach is not convenient in terms of UI: how do you display both facets on the facet pane if they have the same name, “length”? Of course, you can rename them to “Length of the large equipment” and “Length of the tiny spare parts” respectively, but it may confuse the user even more than the second approach.

Another example is having facets that may confuse the user by being in the same list because they are not compatible with each other. For example, you can’t show grocery-related facets and electronics-related facets in the same list just because they look very odd next to each other.

The best-practice approach is to display only a subset of some predefined set of valid facets for the uncategorized search results when such conflicts may occur. After restricting the search results by product category, the list of valid facets will be replaced with the one configured for the category.

Clicking a link labelled “More facets” reveals an in-page menu with additional facet values with longer titles, and yes, for different lengths, you will need to make up a distinguished name. Possibly, you may want to restrict the list of “hidden” facets to avoid such conflicts completely.

D.6. Categories as Facets or Advanced Search Constraints?

This topic is well explained in the article “Over-Categorization: Avoid Implementing Product Types as Categories (54% Get it Wrong)”. The problem is that the search results can be filtered by a facet “Category” or by going to the category section. The categories are mutually exclusive, which means they cannot be combined, and users therefore aren’t able to select and see products matching multiple values within that product type or attribute. If users don’t fully understand the product type or attribute implemented as categories, things become even more problematic because the user is now forced to select something without understanding the implications.

Over-categorization is generally observed when you decide to create a new category instead of adding a facet to create a product variant.

For example:

Over-categorized product type example

These features can be used as separate facets:

Product features used as facets

Possibly, you want to use a separate “Size” section where “Regular sizing” and “Tall sizing” are grouped, and a separate facet for Neck style, “Round Neck” and “V-Neck”. You can hide the “Size” facet until Sizing is selected. All these improvements are much better alternatives to creating subcategory navigation for sizes and styling variations on the facet panel.

Size and neck-style facets example

This is one of the areas where hierarchical facets can be used efficiently.

For example, we have the following category structure:

Example category hierarchy

For example, we have five products:

Product Categories
Product ABC 1B Category B (which is a subcategory of A), Category E (which is a subcategory of A)
Product ABC 1C Category C (which is a subcategory of B, which is a subcategory of A)
Product ABC 1E Category E (which is a subcategory of A)
Product ABC 1C Category C (which is a subcategory of B, which is a subcategory of A)
Product ABC 1B Category B (which is a subcategory of A)

So there are two main options for organizing the category filter:

Product Categories
Product ABC 1B Category B, Category E
Product ABC 1C Category C
Product ABC 1E Category E
Product ABC 1C Category C
Product ABC 1B Category B

You can use unique category IDs instead of category names and resolve IDs into category names in the component that renders a facet.

Product Categories
Product ABC 1B Category A → Category B,

Category A → Category E
Product ABC 1C Category A → Category B → Category C
Product ABC 1E Category A → Category E
Product ABC 1C Category A → Category B → Category C
Product ABC 1B Category A → Category B

You can use unique category IDs instead of category names and resolve IDs into category names in the component that renders a facet.

A list of available values for the facet is formed as a list of all unique values of some function applied to the attribute or attributes extracted from the product. This function may be simple, translating a normal product attribute to a facet value without any special processing. For example, a product weight facet is likely a simple stringify function that converts the numeric weight into a string facet value. Alternatively, this function may be complex — it may extract the components from the breadcrumbs and use the result for a facet.

For tree-like categories, the first approach works well, but it won’t work when a category can have more than one parent. This case is more or less common: the product can be linked both to the product type hierarchy and brand hierarchy. Don’t miss this point when you design a facet structure.

D.7. Collapse and Expand Results

Result grouping groups documents together with a common property and places these documents under a group. These groups are used as the hits in the search result. For example, if you have ten different color variations of a t-shirt, you can display only one “group” item in the search results along with color swatches showing the variations:

Grouped product result with color swatches

Result grouping can be used together with faceting, but it may confuse users if not implemented properly.

The main reason is that when using grouping, users expect that an item in the search is represented by a group. Faceting isn’t aware of groups, and thus the computed counts represent documents and not groups.

In SAP Commerce, result grouping is part of the out-of-the-box functionality. You can specify a field used for grouping and the number of results to return for each group. You can also specify whether facets should be computed per group or per document.

Facet Navigation and Search Engine Optimization

A caveat, though, is that faceted navigation could negatively impact your website SEO. Of course, with some planning, you can take care of this problem. There are three prominent reasons why faceted navigation could damage SEO:

SAP Commerce Cloud Feature Coverage

Summary SAP Commerce OOTB Customization complexity
Drill Down Selection YES (OOTB)
Parallel Selection NO days
Non-dynamic list of facets NO days
Dynamic list of facets YES (OOTB)
Search within the results NO days
Convertible facet types (single → multiple) NO days
Search facet groups NO days
Search facet visibility YES (OOTB)
Facet values as links YES (OOTB)
Facet values as checkboxes, autosubmit YES (OOTB)
Facet values as radioboxes, autosubmit NO hours
Facet values as radioboxes, group submit NO days
Facet values as checkboxes, group submit NO days
Select box, autosubmit NO hours
Select box, group submit NO days
Colors, single selection, autosubmit YES (OOTB)
Colors, multiple selection, autosubmit YES (OOTB)
List of Icons, single selection, autosubmit NO hours
List of Icons, multiple selection, autosubmit NO hours
Ranges: Free ranges NO days
Ranges: Fixed range groups: Single selection YES (OOTB)
Ranges: Fixed range groups: Multiple selection YES (OOTB)
Dynamic range groups NO days or weeks
Handling empty facets NO hours or days
Resetting facets NO hours
Aggregations – count YES (OOTB)
Aggregations – best price NO days
Aggregations – price ranges NO days
Price slider NO days
Price slider with a histogram NO weeks
Arranging facets per category YES (OOTB)
Sorting facet values YES (OOTB)
Short facet value list = truncated full sorted YES (OOTB)
Quick lookup NO days
Grouping facet values NO days
Scrollbars NO hours
Popups for facet values NO days
Search results: banners with recommendations YES (OOTB)
Shareable links YES (OOTB)
Infinite scrolling NO days
Empty result handling NO days

Facet Search Service Solutions

Below is a simple list of products used for faceted search.

It was fun to look over all these websites and features. Every second one states that their product is the best on the market. Please tell me if some links are no longer available and help me keep this list updated.

Possibly, some providers in the list are not described properly (they provide products, not SaaS). Please let me know if you find such cases.

Special thanks

Special thanks to Matthew Chamberlin, Experience Design Associate Director at EPAM, for his valuable advice, additions, and corrections.

Bibliography

The following sources were used to prepare this article: