October 18, 2003

Faceted Classification 101

I recently ran across an interesting site, Modern Home Design. The site offers stock plans for a variety of interesting looking houses. But perhaps more interesting, for our purposes, is the site's navigational scheme.

The site's creator uses geography as the main navigation. A visitor to the site needs to pick the geographical terrain they plan to build on. The options, as of this writing, are:

Coastal (Northern ) Southern Plains Coastal (Southern) Coastal (West) Coastal (East) Mountains Foothills Forest Desert Northern Plains Tropical Island River/Lake Shore

I found this navigation scheme very interesting. I've rarely seen geography used as the primary means of organizing information. For a purpose like this, it can be a useful way to organize information on the site. But, used alone, this method has some big drawbacks. For a user like me, who isn't interested in buying plans for a specific project, the navigation seemed clumsy. Here are a few of the issues:

  • Some of the catagories (like Tropical Island) didn't have any houses listed in them. This could easily frustrate users, turning them off to the site.
  • The terms were ambiguous. I live in Seattle, and we have Mountains, Forest, and Coastal regions. Which one of these should I look under to find a home that would work for my neck of the woods? And what's the difference between Coastal (Northern) and Coastal (West)? I had to click to find out (answer: not much difference; the Washington coast is listed in both regions!).
  • Simply browsing the site was difficult,

Fortunately, I think a faceted classification scheme would be perfectly suited to a site like this. To create a faceted scheme we'd need to identify the core attributes of the objects we're organizing, then provide a way for users to browse through these attributes (for a great example of this in action, see Epicurious' Recipe browse feature).

If I was doing this for real, I'd spend some time doing research on the site's users. I'd be looking for information about how the users view the information we're organizing and what aspects of the information they find most important. Since I'm not doing this for real, we'll just wing it.

So, what aspects of house plans are important to buyers? Certainly, we've already seen that geographic terrain can be a useful attribute, so let's leave it in. Many users likely have a size requirement in mind, so let's make square footage our next facet. I'd imagine that construction costs are important to most potential plan buyers, but the site doesn't have much information on that front (and for good reason, in that materials choices and local conditions can cause prices to fluctuate quite a bit). We're going to have to leave this out. Many users would likely care about the number of bedrooms and bathrooms, so this should be included. Finally, many would be interested in the style or genre of the house. Is it a Mies-style box or something more along the lines of Frank Gehry? The challenge with this attribute is coming up with meaningful and clear values.

So, we have a list of facets:


  • Geography

  • Square Footage

  • Rooms

  • Style

Its a decent list; not too long, not too short. And, it shouldn't be too hard to come up with values for each of the house plans on the site.

A fairly simple database should be able to power this site. I'm going to skip over the details of actually implementing a faceted classification scheme, and point to a nice tutorial by Berkeley's Flamenco project. Parts of the tutorial are overkill for our purposes (like the hierarchical nature of their facets), but it is still a good read.

Once a database is in place, the site just needs to provide users with a nice way to browse all of these facets. And, while they're at it, they should make sure to note the number of plans that fall under each facet ("Tropical Island (2)"). And, better yet, don't even display values that don't have any items in them. It should make it much easier for users to find their way around the site.