Have you ever been in a situation when you’ve searched for a particular item but had a hard time finding it? As designers, we face it all the time. We have a clear idea of what we want to see in our head but when we formulate it in the form of search query what we get usually isn’t what we want. Let me give you an example. Suppose you’re looking for an “arrow” icon that will be used on your website to encourage visitors to scroll more. Apparently, you want something like this:
Or even these (please note, that even the third arrow is way less popular than the one featured above):
While the later icons are well-designed (guess who draw them), they are irrelevant to our goal. Having such icons in your search results page will force you to change the search query. This often leads to bad user experience because you need to spend extra minutes trying to find what you need.
We analyze historical data (past search requests made by Icons8 users) to suggest the most relevant options. Not clear enough? Let’s discuss a few technical details to makes things clear.
We’ve recorded your search and click data over the last year.
The data looks like this:
The process of optimizing search results is on-going. Each time when you search, then click an icon (to download it or generate HTML), we suppose this icon is relevant to that search phrase and we tweak relevancy ranking parameter for it.
Geek details: we’ve tried different solutions to store the data. We even < a href=”https://twitter.com/icons_8/status/871596277091385345″>paid $975 to Google by accident: one of us (ok, it’s me, Ivan, and I’m writing this part) left the instance idling for couple months before noticing the charges.
We appreciate Misha Brukman, the lead of BigTable at Google, for helping us to recover it, but it didn’t work; we are still short of $975.
In the end, we were choosing between Google BigQuery and MongoDB on our own server. BigQuery is priced right to store the data, but the queries are expensive.
At the time, we didn’t know how much and how often we’ll need the data, so we simply installed our MongoDB on our dedicated server that handles few other non-critical tasks.
Looking back, it was a right solution:
Therefore, we manage to run it in real time: once you search for something, we instantly adjust the search results for your next search.
When you search for a particular icon, we provide the most relevant option based on the statistics we have.
You can see raw search results in the image below. Current live version allows us to collect user requests. We collected 22m rows in 10 months:
Our adjusted search results (to be launched soon) are based on filtered data. Here you can see a JSON for search “position.” Each record contains the number of clicks.
More relevant results for your search. For example, the analysis shows that searching Fire people are more interested in the image of flame than burning building. The relevant icons such as Olympic Torch, Grill, Human Torch, Charmander, Matches are shown higher in the set while less relevant ones such as Exit Sign, Earth Element, Hot Article go down.
Another case: if you search for “PC” icon you’ll see more relevant results such as an icon for Desktop, PC Docking Station, Start Menu went down a bit.
If you’re really curious how it works you can test our product today. Specially for testing, we’ve opened our internal search console:
Try out our advanced search which allows you to customize search options. You’ll be able to test different search parameters (i.e. change the weights for various criteria) to find out what works best for your project.
We would like to ask you for a small favor. Please join us testing the service and share feedback on the product with us.
We’re here, listening. And yeah, we’re going to release it next week if nothing terrible happens.
Years ago, we made the Request icon feature: if you need an icon, you can…