Today, we are releasing Query Rules, a new feature which enables you to modify, override, & enhance the behavior of the engine’s configured ranking for a subset of the queries. We wanted to share with you how we approached this key addition to our API, why we decided to build it, and explain the design steps leading to the release today.
Before we dive in, let’s look at a few examples of what you can do with Query Rules:
With Algolia, the same relevance algorithm is applied across the entire index. We expose features like Custom Ranking so that customers can customize the ranking strategy for their needs, and achieve a great relevance for the vast majority of queries. However, in the past few years, our customers started to bring to us examples of outlier queries.
We began compiling a list of these outlier situations. Here are a few examples:
There are hundreds of examples like this where having an exception to the general rule would make sense, either to improve the relevance, or to override the ranking for business reasons.
There are two main ways to address the types of exceptions we were seeing. The natural way to handle this would be to analyze the use cases one by one and add a configuration to the engine to handle each of them individually. We could, for example, develop a form of synonyms that would transform a word into a filter. Eventually, these settings would form a merchandising tool, allowing users to tweak and override the ranking logic.
We certainly had the experience on the team to execute on this approach. Several team members, including our founders, have used, or even built merchandising platforms prior to founding/working for Algolia. However, it is exactly because of this experience that we had doubts that this was the right approach:
More importantly, we wanted to do more than merchandising and address the needs of other industries. Media sites don’t use merchandising, but they still want to promote, for example, partner content. SaaS systems may want to improve the ranking by adding rules automatically based on the output of a machine learning tool.
To do this, we would need to be able to impact search results on a subset of queries in two distinct places:
What we came up with is a rules system for queries — or Query Rules — that sits inside the engine via two modules:
Each rule has the following pattern: IF the query contains X, THEN modify Y. A condition and a consequence:
This approach makes it simple to modify the behavior of a subset of the queries, without impacting the rest of the queries. We created two types of conditions, and seven types of consequences, which together allow us to handle a variety of exceptions, including:
With Query Rules, we’re bringing to Algolia the ability to handle queries on an individual basis by making exceptions on the regular ranking strategy.
We think the approach we took has a few interesting benefits:
In fact, we like to think of Query Rules as more than a feature: we like to think of it as an extension of our engine. We have designed it to be open-ended enough to allow our users to solve their own unique problems and push the boundaries of what is possible with search.
It’s been exciting to start sharing the feature with a few beta testers — we’ve been amazed at how easily they grasped its potential, and the combinations it allows.
The two conditions and seven consequences we are initially releasing are only the beginning — we look forward to getting your feedback and learning which ones you’d like us to add next!