Skip to main content

A portlet that allows searching by metadata

Project description

Change history

slc.clicksearch Changelog

1.4.4 (2010-10-04)

  • If Products.ATContentTypes>2.0b2 is in use, remove getEventType from searchable attributes, since it does not exist any longer (gerken)

1.4.3 (2010-01-21)

  • Escapeing the unique keys from Indexes to strings (gerken)

1.4.2 (2010-01-11)

  • Add metadata.xml (jcbrand)

  • Add z3c.autoinclude.plugin entry point in (jcbrand)

1.4.1 (2010-01-04)

  • Adding missing import (gerken)

1.4.0 (2009-12-10)

  • Added basic documentation of customization features (gerken)

  • Hook for translated titles in the DefaultIndexView (thomasw)

  • Show the “Reset” link on the portlet only if there’s more than one metadatum (thomasw)

  • Modularised the clicksearch result display. Rather than having a hard-coded section in the template, the result view calls an adapter (browser view) based on an item’s portal type. A generic catchall adapter exists that uses the previous template’s code (thomasw)

1.3 (2009-09-18)

  • changed some datatypes from text to lists. Before there were stored as text but always tokenized and consumed like lists. The Edit view for the portlet will look different. Data will be converted on first portlet loading (gerken)

slc.clicksearch 1.2 (2009-06-17)

  • updated svnignore (pilz & thomasw)

  • made UI prettier (brand)

slc.clicksearch 1.1 (2009-05-12)

  • Packaged egg (pilz)

slc.clicksearch 1.0 (2008-03-31)

  • Initial port

Detailed Documentation


This package provides a way to navigate using metadata, which can make sense if there are several different types of metadata categories which categorize the content. In our use case, we have Thesaurus, Category, Country, Language and NACE Code and about 10.000 items to filter on.

It should be possible to browse the search results by clicking values from the different metadata. If I click a value, the search results are restricted by that value. If I broaden up my search again by clicking on a special link, this criteria is removed again.

There is a ClickSearch Portlet on the left with one section for each metadata element. Each section has the name of the metadata element as title. Then it lists some of the most popular values of the metadata element as links. These “most populars” are configurable from within the portlet.

A more link below the top values allows selecting from the total amount of values. Clicking on “more” turns up an extended selection page temporarily replacing the body area which has enough space to list all values and some explanation about their meaning. This is particularly useful for complex metadata like Thesaurus, Subcategory and NACE (several hundred entries or more in treeform). They will not be displayed as a popup any more. Instead the whole tree will be embedded in the page. The user selects a term and returns to the search results.

If a user has selected an item and the search results have been narrowed down, he can undo this narrowing by broadening the search back again. As example the user clicks on “any Country” to remove the filter by country again.

Customizing the widget

It is possible to customize the portlet widget. That way you can create a different selection meachanism depending on the index type. For that you need to provide a new browser page for Products.ATContentTypes.content.topic.ATTopic with the name “slc.clicksearch.%s” % INDEX_NAME where INDEX_NAME must be the name of the index. BE CAREFUL, do not use a normal browser view here, because the semantics of __call__ are different. __call__ gets called with two parameters, index and box_config. index is just the index while box_config is the configuration. Please see slc.clicksearch.widgets.widgets for examples

Providing better Results

(OSHA Specific, should not be part of this package anymore later on)

The result list should show the title and the first 200 characters of the description for each result. The object type, the creation date and the date of last change indicate type and freshness of the information. In addition the external link is displayed where the item will link to. Additional metadata is given like “Language”, “See also” and the provider of the information.

While images are not so useful in this case, an image of the linked homepage can be seen when moving the mouse over the remote link.

This result list must then be optimised based on the results of a user search behaviour analysis which turns up what users are really looking for. If for example a certain group of users is searching by CAS Number, showing that number in the result list would give a benefit.

Test setup

To start experimenting, do the following:

  • add a new topic called “Click Search”

  • configure the topic to show a subset of your data, e.g. only the links

  • On this topic add a Clicksearch portlet on the left

  • configure the portlet to show metadatum Subject and allowedUsersAndRoles

  • provide some values which you are going to use in your site

  • In ZMI set the property layout to clicksearch on the click search folder, this will show the result list immediately

Add support for new indexes

In this example we want to support a hierarchical multilingual thesaurus stored in atvocabularymanager. For that we need:

  • a portlet widget that shows the hierarchy

  • A show more page which gives access to the full tree (using VocabularyPickerWidget)

Preparations First we need to add the vdex vocabulary file from the data folder to the ATVocabularyManager. Then we need to make this new metadata element available to the content types by schemaextending them and adding an index and metadata to the catalog.


  • Jan-Carel Brand ( GmbH)

  • Wolfgang Thomas ( GmbH)

  • Alexander Pilz ( GmbH)

  • Patrick Gerken ( GmbH)

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution (54.1 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page