Search Vs. Filter- what is the difference
From the view of the user (not from a technical view)- What are the main differences between searching and filtering data, in order to get specific results?
i.e.- in both cases the user is looking for specific data so why should he care which method is used to find it?...
would you say these two methods are mostly the same (in the eyes of the user)?
If not- when would you use each?
Very short answer (time pressed!):
Filtering takes an existing full list, and removes items based on criteria that match/don't match.
Search takes a blank slate and adds to it based on criteria that match/don't match.
Another take: in most circumstances, particularly when the task is not a known-item query, searchers don't know the precise keywords they need to type in order to acquire their target. So although the mechanism or function they are using is a "search", actually they want to explore and browse the information space. Jared Spool and UIE have explored this topic
Filtering - if we are talking about iterative, faceted search - allows users to enter a vague term and then iteratively refine it. This is the "Paradox of the active user" in action.
These "active users" don't have time to learn about the information space so they go ahead and search anyway. When the results are received for that search, they then start learning about the information space and refine/restart their query.
The design principle of timely feedback works all the way through this experience, so "Spotlight-style" results all go towards helping make the query reflective of the information space and of the person's original intention.
For a good example of both these techniques at work, try to find yourself a new TV at John Lewis or any number of e-commerce sites.
I like Alastair's answer, but to add a bit to it.
Filter: Only filters based on a single criteria, such as the name and leaves the ordering intact.
Search: Applies all metadata and complex algorithms to the search such as boosting. Search is more complex, because you have to rank the best results first. (example: Google) Filtering doesn't care about that.
@Glen, the bit about ranking the best first is kind of wrong :). OK, Google web search does that, but there are other ways, it has nothing to do with the concept of search itself. Desktop searches usually present "first found first". Systems that present results in a grid often use current sorting to display results. Some geographical apps even present "closest first".
@VitalyMijiritsky What it means to be the 'best' result is never specified in this answer. In your examples, the definition of best could respectively be the first found result and the geographically closest result.
From a technical point of view the two are basically the same (i.e. excluding elements from a list, based on some criterias)
From a user point of view, it's very different:
Search is done as a first step to get some data
Filtering is applied on top of the search, after the search, never before
moreover, filtering is usually performed using boolean flags or ranges (e.g. max price $100) while search input is usually free text manually entered by the user
Data filtering has been around in spreadsheet and database software for decades; filtering is generally where you start with a full dataset and then filter it down to relevant results. The filter criteria should correlate with the data model. As far as the form goes, yes a keyword-only filter is essentially the same as a search, and an advanced search could be similar to a filter form ... but I guess it just comes down to where you're starting from - are you starting with results and then subtracting, or starting with no results and then displaying only relevant ones?
You search when you know what you want to find. Search is active
You filter when you don't know what you don't know about what you are searching for. Filtering is passive
I explore it a little bit in my essay Slaves of the feed - This is not the real time we've been looking for
This is the most thoughtful answer ever. The most clear definition and the exact distinction. Because otherwise, UI may be implemented to simultaneously presenting search and filtering terms in the same place, and for users the only difference will be the sets intersections: filtering assumes that you create a subset. If user is allowed to select larger subset than the search terms, then it effectively creates the new search terms, and is not filtering, by definition (but may be accomplished using the same UI elements). Your thought helped me a lot to clarify and improve the UX of my product.
There are some really good answers here, but I wanted to contribute something from a slightly different perspective... time.
If you're purely using filters to limit results, then the most common expectation is that the list being filtered is 'live' and values may change at a regular interval, just as they would if the list weren't being filtered.
On the other hand, search tends to capture a 'point in time'. If I search for 'foo' and an object has a matching value, then the object is part of the search result. If after a minute (or whatever interval), that object's value for 'foo' changes to 'bar', my result set is unchanged. (at least until the next time I run the search)
Search results shouldn't appear and disappear based on changes in time. Filtered data on the other hand may change over time, if the base set of data changes over time.
Similar but not the same!
Filters are constraints (Provided in the UI) that the user Selects to limit the results. While Search tends to display all related results based on users' input of Keywords.
Notice: User can only select Filters that are AVAILABLE in the UI (User selection). When they search they can write anything in there! (Users input).
Take this example and apply it yourself. i.e. If you want to buy Adidas Running Sneakers.
You will most probably go to the "Search" text-box and input "Adidas running sneakers". That will produce a lot of results that are not only specific to Adidas or Running or Sneakers, you will most probably get Adidas running sneakers in the first result page (Accurate results). But, the more you keep going browsing the results the more you will see less accuracy, maybe Adidas but NOT Running sneakers, and then maybe Other brands of Running Sneakers, and then getting further and further from accurate results.
Now if you filter using Adidas Brand, you must only get Adidas, then if you filter using Running, you must only get Running...etc.
Filtering sounds very accurate. However, if those filters (Brand=Adidas, Type=Running, ...etc) are not provided as options in the UI then hopefully Search is provided.
Usually, search is used to select the results that contain a world that is typed by the user. Filters are used to select the results that match/not match certain criteria and are more complex. Filters can contain the classic search and can be seen as an advanced search/ a search with filters.