Build Contextually Aware Search with Ranking Signals, Now in Beta

June 21, 2024
Team Objective

As we’re getting into the swing of summer here at Objective HQ, we’re excited to announce that Ranking Signals is moving into Private Beta today! Ranking Signals makes your search results contextually aware, by letting your search app pass parameters and query-time logic to adjust the ranking of search results.

Many Product & Engineering teams we talk with want to weave contextually relevant signals into their semantic search experience to tailor to their unique business needs or personalize results. Ranking Signals makes this possible. You can boost timely content that can get buried under older results or boost trending content so your app’s search reflects the most popular items on your site. You can also personalize search results that best match your users’ location, click history, or past purchases.

If you have a Beta account, check it out in your Console today! If not, grab one today!

Search that Understands User Context

With the launch of Ranking signals, you can now combine data consisting of numbers, dates, and booleans to get powerful outcomes, ensuring search results are relevant, contextually appropriate, and timely. When you apply a ranking_expr parameter in your search request, each Object will get a signals field with a uncalibrated_relevance and a score child field. The score field indicates the final computed value of the Object that determines the order of the search results. Control over the score provides a lot of flexibility but note that uncalibrated_relevance is not normalized, so they can vary in range or distribution from index to index. As always, with great power comes great responsibility.

Let’s look at a simple example — you’ve built a website in Python that sells all kinds of shoes. You’ve configured your Object Store and created a Multimodal Index — an Index that understands text meaning, and ‘sees’ inside images. They’re a great Index type for product & e-commerce search apps.

You might start by building search that just returns the results that are the most semantically relevant — where the human meaning of the search query matches the objects the best:


index.search(
	query="running shoes in black"
)

Now, anyone who searches "running shoes in black" will get search results that understand the intent behind that search phrase. But what if we want to start customizing that to our business goals & outcomes?

Favoring Promoted Items for a Seasonal Sale

Let’s say we want to boost the prominence of some seasonal sale products in our search results. We’ll assume that each of the Objects in our Object Store have a boolean promoted parameter that we manually set to true for all Objects included in the summer sale. We just modify our search request to look like this:


index.search(
	query="running shoes in black",
	ranking_expr='uncalibrated_relevance * (if(object.promoted == true, 1.02, 1))'
)

Favoring Based on Popular Products

Let’s say we want our search to be aware of what products in our site get the most views — whether or not those views come for search! Let’s also assume we’ve stored counts of page views for a product in a numeric views parameter. We can boost ranking for products that get over 5,000 views like this:


index.search(
    query="running shoes in black",
    ranking_expr="uncalibrated_relevance * if(object.views > 5000, 1.01, 1.0)"
)

Favoring All Items From a Brand

Let’s say we want to boost the prominence of all items from one brand. We’ll assume we have a string brand parameter in each Object in our Object Store that contains the name of the brand that product is associated with. Our search request would look something like this:


index.search(
	query="running shoes in black",
	ranking_expr="uncalibrated_relevance * if(object.brand == 'nike', 1.02, 1.0)"
)

Personalizing Items to Boost Your Users’ Favorite Color

Now let’s get wild. Suppose you know your user's favorite color and want to boost search results where the product color matches. You can achieve this by using the favorite_color parameter stored in the user's profile and the product_color field in your objects:


index.search(
	query="running shoes in black",
	ranking_expr="uncalibrated_relevance * if(object.color == user_profile.favorite_color, 1.02, 1.0)"
)

Favoring In-stock Items

And we can take those examples even further — let’s say we want to favor items in your user’s favorite color only if they are **in stock and deprioritize them if they are out of stock. That search request would look like this:


index.search(
	query="running shoes in black",
	ranking_expr="uncalibrated_relevance * if(object.color == user_profile.favorite_color, 1.02, 1.0) * if(object.in_stock == true, 1.02, .90)" 
)

AI-native Search, Batteries Included.

One of the best parts about this AI-native search future with Objective is that you get a fully-featured platform out of the box — semantic search, Ranking Signals, Text Highlights, Geofiltering, and a lot more features. So you can focus on building great search experiences for your users.

We can’t wait to see what you build!

Subscribe to our Newsletter!

Get the latest news and updates directly to your inbox.
Thank you! We'll get back to you as soon as possible.
Uh-oh... something went wrong. Please try again later.

We recommend you to read