Over a decade ago, I started my software development career. A search experience within my applications was the furthest thing from my mind. From then to the present, Search has become an unavoidable reality of not just software development, but our everyday lives.
Data giants like Google, Duck Duck Go, Yelp, and Facebook all survive on providing users with great search experiences. They connect us with precise data quickly and effectively, allowing us to carry on with our everyday lives.
It’s easy to take Search for granted. If you’ve read this far, you may be realizing that Search is an essential feature. This post guides you through the mindest necessary to start building a great search experience in your applications, regardless of your technology choices.
Search is an essential feature in data-dense applications. Without it, your users can become frustrated, lose faith in the helpfulness of your application, and lose precious time. With it, they can feel empowered and ready to tackle any problem in front of them.
What Is Search
Let’s start with the obvious, and describe what Search is, and what it isn’t. The dictionary describes the general term of Search as
to look into or over carefully or thoroughly in an effort to find or discover something. –Meriam Webster
The critical word in the general definition is discover. An inquiry starts with a vague understanding of the subject, and with very little knowledge about Context. Typically, it is our application that understands the subject and guides our users to the answer. In regards to Search, we (the application, developers, service) hold the power to help our users.
Critical Parts Of Search
To understand a more basic “Search”, I’ll point to the world’s most famous business tool, Microsoft Excel. If you take a look at a typical spreadsheet, notice the rows and columns. This tabular data can be filtered to create a specific view for us.
Excel is a prime example of what I like to think of as a Filtering and Sorting tool. Filtering allows a user, who may have an understanding of the data, to create new perspectives. These perspectives bring insight, and yet the user is in control at all times. Additionally, Excel gives users the ability to sort the filtered data, giving relevancy by the sorted column. These are essential mechanics when dealing with data. That said, it is a different experience than most Search experiences users have day-to-day.
Although it may seem pedantic, I like to make a clear distinction between Search, Filtering, and Sorting. They all can have a significant impact on a user’s experience, and it is an excellent idea to understand when each is needed.
Precision and Recall
You can attribute a great search experience to two key concepts. While you may not know them by name, you innately understand the concepts of Precision and Recall.
Let’s imagine a fictional result set of ten items. We may suppose that two of the ten results were relevant. You may also say that our results have preciseness of 20% (2/10). This fraction is our precision.
Looking at the same result set of 10, we know that our complete dataset has at least 20 known relevant items. That means we are still missing 10 items, giving us a 50% recall rate.
The goal of any valuable Search experience is to increase precision and recall rates. There are no industry benchmark numbers for Precision and Recall to aim for, so testing and iterating for each scenario is vital to improving the user experience.
To read more about the technical aspects of Precision and Recall, I recommend the Wikipedia page.
Understanding Your Data
As an inexperienced developer, there are times that I would shove data into a data store, and be satisfied with any returned results. This method of thinking was a disservice to my users, and before building any applications, I should have taken the time to familiarize myself with the data.
Nowadays, before building any search experience, I think about several facets of the data, also known as Context. The following section describes some example contexts, you may or may not have thought about, and more importantly, your users may be implicitly or explicitly expecting you to understand.
Categorization is the most straightforward Context to understand. If we’re talking about food, you may have categories of sweet, savory, hot, and cold. If you have a data set of cars, you may categorize them by body type, manufacturer, or seats.
Geographic contexts are increasingly important. It makes sense to provide implicit geographic boundaries when allowing a user to search. For example, if I were looking for a place to eat, I would most likely want to find a location within a predefined radius: within 5 miles of my work, in a major city I was about to visit, or a vacation destination I was planning on visiting. Most search engine services use some implicit location awareness to provide relevant search results.
Time is inherent in many search results. If I were a medical doctor searching for cures in a library, I would want to see the most recent advancements in medical discoveries. Another more common scenario is searching for a flight. Most users want to find flights within a particular timeframe. Thinking of search results within a window of time can help you craft a better experience.
Data typically has a social aspect. Ask yourself, are the results isolated exclusively to the current user, their social circle, or a broader community? Many sites exist with the social element as foundational: Twitch is generally for gamers, Pinterest for arts and craft hobbyist, Dribbble for creatives. Some sites allow social contexts to be emergent: Youtube, Facebook, Instagram, and Twitter.
I would be remiss if I didn’t mention the user interface. We must present search results in a clear and consumable manner. Some techniques that can be helpful are:
- Showing the most relevant results first
- Displaying fewer results
- Making clear why a result is relevant
- A clear call to action to continue the discovery process
- Showing helpful suggestions to increase precision
Each search scenario is exceptional, and the presentation depends on your audience.
Great Search Checklist
I’ve compiled a list of question you and your development team should discuss before building a search experience for your users. It’s essential to understand what you’ll be building.
- Do we understand the data?
- Do we know our users?
- Do we need to provide filtering, sorting, or search? Do we need a combination of the three?
- Do we understand what contexts, implicit or explicit, that our users expect?
- Is the presentation working for our users?
Technology is a means to an end, and understanding how to reach our goals is critical to success. To build the best search experience, we must do three things:
- Be empathic of our users and our domain.
- Understand the existing contexts in our domain.
- Focus on the user experience through a crafted user interface.
We need to accomplish these three challenges around Search. After solving them, we can take our knowledge and apply it to any technology we choose and build the best applications. Ultimately, we want our users to enjoy the applications we build.