= "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 || == 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 == === 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 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 * sortBy: the ordering for the facet. Defaults is by count. * sortOrder: asc or desc. Defaults is descendant. * max: the number of values to be returned for the facet. Defaults is 10. Configuration example: {{{ }}} === Facet response === Current implementation produce (see xml.search service) : {{{ }}} === 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 (like the fast option but really fast / only summary) * Add config file to define * criteria : MUST be in the index * criteria type : String|Number|Date * agregation type : * String : count * Number : count|equalInterval + classe ?| quantil + classe * Date : count|annualy|monthly|daily * sort option (count|name) === Backwards Compatibility Issues === == Risks == == Participants == * As above