Flamenco

University of California, Berkeley

Introduction

Flamenco is a web-based interface for browsing large collections of items such as documents or photographs. In a Flamenco collection, each item is assigned one or more category terms from one or more facets. A facet is a set of categories; for example, buildings could be classified under a "material" facet (with categories such as "brick" and "wood") and a "location" facet (with categories such as "France" and "Winnipeg"). In a hierarchical facet, the categories are arranged in a hierarchy tree. So, in our example, the "location" facet could be hierarchical, with "Winnipeg" a subcategory under "Manitoba", and "Manitoba" a subcategory under "Canada".

We assume that at this point you have a collection of items that have already been assigned into categories. (To give you a quick start, the Flamenco distribution includes a sample collection.) This document explains how to set up Flamenco to provide a flexible web-based interface for browsing and searching your collection.

About the Project

Flamenco was developed as a research project in the School of Information Management and Systems at the University of California, Berkeley. For more details on the project, see the Flamenco website or publications about Flamenco.

About the Software

Flamenco is written in Python and uses the Webware application toolkit. The following diagram illustrates the Flamenco software architecture. The blocks labelled in a monospaced font are Python modules. The blocks in colour are part of Flamenco; the blocks in grey are not.

Flamenco, Floogle, FrankenMatrix, etc.   FlamencoStyle
components InterfaceBase Style
metadb Page logging Page
query lucene html store css
Lucene MySQLdb WebKit MySQLdb WebKit
Java MySQL MySQL
Faceted Metadata User Interface UI Persistence Stylesheets

Metadata about items in the collection is stored in a SQL database. Flamenco uses MySQL, though any SQL database would be sufficient. MySQLdb is the Python interface module to MySQL. Flamenco also uses the Lucene search engine, written in Java, for its full-text search feature. If Java or Lucene is unavailable, full-text search is implemented using MySQL. The metadb module is the core of Flamenco's faceted metadata implementation, providing an abstraction layer on top of the SQL database and text search functionality.

The html module provides utility functions for generating HTML. The components module uses information from the database to build parts of Flamenco's user interface. These parts are combined and laid out into Web pages by the Flamenco module. Floogle and FrankenMatrix are other variations of the user interface that were tested and compared in our user studies.

The CSS for the user interface is dynamically generated by the FlamencoStyle module, which builds on css, a CSS rule generator, and Style, a special kind of Page for delivering CSS instead of HTML.

WebKit, which is part of Webware, serves the generated pages and stylesheets.