Funnelback logo


Faceted Navigation


The faceted navigation feature helps users find more relevant information by providing them with the capability to refine their queries based on any existing structure that may be present in your information base. This allows users to explore large volumes of content in ways that are difficult to do with standard search interfaces.

Faceted navigation is most useful when the information users are searching over can be categorised in multiple different ways. For example, a set of job descriptions may be divided into 'facets' such as job location, job industry, employer, date posted etc. Finding exactly the right job in this example then becomes much easier if users can select jobs according to their 'facets' as well as searching for them with regular search terms.

The faceted navigation feature is similar in its goal to the Contextual Navigation system, but achieves it in a different manner.

Independent facets vs Hierarchical facets

It is important to understand the difference between independent facets and hierarchical facets to fully understand how users will browse through the search results from your information base.

Independent facets are completely different ways of categorising the same set of documents. Search results should be able to be narrowed down using any or all of the available independent facets. In the jobs example above, each of the categories mentioned are independent of each other. That is to say, users should be able to narrow their search for jobs by date posted, or employer, or industry, or any combination of those.

Hierarchical facets are facets that have several different levels of selection. Users should only be able to select lower level categories once they have selected the appropriate higher level category. For example, in the jobs example above, the job location might be a hierarchical facet where users first select the job location according to state, then they are presented with further options to select job location by city, then by district, etc.

Facets and Categories

The difference between a facet and a category is essential to understanding how to set up faceted navigation correctly. A facet represents a way in which your documents can be categorised (e.g. job location), whereas categories represent actual classifications within a facet. For example, 'NSW', 'VIC, and 'QLD' might all be 'categories' within the facet called 'job location'.

There are many different ways that information resources can be categorised. When setting up faceted navigation for your collection, you must be aware of what information is available within your collection that would make useful categories. Each facet can be filled with categories automatically from several different places. The following is a list of places that Funnelback can extract categorisation information from:

For most documents, results can be categorised according to the metadata within them. For example: author, date, subject, etc.
XML fields
For XML documents, results can be categorised according to specific XML elements within them. For example, if you had a collection of XML documents representing jobs, each document may contain an <Industry> field which describes which industry contains the given job.
Metadata fields
Any document that has previously been assigned to a Funnelback metadata field can be categorised according to that field (See xml.cfg and metamap.cfg)
Document dates
The date of the document according to the d metadata class mapping defined in xml.cfg or metamap.cfg
Funnelback queries
If structure is lacking from your own information base, documents can be categorised according to whether or not they match a given query. For example, if you had a collection of descriptions of used cars that didn't explicitly mark up their manufacturer, then you could categorise the documents according to whether or not they matched the queries: holden, toyota, ford, etc.
Once again, if structure is lacking from your own information base, but has been defined using Funnelback's [gscopes | General Scopes]] system, then facet categories can be generated from this information.
Particularly of use in filecopy collections, the URL of resources can provide indications as to the likely content and/or usefulness of those resources. Therefore, allowing users to browse through available search results by URL (directory on filecopy collections) can be quite beneficial.

Setting up faceted navigation

Important note: You will need to update (or re-index) the collection before any faceted navigation settings will take effect. Remember to update (or re-index) your collection after following the steps in this section.

To begin setting up faceted navigation for your collection, browse to the Funnelback administration interface, select the collection you wish to set up faceted navigation for from the 'Manage Collections' area, and then select 'Design Results Page' from the 'Customise' tab and follow the 'Faceted Navigation configuration page' link. This will take you to the facets editing screen, where you will define your desired facets, such as in the example below.


Independent facets can be added by clicking the 'Add Facet' button at the top of the screen. For each facet you create you should type in a name for the facet (this is the name that will be displayed on the public search interface).

You should also add at least one category by clicking on the 'Add Category' button (otherwise your facet will always contain zero documents). For example, in the screen shot above, there is one facet named 'Department'.

For each category that gets added to a facet, you will need to define where its information will come from:

  • For Metadata categories - you will need to define the name of the metadata type to extract categories from - for example (If you have several metadata types that are logically the same such as '' and 'author' you may be better off using a metadata field category). Note: this is not supported for meta collections.
  • For XML item categories - you will need to define which XML element is used to record the category. For example, if you wish to use an <Industry> tag, specify //Industry. Note: this is not supported for meta collections.
  • For Metadata field categories - all you need to specify is the appropriate metadata letter. For example: t.
  • For Date field fill categories (Modern UI only) - you will need to specify the metadata letter containing the document date. Currently only d is supported.
  • For Query categories - you will need to specify a name for the category (since there is no metadata field to automatically glean the name from). Additionally you will need to specify a normal search query which will be used to define which documents are contained in the given category. Note: this is not supported for meta collections.
  • For GScope categories - you will need to specify a name for the category (since a gscope number by itself is meaningless). Additionally, you will need to specify a particular gscope number that this category should encompass.
  • For URL categories - you will need to fill in the URL prefix from which you want users to begin their navigation. For example, to browse across the subdirectories of the site, fill in For example, in the screen shot above, the facet named 'Department' has a URL fill category over 'smb://files/departments/'.

Note for database collections, you will likely want to use an XML item category, since Funnelback extracts database records into an XML format.

To create hierarchical structures, click the 'Add Subcategory' button. This button will appear next to each defined category. Subcategories work in exactly the same way as normal categories.

After defining your desired categories, click the 'Save' button. The next step will be to customise the display of the facets, if desired (see 'Facets display customisation' below).


XML fill


For the example above, a database collection has been set up to gather records from a table containing documents created by various users. The database collection will save these records as XML files.

The facets 'username', 'ID' and 'user type' have been set up: the 'username' facet allows filtering documents by the username of their creator, the 'id' facet allows filtering documents by users IDs, and the 'user type' facet allows filtering documents by the type of user (IT, management), and then by subtype (engineering or support under IT, and lower, middle or upper under management).

Searching users can filter results down to the management facet, then down to middle management, and then filter their results down to all documents created by the middle manager 'John Smith'.

XML fill may also be used for non-database collections that return valid XML results.

Metadata and metadata field fill


Here a web collection has been set up to gather documents containing correct author, title and format metadata. The 'author', 'title' and 'format' facets would allow users to select all HTML documents written by 'jane smith'.

Dates field fill (Modern UI only)


In this example the "Date published" facet would allow users to narrow down the result list depending on the publication date of the document, as mapped to the d metadata class in metamap.cfg or xml.cfg.

Date-based facets are only available in the Modern UI.

Query item


In situations where there is little or no structured metadata, 'query item' categories can be used to enable faceted navigation. In this example, the search administrator has set up search over a collection of documents about their department stores products. Users can select the 'computer', 'electronics', 'books' or 'clothing' categories under the 'products' facet, and be returned products for their selected category. For a similar approach to categorising unstructured data, see Contextual Navigation.

GScope item


In situations where categories of pages have been pre-defined according to their URL with gscopes, faceted navigation categories can be generated from these gscopes. In this example, a company's web site has been pre divided into three categories using gscopes. Pages from the intranet have been given gscope 1, pages from the external website have been given gscope 2, and product pages from their online store have been given gscope 3. The above image shows how faceted navigation would be set up to reflect the gscopes in this example that have been pre-defined.

URL fill


In this example, a filecopy collection has been set up to gather documents from the Windows fileshare at smb://files/departments (the 'departments' share on the server 'files'). In this share directory, there are various subdirectories for departments of the company: IT, accounting, sales, marketing, support, etc. This URL fill category will allow users to select a department to filter results by under the 'department' facet.

Facets display customisation

The display of faceted navigation in the main search interface is controlled using a combination of search form tags that are placed with the search template and some configuration options set in the main collection configuration.

Faceted navigation tags are already present in the provided search template and do not need to be added for the default faceted navigation display. These faceted navigation tags will only display if faceted navigation is enabled.

The Faceted navigation is defined by the code block contained with the <@s.FacetedSearch> template tags.

The Modern UI also provides collection.cfg parameters for white and black listing of faceted navigation categories: faceted_navigation.white_list and faceted_navigation.black_list

Template tags

The following tags are available to be used within Modern UI templates:

  • Category
  • CategoryName
  • CategoryCount
  • Facet
  • FacetBreadCrumb
  • FacetedSearch
  • FacetLabel
  • FacetScope
  • FacetSummary
  • MoreOrLessCategories
  • ShortFacetLabel
  • MultiCategories
  • MultiCategory
  • MultiFacet
  • MultiValues

Detailed information on these tags is available in the custom FreeMarker tags documentation.

There are a number of form tags available when using the Classic UI.


The default forms will layout facets in a format similar to the facets examples on the left of the following screenshot.


XML Interface

Faceted navigation information is available through search.xml and search.json. The feeds returned by those two URLs will be a serialisation of the Modern UI Data Model.

Technical Caveats

The faceted navigation system is built on top of the existing system for defining metadata classes and generalised scopes (gscopes). Upon editing a collection's faceted navigation configuration file (faceted_navigation.cfg), it will attempt to automatically assign unused metadata classes and gscope numbers for its own use. However, given that there is always a limited number of these available, complicated faceted navigation setups may not be possible when combined with complicated metadata field setups. You should also note that if more than 16 gscope numbers are required (for example if you specify more than 16 'Query' type elements), you will also need to use the -GSB indexer option to increase the number of available gscopes. (See Indexer options for more details)

Generating categories by URL can be processor intensive, and it is not recommended for very large collections. If you do decide to use URL based categories, it will be worth familiarising yourself with the -count_urls query processor option, which will be set automatically for your collection when you create a URL based category. (See Query processor options for more details). Additionally, when gathering from web collections, the hostname cannot be used as a category within a URL based facet - only directories (path-elements) can be used in this way.

When the document at a time (DAAT) query processing mode (See Funnelback Ranking Algorithms) is enabled on large collections, facet counts are produced as estimates of the total matching result set. Such facet count estimates may frequently differ from the size of the result set produced after clicking through to the facet category. This discrepancy can be reduced by increasing the number of documents scanned with a larger DAAT value, however doing so will increase query response time (See query processor options for more details).

See Also

top ⇑