Web site search fields are weirdo UI elements. They usually give you no clues as to what to enter, so you’re left to your own devices. Do I enter a question phrase? A keyword or two? Getting to the right information using a search box is still not very straightforward. This is the reason why people don’t use them very often. Navigating a menu structure or site map is usually quicker and requires less thinking.
The role of the search field has become somewhat more important when it started to receive some interactive AJAX-style love. Many search fields will now come up with suggested results in a drop-down item when you type a few letters. This makes interacting with a free text field much more responsive and tells you if you’re on the right track with your search strategy. Autocompleting search fields can now be found on many big web sites. Google recently upped the ante with its new Suggest feature, showing a full results page preview instantly. We’ve come to a point where old-fashioned search fields start becoming a disappointment. You type, you wait for suggestions to pop up. Nothing happens. Fail.
Still, that is what happens on the main OpenStreetMap web site. Only when you hit ‘Enter’ do you get to see search results. And even though the results page is much improved since it started using the Nominatim engine and it started to incorporate results from Geonames, it still is far from perfect. Having used the OpenStreetMap search field a lot, I came up with the following wish list that would make it a much more usable thing:
- Heed My Location
- Bigger is Better
- Bigger is Better
Let me elaborate.
Playing around with this, and comparing it to the Google Maps search box, I noted a few things that would make this prototype work a lot better. Some of this is front-end hacking, some of this might need to be coded into the back end search engine, Nominatim.
Heed My Location
I assert that the big bulk of geographical name searches entered on a mapping web site fall in one of these two categories:
- Either they are local searches for something on the large scale: POI, city street, bus stop.
- Or they are global searches for something on the small scale: country, capital or major city, national park, major airports, et cetera.
It would make sense if the search suggestions would be optimized to take this assertion into account. It could do this by following this path
- Detect the user’s location when the page loads.
- When the user enters a few letters, fire a large scale name search using a small bounding box (10x10km maybe). This would be done against a dataset that includes all streets and POIs.
- Display the results, if any, in a drop-down suggestions box.
- Then fire a second name search, a global one this time, that runs against a database of important small scale features.
- Append these results to the ones already displayed from the initial local search
- If both searches yield nothing, perform a classic global large scale name search
This way, the search field response could be much improved, both in response time and in result relevance, while decreasing server load.
Bigger is Better
Improved result relevance is a good start, but it would make even more sense if the suggestions would be ordered in a way that you would expect them to. When I enter ‘nieuwe’ in the search field and I am in Amsterdam, there’s bound to be a lot of results: ‘Nieuwe’ means ‘New’ in Dutch and a lot of streets start with those letters – both important streets with lots of traffic and businesses and small streets with little or no public destinations on them. I assert that most searches are going to be for the important streets, so I want those to show up at the top. This is what happens in the Google Maps search field and I think they succeed in predicting the most relevant results for a geographic search quite well.
Bigger is Better
I’m not about to repeat myself, this is about the size of the search field. To let users know that the search field is actually a very friendly and fast way to get to the part of the world you want to see a map of, it should be more inviting and more prominent on the site. The way to do this is simple, make it bigger – like I did in my prototype. OK, maybe not that big – but it does make a lot of sense. Users are afraid of free-form UI elements so we need to make them less intimidating. Believe it or not: bigger text fields are less intimidating than small ones, and if they work well, they are an important part of the user interface, and that importance should be reflected by its relative visual impact.