Take the general case of entries classified based on tags - a QA forum such as SO, a traditional forum that's to be designed without categories, a list of articles or blog entries, or other entity types such as pictures, bookmarks, etc.
There are few navigation or filtering techniques that are in common use, such as search boxes(common), progressive filtering (delicious?), and tag clouds (nobody likes them!).
There is also an interesting design that relies on 'interesting tags' and 'ignored tags', which is the focus point of this posting. The design basically provides text entry fields so that the user can add to either the interesting tag set or the ignored tag set, then options are provided to filter based on either of the sets.
Here are some examples of possible variations on this design (the O's are radio buttons or exclusionary selection):
Design one: Simple design, uses both interesting and ignored:
Interesting tags: |___________________| (X)tagA (X)tagB
Ignored tags: |_____________________| (X)tagC (X)tagD
O. Show all tags (ie ignore filters)
O. Show entries with any interesting
O. Hide entries with any ignored
Used here: http://askbot.org/en/questions/. Also used at SO, but with highlighting and graying out, not actual filtering out.
Design two: give choice for the logical combination of the tags in each set
Interesting tags: |___________________| (X)tagA (X)tagB
Ignored tags: |_____________________| (X)tagC (X)tagD
O. Show all tags (ie ignore filters)
O. Show entries with any interesting O. Show entries with all interesting
O. Hide entries with any ignored O. Hide entries with all ignored
Design three: drop ignored tags altogether:
Interesting tags: |___________________| (X)tagA (X)tagB
O. show all tags (ie ignore filters)
O. show entries with any interesting
O. Show entries with all interesting
Some comments on the above:
More complex combinations can be provided by the search box. GUI based filtering should focus on the simple use-cases that are common to most users.
On design two: I really think that for the case of interesting tags, there should be provided a choice between applying ALL or ANY of the tags in the set. The reason behind this is that tags can have hidden facets in them, for example a subset of the tags can be related to places (country names for example) another set to topics. It would be useful in this case to AND tags from more than one facet (eg: 'Paris', 'museums'). In other situations, where tags are related, the user could be interested in ORing the tags (eg: 'UX','GUI'). On the other hand, ANDing on ignored tags is not of much value, and adds some complexity.
Considering all of the above, which of the designs do you think would provide better usability and utility. Do you have experience in providing any of such designs and how it was received by the users. Do you have ideas for better designs to fulfill the same goals.
[tag]
and allow for exclusion using-
signs.[]
around tags, but have the search engine solve it. If a word is a tag, filter on that tag, but also include entries that don't have it as a tag, but only as a word somewhere in the searchable text. In other words: on top of normal word filtering, entries would be included that do not have the word in the searchable text, but do have it as a tag. And that does happen: questions being tagged for a development language hardly ever repeat that in the actual question.