= "Narrow your search" widget = || '''Date''' || 2012/09/11 || || '''Contact(s)''' || François Prunayre || || '''Last edited''' || 2012/09/11 || || '''Status''' || Ongoing || || '''Assigned to release''' || 2.9.x || || '''Resources''' || Resource available || [[PageOutline(2-3,,inline)]] == Overview == This proposal aims to provide a « Narrow your search » module aka as faceted search (http://en.wikipedia.org/wiki/Faceted_search). This module allows aggregation based on criteria (e.g. keywords, organization, dates, ...) with frequency for the current search. Output view could be a list (with link to add a specific criteria to the search) and optionnaly a tagcloud view (http://en.wikipedia.org/wiki/Tag_cloud). On the client side, user interacts with facets using :  * the facets summary used to select new filter  * the facet breadcrumb which indicates which filter has been applied and allows user to remove a filter. Those 2 components are created and interact with search form and search results widgets. A first implementation has been made on geocat.ch using the internal summary module in 2008. This proposal is using Lucene faceting module to compute the summary. === Proposal Type === * '''Type''': GUI Change, LuceneSearcher * '''App''': !GeoNetwork * '''Module''': Search Interface === Links === * '''Documents''': * example http://www.geocatalogue.fr/, http://www.geocat.ch * '''Email discussions''': * '''Other wiki discussions''': === Voting History === * Vote proposed by X on Y, result was +/-n (m non-voting members). ---- == Motivations == * Improve user search experience : facets help user to quickly refine search * Better performance : Lucene facet module using its own taxonomy index is faster than computing summary. * New way of presenting information : facet could be use to provide catalog indicators using charts (http://www.youtube.com/watch?v=ISEOKOq6t2Q&feature=plcp) == Proposal == === Faceted search widgets === TODO === Facet configuration === The facet configuration define which field in the index to use to compute the summary. The configuration is stored in WEB-INF/config-summary.xml. For each facet configure an item with the following properties: * name: the name of the facet (ie. the tag name in the XML response) * plural: the plural for the name (ie. the parent tag of each facet values) * indexKey: the name of the field in the index * (optional) sortBy: the ordering for the facet. Defaults is by count. * (optional) sortOrder: asc or desc. Defaults is descendant. * (optional) max: the number of values to be returned for the facet. Defaults is 10. When an item is modified or added, the index MUST be rebuild. Configuration example: {{{ }}} Facet configuration is loaded on startup. It could be reloaded from the administration panel using the reload configuration button. === Facet response === Facet summary is returned in the XML response. The response structure is the following: {{{ ... }}} The summaryOnly=true parameter return only the summary without records. === Performance analysis === [[Image(geonetwork-test-on-lucene-faceting-module.png)]] === Changes === * Lucene * Update to version 3.6.1 * New dependency : lucene-facet * LuceneSearcher.makeSummary() * Add an option to search services to only produce the summary * LuceneConfig * Summary configuration is part of LuceneConfig * Summary configuration could be reload dynamically when the LuceneConfig is reload. === Backwards Compatibility Issues === == Risks == == Participants == * As above