How often have you thrown up your hands in frustration at a site’s search experience? If you run an e-commerce site, the sad truth is that many of your users are probably doing the same thing on your site. Google has trained us all to expect miracles from a search engine, but the reality is that search is an extremely complicated and difficult problem. Google has thousands of engineers that have been tackling the issue for years; you don’t.
At Constructor.io, we’ve worked with some of the largest retailers in e-commerce to help solve this problem by creating a self-learning, autocorrecting search engine. We automatically track user behavior and feed the large amount of data back into our system to constantly improve the results — just like Google. Further, we have the ability to aggregate the data anonymously across all our customers, so we can use the greater volume of collective behavior to make better decisions about how search results should be ranked.
We’ve seen this approach lead to 20% conversion lifts for our e-commerce customers.
Based on our experience working with e-commerce sites, here are the top three things we’ve learned about what makes search frustrating for users — and what you can do about it.
Your search engine is probably working against you
Most search engines were developed to be used to search web pages. That is, they’re designed to search documents, not products. They have a lot of logic built in to decide what search terms are most relevant to specific documents. But they assume those documents have hundreds of words, when your product listings often only have a few.
Let’s look at a simple example of how this might be problematic. One way that search engines decide which words are most relevant to a document is to simply count all the words and assume that the most common words are also the most relevant. It makes sense: if a document has a bunch of references to “lamps,” it’s probably a document about lamps.
But what if the “document” is a product listing? And suppose it’s something like “iPhone Case for the iPhone 6, 7, and 8”. This “document” contains the word “iPhone” twice, so your search engine thinks that’s an important term for this item. Now suppose your site also sells the “iPhone 8.” That “document” only contains one use of the word “iPhone”, so when a user searches your site for “iPhone,” your search engine will happily return the iPhone case before the actual iPhone.
Given a product catalog of many diverse products, examples of this type of behavior crop up over and over, and cause frustrating search experiences for your users.
Search engines are usually pretty stupid
A search bar invitingly prompts a user to use freeform text to find what they’re looking for. But all too often, search engines don’t handle the details very well.
Suppose a user is searching for “cheap hiking shoes size 12.” Simple enough, right? Not quite. Although any human could quickly identify what “cheap” means in this context, your search engine probably won’t, because it’s focused on the words in the product title. Similarly, your product catalog may have lots of shoes that are good for hiking that nonetheless don’t include “hiking” as a keyword, so your search engine will ignore them. Finally, your product keywords probably don’t include features like “size 12” since the product spans a range of sizes.
The result? Your user probably gets a page that says “no results found.”
It’s really hard to get your results ranked correctly
Even if your search engine returns relevant results, there’s another problem awaiting you: the order in which it displays or ranks them. Ideally, the most relevant item appears first, followed by the next most relevant item, etc. In practice, getting your search engine to order the results in a useful way can be devilishly difficult.
The first challenge is to overcome your search engine’s desire to rank items according to the number of searchterm matches in the product title, as discussed previously with the “iPhone Case for the iPhone 6, 7, and 8” example.
One common way of overcoming that problem is feeding popularity data into your search engine, so that more popular items are ranked more highly. This gives some benefit, but often results in similar problems when inexpensive accessories or add-ons to popular products have a greater sales volume than the products themselves. For instance, razor blades are much bigger sellers than razors, so using sales volume in a ranking algorithm will show many different razor blade options in a search for “Gillette razor” — when presumably the user is looking for the razor itself.
Behavioral data to the rescue
The common thread in fixing all these problems is leveraging the behavioral data that users generate to feed back into your search engine. This data provides signals to your search engine that help overcome the limitations discussed.
For instance, if your search engine is returning iPhone cases when users search for iPhones, you can use behavioral data to correct the problem. After enough users click on the iPhone product page after searching for an iPhone, your search engine can learn to rank iPhones more highly than iPhone cases after that search.
Similarly, even if your search engine doesn’t understand what “cheap” means, after enough users search for “cheap hiking shoes” and click on inexpensive shoes, those shoes will begin to be ranked higher in the search results.
The infrastructure needed to support this system is daunting — Constructor.io has a network of servers worldwide collecting user behavior, analyzing the data, and serving improved results based on it. We also have a team of data engineers who make sure the whole process runs smoothly.
The result is a search experience that is intuitive and effective — and free of the frustration that’s all too common in e-commerce search.