Plugin faceted navigation interface
Introduction
Faceted navigation can be configured as part a plugin. This allows a plugin to define faceted navigation to support the other functionality provided as part of the plugin. For example you may wish to write a plugin to gather content from a new type of social media and include some default facets to display in the user interface.
Interface methods
To provide faceted navigation configuration, you will need to implement the FacetProvider interface.
The FacetProvider
interface has a single method:
String extraFacetedNavigation(IndexConfigProviderContext context)
Since facets are defined at a profile level, the IndexConfigProviderContext
provides both a collection and profile, and extraFacetedNavigation
will be run for every profile.
Additional facets can be supplied by returning a JSON similar to the API.
GET /faceted-navigation/v2/collections/{collection}/profiles/{profile}/facet/{id}/views/{view}
This expects to return a list []
of Facets. The id
,
lastModified
and created
fields do not need to be set.
When building a plugin configure the faceted navigation using the faceted navigation configuration screen in the administration interface. After configuring your facets, copy the JSON from the facet configuration JSON tab on the preview screen for the facet and omit the id , lastModified and created fields.
|
For example:
[{
"name": "Authors",
"facetValues": "FROM_SCOPED_QUERY_HIDE_UNSELECTED_PARENT_VALUES",
"constraintJoin": "AND",
"selectionType": "SINGLE",
"categories": [{ "type": "MetaDataFieldCategory", "subCategories": [], "metadataField": "author" }],
"order": [ "SELECTED_FIRST", "COUNT_DESCENDING"]
}]
Facet names must be unique within the profile. Facets defined within the profile will be used in preference to facets defined from the plugin if both define a facet with the same name. |
Usage
Facets will automatically start appearing in search results after the plugin is enabled on the profile.
Some facets will require a reindex to take effect. |
Logging
Log messages from the extraFacetedNavigation
method will appear in the collection’s user interface logs.