Search driven design in enterprise applications
In software design one of the most common goals is to design for scale and simplicity. When thinking scale and simplicity the first example that comes to my mind is Google search page.
Google search page has almost nothing in it, except for a single centric search box, yet it serves as the most popular gateway to the web. This design works great for searching the internet; can we take a similar approach when designing enterprise software?
In a search driven application design, users should be able use the application Search to directly navigate to desired locations, rather than browsing through long menu hierarchies to find a page, data item, or transaction. Similar to how people navigate across the internet. This capability may reduce or even eliminate the need to navigate applications using the existing application menu system, (though menus should still be available to people that prefer that method).
Common approach to data filtering and application navigation
- Pre-defined filters
A Common example is Microsoft Outlook Express ‘Find Message’ dialog that let the user specify filters for common fields, such as ‘from’, ‘to’, ‘subject’ and ‘message’. The benefit of this approach is that it is easy to implement and simple for users to understand. On the other side it is limited and hard to express complicated terms such as negations and logical ‘or’ operations.
- Free text search
On the pros side, it is easy to use and there are many existing implementations and software packages designed for that purpose. On the cons side, it usually yield non-relevant results that needs to be sorted manually to find the actual data the user needed.
- Combined free text and pre-defined search keyword
Common examples are Gmail and Google search page. In Gmail one can filter the messages using “to:” and “from:” keywords to filter by the sender or recipient of the message. In Google search page one can scope the search using keywords such as “site:” to limit the search results to a specific site.
Combined search syntax has the benefits of both free text and pre-defined filters. It’s easy to use yet it may enable complex search terms. There is a challenge in using powerful search syntax: How will a user learn to use the search syntax? Many applications fails in this, users have a powerful tool in front of them but has no easy way to learn how to use it. There are several ways to embed this information in an application two of my favorites ways are:
Syntax auto-completer that can suggest possible syntax as the user type the search.
Links, pre-populated with selected search terms, to navigate the application.
Other benefits of a search driven design are, the ability to use it in the API for a simple yet powerful API and the ability to personalize application view by using search bookmarks.
In a following blog post I will elaborate on implementing search driven application in Ruby on Rails using the scoped_search plugin.