Create a new plugin project

The source code for a plugin must be set up using a pre-defined folder structure that includes a set of standard files and plugin-specific files.

A command line tool is used to create a new plugin project from a template.

This tool creates the folder structure required for a plugin and creates the basic java files required to start working on your new plugin.

The template is defined as a Maven archetype template and will always produce a folder and file structure based on the current version of the plugin framework.

When you create a new plugin you need to have the following information:

Plugin descriptors

The following descriptors must be defined when creating a new plugin:

Artifact ID

The artifactId defines the name of the plugin. The name should be concise but describe the function of the plugin.

Group ID

A groupId defines your organisation/subgroup. This should be based on your organization’s domain name. e.g. If your organization is ExampleORG and it has a domain name of then you should use com.example.plugin.

Package name

The package name identifies the plugin in Java. It should follow the format GROUP-ID.ARTIFACT-ID.

Plugin name

A human-readable name for the plugin, for display in the plugin administration pages in Funnelback.

Plugin description

A short description of the plugin, also be shown in the plugin administration pages.

Interface templates

You also need to know what functionality your plugin will implement. If you provide these at creation time the template will create the relevant java files that include required imports and methods to make it easy to start writing your code.


Only works for a custom data source. Lets you create a custom gatherer, which will get documents in unique ways.


Lets you create a document filter or HTML document filter for modifying documents before they are indexed.


Lets you hook into different parts of the indexing process; providing metadata mappings, external metadata mappings, gscopes or to kill documents


Lets you provide faceted navigation configuration.


Lets you hook into the servlet request and response lifecycle by implementing the SearchServletFilterHook interface


Lets you write code that enables you to manipulate the query processing and search results or provide custom faceted navigation category sorting.

Plugin scope

A plugin can run on a data source and/or a results page. These flags indicate if a plugin applies in a certain scope and will also determine if you can enable the plugin from the administration dashboard on a results page or data source.


The plugin can be run on a data source. Plugins that implement the following interfaces should run on a data source:

  • gatherer

  • filtering

  • jsoup-filtering

  • indexing


The plugin can be run on a results page. Plugins that implement the following interfaces should run on a results page:

  • searchLifecycle

  • facets

  • search-servlet-filtering

See also