Plugin framework

Plugins intended for use in the Squiz DXP or Funnelback multi-tenanted and dedicated v16 require a review before they can be used and this is currently only available to internal Squiz developers.

The plugin framework provides developers with a suite of options for developing Funnelback plugins.

Plugins are developed using the Java programming language and package up the extended functionality into an extension that can be enabled by a search implementer from the search dashboard.

Plugins are subject to review by the Funnelback product team prior to being installed onto the Funnelback server. See the publishing section for information on how to submit your plugin for review.

On average the product team will provide a decision on your plugin within two business days of receiving the request.

Getting started

Setting up your development environment

Install pre-requisites and configure your IDE.

Generate a plugin project

Learn about the tool used to create a new plugin project.

Tutorial: Developing your first plugin

Follow a step-by-step tutorial that covers implementation of a very simple plugin. The tutorial covers the complete process, including setup of your development environment.

Plugins - Groovy and equivalent Java code examples

For existing Funnelback developers that are familiar with writing Groovy filters and hook scripts.

Plugin interfaces

Plugins provide various interfaces which, when implemented, extend Funnelback in a number of ways.

A plugin must implement at least one of these interfaces and may require the implementation of multiple interfaces to deliver the required functionality.

The interfaces enable the implementation of:

  • Query-time modifications to the question and response data model as part of the search lifecycle, or as servlet filters that access and modify the request and response servlets.

  • A custom gatherer for use with a custom data source to enable the gathering of content from arbitrary data sources.

  • Filters that analyze and manipulate document content prior to indexing.

  • Faceted navigation custom sort comparator that implements a custom sorting algorithm for faceted navigation categories.

The plugin framework also provides a number of supporting interfaces that usually support the above use cases but can also be used standalone. These interfaces enable:

Plugin configuration

Plugins should be designed to be reusable and read configuration options from the data source or results page.

Plugins support two types of configuration:

Configuration supplied via configuration keys

Configuration keys can be defined within data source or results page configuration, which are available to the plugin via a Java map. These configuration keys are key-value pairs that are stored with the other configuration for the data source or results page and are service the configuration needs of the majority of plugins.

Configuration supplied via a configuration file

A plugin-specific configuration file can be defined to capture complex configuration for a plugin. This is appropriate when plugin configuration requirements are not satisfied by simple key-value pairs, e.g. if you need a set of keys to define a single rule that the plugin uses.

Configuration files can be defined in two formats - plain text and JSON.

Plugin documentation

Each plugin must provide documentation which provides detailed information on how the plugin works and how to configure it.

Plugin unit tests

Each plugin interface provides corresponding test classes which must implement unit tests for the plugin functionality.

Unit tests must be supplied for plugins to ensure that automated upgrades to the Squiz DXP environment can be performed safely without breaking any plugin functionality.

Submitting a plugin for inclusion in the DXP

Released plugins

The table below details the currently released plugins, and also includes details on the types of interfaces implemented and whether the plugin runs on a results page or data source.

Plugin Description Scope Interfaces

See also