Search Recall - Bloomreach Experience - Open Source CMS

Search Recall

For a product to be returned as part of the results for a particular query, each of the keywords within the query need to match a field within the searchable product information. Let's take a deep-dive into how Bloomreach uses the query to return a set of products.

 

Particular product fields are searchable

Searchable product information is driven by the data provided to the Bloomreach platform through a product feed. By default, Bloomreach will consider all fields searchable. However, if you are aware of specific fields with noisy data they can be made non-searchable by your Bloomreach representative. 

The Bloomreach system then builds an internal index of your product catalog with fields that contain all the information about the product. When Bloomreach receives a search request for a query, the query terms are looked up in this index (non-searchable fields are ignored). 

Consider this sample entry for a hoodie. Here are the fields that are typically searchable:

Field

Data

SKU ID 123456_2
Categories Apparel, Outerwear, Hoodies
Gender Male
Name Navy Hoodie
Color Navy, Blue
Description

Our logo hoodie is a must-have staple for every True Religion fan. A bold, iconic contrast stitch detail highlights the construction and adds to the premium look and feel of this quality garment. Great on its own and equally stylish with layers as the seasons change.


Men's hoodie
Slim fit
Front pouch pocket
8.4 oz. PFD knit like woven
100% cotton
Imported
This item runs small. Please size accordingly.

Product ID product_123456
Size sm, med, lge
Brand True Religion

 

These are the fields that are you might wish to make non-searchable to avoid noisy results:

Field

Data

Promotional text Summer clearance! Only 3 in stock!
Flags "Available in other colors"

In this scenario, for a query "blue hoodie", we would look within the searchable fields and find a match on both terms "blue" (in color field) and "hoodie" (in name and description field). We would not look for these terms in the Promotional text and Flags fields that were marked non-searchable.

 

The site visitor's query is interpreted and expanded

A query is the user-entered search term after going through the Bloomreach search term interpretation logic. The Bloomreach system modifies the search term in order to return relevant results while also minimizing null or zero results. The query is modified in the following ways:

 

Synonyms

Site search engines need to handle the variability in how users describe a product. While looking for a dress to wear to a formal event, one site visitor might search for all of the following items with similar intent:

  • evening dress
  • elegant dresses
  • formal gowns
  • long night dress

It is the search engine’s job to find the relevant products in the catalog regardless of how they are described. The most common way to do this is by applying synonyms. A synonym is the correct way to tell the system that elegant dress and evening dress are two ways of looking for the same products.

Let’s see how this works during a search. A shopper goes to a website to find a hoodie, and types the phrase, men dark blue hoodie, in the search box. The search engine has synonyms configured as follows:

  • dark blue has the synonym, navy
  • men has the synonym, male
  • hoodie has the synonym, outerwear

Applying these synonyms to the user-entered query, we can expand the query like this:

User-entered men dark blue hoodie
Expanded men or male dark blue or navy hoodie or outerwear

When searching for products in the search results, applying the second synonym allows the system to show navy products in addition to those with dark blue as an attribute. It also matches products with the male attribute in addition to products with men in it.

Let’s walk through an example. Suppose the user enters this query: men dark blue hoodie.

Here's the process that Bloomreach uses to retrieve products for this query:

1

The expanded query uses the following criteria to match products, which in turn must have the following keywords somewhere in the searchable fields:

  • men or male
  • dark blue or navy
  • hoodie or outerwear
2

Looking at the product information, we see that this criteria is fulfilled:

  • male matches the searchable Gender field
  • navy matches the searchable Color and Product Name fields
  • hoodie matches the Product Name and Categories fields, and outerwear also matches the Categories field

 

Since all the criteria for the query to match the product were fulfilled, the product is eligible to be in the search results. However, if the dark blue to navy synonym is disabled, then the product doesn't match because neither dark blue nor dark are in the searchable product information. However, if you disable the hoodie to outerwear synonym, then the product still matches because hoodie already matches the product.

There are several types of synonyms that get applied:

  1. User-generated synonyms: Synonyms which your team can add through the Bloomreach Dashboard
  2. Bloomreach global synonyms: Synonyms that Bloomreach has learned and applied globally across customers
  3. Query Rewrite synonyms: Synonyms that Bloomreach has learned specifically from user behavior data on your site. When users frequently refine queries or use them interchangeably (e.g. nightstand ↔ end table), Bloomreach learns and will automatically add these as synonyms. 

Synonyms help expand the query and return relevant products even when customers are looking for your product using different language than how it has been described by your product catalog. They also help return related products (rather than a zero result) when you don't carry the specific product your customer is looking for. 

Stemming/Canonicals

Bloomreach automatically applies stemming to search queries, data that is processed from the feed and global synonyms. These stems or canonicals are typically used in the same context. Bloomreach utilizes an industry standard stemmer, which result in different forms of the same root. i.e. "shirt" <--> "shirts", "dress" <--> "dresses", "top" <--> "tops".

For global synonyms, important to note that stemming is done outside of the thesuraus in the Bloomreach dashboard so users will not see the stemming process within the dashboard.

 

Autocorrect

The Autocorrect feature reduces the number of null result queries due to spelling errors and reduces the burden on the merchandising team of having to manually add a bunch of spelling errors as synonyms with the correct spelling.

When the Bloomreach system receives a query which it cannot find a match for in your product catalog, it will automatically check for spelling errors. For example, if a user types in "dreses" Bloomreach system will check if any products match that query. If no products are a match, then the system will check to see if it is a spelling error. In this case, the word "dreses" might get corrected to "dresses", if Bloomreach found no products with the word "dreses" in the product details. 

 

Query Relaxation

Typically, an e-commerce search engine can be “broken” by long tail queries that do not have an exact product match, giving the shopper zero results despite carrying relevant products. Bloomreach fixes this problem by discerning the intent of the shopper and treating some of the keywords as “optional” (in other words, relaxing the query) while recognizing the actual product type that the shopper is seeking. The result is significantly fewer queries with zero results - 40-50% less in some cases - and more happy customers.

If a query is returning zero results after it is processed with synonyms and autocorrect, the query will be relaxed. To give you an example, for a query "purell hand sanitizers" - if purell products are out of stock and there are no products matching this exact query, then Bloomreach identifies that the intent is for "hand sanitizers" and will show other in stock hand sanitizers.

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?