views:

157

answers:

9

Our application displays tons of valuable information to our users in a table. We have a filtering capablity that is based on boolean/logic searches. Even after coaching, users still tend to not understand how to use filters because AND OR > >= etc are foreign to them. This filter is easy for programmers since it is easily translated into code. Any examples on how this can be made more user-friendly and less prone to error?

+2  A: 

In the past, when I needed to solve this problem, I presented the users with a list of items (in one or more columns), and gave them a single text box to type text into. I would then match the text against the text in the columns, and collapse the list (removing records that do not match) as they type.

This approach reminds users of Google. Everyone knows how to Google.

If you don't like the idea of presenting a large list of all items initially, you can show an empty results pane first, and display results after a search is typed in.

Robert Harvey
A: 

I think Django's built-in admin interface has a very intuitive UI for filters.

There's a simple screenshot in the docs but there's a lot more you can do, especially when filtering on dates.

You might want to take a closer look at Django's admin interface to see if you can apply some of their tricks to your case.

Steve Losh
A: 

I would think something similar to MS Access Query generator. You may also want to have good context sensitive help system that will guide first time users.

grigy
+2  A: 

Convert operators to plain English text and ask them to select from it. For eg: To

Show me all Books whose author is [text field] and the price is [less than/greater than] [text field]

[less than/greater than] is a dropdown list

[text field] is an input box

The resulting text after the user has filled in all the fields should result in plain simple English

Eg: Show me all books whose author is Stephen King and the price is less than 10 $

I used this in an app of mine when I used to freelance and the users loved it. Using some nifty UI programming you can give options to expand the filter to n levels.

Bobby Alexander
+1  A: 

you can provide some preset filters for the most common queries to that table - if that's possible with the application you are using

you can provide a "count instead of display" mechanism so the user sees how many rows he/she will potentially retrieve

you can provide them a Wiki page with some examples online

you can give them a QBE tool

hope that helps good luck MikeD

MikeD
+1  A: 

In my experience you are simply not going to get end users to understand the difference between AND and OR conditions. Therefore I build my filters so that ANDing or ORing is built in. In general, my logic is as follows:

  1. Criteria for different fields are ANDed together to restrict results.

  2. Multiple values for the same field are effectively ORed together and then ANDed onto the criteria for other fields. I generally detect input into a single field of comma-separated lists (translated to IN ()), dash-separated ranges (translated to BETWEEN), wildcard values (translated to LIKE), and any combination (for example Customer ID: 1-10, 50, 52).

I find that most users intuitively understand this system.

Of course, from time to time a different interface with some degree of ORing is required and in those cases I generally have a section of the search user interface in a panel or group box labelled "Any of these is true".

Larry Lustig
+1  A: 

I have recently been working on this problem. My solution is to be more descriptive, to use words instead of symbols and to change the words where it allows for a more readable layout. To illustrate, imagine the filter expression:

Breed == "Spaniel" AND (Age == 2 OR Colour == "White")

Certain linear Query builders might write this:

 (  And/Or Field    Operator Value
[ ]        [Breed]  [=]      [Spaniel]
[1] [AND]  [Age]    [=]      [2]
[1] [OR]   [Colour] [=]      [White]

Or a hierarchical one may display this as:

AND
    [Breed] [Is Equal To] [Spaniel]
    OR
        [Age]    [Is Equal To] [Spaniel]
        [Colour] [Is Equal To] [White]

Both of which might be readable to a developer but not so readable to the layperson.

My solution is more like:

Show ALL records where
    [Breed] [Is Equal To] [Spaniel]
    Show ANY records where
        [Age]    [Is Equal To] [Spaniel]
        [Colour] [Is Equal To] [White]

So borrowing from the hierarchical approach but changing the AND and OR to an ALL or ANY. This means it can be read from top to bottom a little more easily.

Chris Simpson
+1  A: 

In web applications, telerik had a good idea with their grid, you should be able to do that in desktop applications too.

Nicolas Dorier
I think this would help. With drop down operators (like =, >=, <). If the text field is blank, then don't filter by them. I am going to work up a prototype and try it out.
0A0D
We ended up adding a "Multi-Fields Search" checkbox, that when checked, makes the search filter AND so in essence COL1 AND COL2 AND... this works for most scenarios
0A0D
A: 

Theresa Neil illustrated several approaches for building complex rule interfaces (AKA predicate clauses) in the iTunes Solves the Nested Clause Dillema post. Some good examples there. I really like the way Apple does it in iTunes (although, I don't use iTunes).

Alek Davis