Modules

Appkit’s suite of search components is modular, which means you’re able to get a working solution into place quickly using tried-and-tested components.

For more information, see the modules concepts page.

Activity Tracking

Appkit provides support for tracking all interaction users have with the application, including which searches are made, which pages are visited, which results are clicked, and more. Events can be written to a log file or passed over to a vendor-specific analytics solution, such as Fusion Signals.

Collaboration

The social and collaboration tools provided by the Social module extend the search application with the ability to store user-generated information on individual documents and document collections, and to share this information among groups of authenticated users. For example, documents can be tagged or bookmarked, and users can save search queries and add comments to individual documents.

Algorithms

The Federation Algorithm tag configures algorithms that can be used as a part of a process of search federation. Given a list of platform responses, a federation algorithm outputs one or more platform responses that are in some way derived from the input.

Interleaving is a technique for combining two or more result sets into one. Given a list of result sets, the Interleave algorithm constructs a new result set by adding one or more items at a time from each of the given result sets, in a cyclic manner, until all the input sets have been exhausted.

Kullback-Leibler Divergence Sort

The Kullback-Leibler Divergence Sort (or KLDS for short) is an algorithm for comparing and ranking a collection of result sets based on how well each result sets is deemed to match a given search query. The method used for ranking result sets in KLDS is based on estimating the term-probability distribution of each result set and comparing it divergence from the estimated probability distribution of the search query.

Score Binning is a federation pre-processing method used to reduce the effects of minor variations in relevance score values. The original relevance score values which fall in a given small interval, a bin, are replaced by a value representative of that interval.

Geospatial

The Esri Web Map tag is used within the Geo Map tag to present content from an ArcGIS web map hosted with Esri or on premises.

The Map tag displays results on a geographical map, abstracting the underlying map provider.

Media

The Media module supports on-the-fly image transcoding to mobile formats and resizing including cropping and square cropping. It further supports capturing and transcoding particular pages from multi-page TIFF files and features built in caching. The Media module also supports efficient exporting search results to PDF, CSV, and Excel.

The Excel export service is constrained by the fact that the Excel document needs to be created in memory and therefore recommended for relatively small result sets. For larger exports, we recommend using the CSV export service.

The Image tag displays images from a given field in a result. It will automatically resize, and cache the image for performance.

Rest API

The Web Services module provides a REST API for searching, storing and updating documents in a data store.

The Search API runs a query against a specified search platform and returns the results in either XML or JSON format.

The Store API lets you post data for storage and indexing in a named data platform. Data can be posted by either constructing a JSON or XML document representation directly (for example via JavaScript on the client side) or by simply pointing an HTML form at the appropriate endpoint.

With the Update API, you can post updates to existing documents in a named data platform. Data can be posted in either JSON or XML document representation directly (for example via JavaScript on the client side) or by simply pointing an HTML form at the appropriate endpoint.

Security

Unresolved directive in index.adoc - include::/app-studio/reference/modules/security/index.adoc[tag=intro]

Authentication

OAuth

Authentication against OAuth 2.0 services is possible using the individual authentication provider modules which simplify the configuration of OAuth parameters and deal with the differences that exist between common OAuth endpoints.

A general OAuth provider can be used by including the twigkit.security.provider.oauth module. This requires a custom spring-security.xml file, but it is recommended to use one of the prepackaged modules we provide for these services.

SAML

We have a method of configuring SAML authentication with a simplified process. SAML is still a complex standard and so a lot of the relevant information from the previous SAML instructions is still included here.

Appkit provides an extension for SAML based authentication. SAML is a recognised standard for authentication with many providers and implementations available.

The SAML authentication standard is a broad XML specification covering a range of functionality and 'binding' protocols. As such, it is not uncommon to encounter problems integrating applications (Service Provider’s) with SAML Identity Providers. Numerous technologies can form the SSO back-end (Identity Provider) and there is no 'one-size-fits-all' approach.

Authorisation

Role-based Access

In many cases, you might want to restrict access to your application, or parts of your application, to specific groups of users. To enable this option, you must add the file conf/security/access.conf to your application’s configuration tree.

Configuration

Although it is disabled by default, there is a web service that returns all of the details for the currently logged in user.

Visualisations

The chart tag library is a collection of JSP tags for creating charts to visualise both search results (document result sets) and facets.

To display credits on the chart in the bottom right hand corner, use the Chart Credit tag with the text and href attributes.

A legend is displayed when the chart has multiple series. With the Chart Legend tag, you can customise the legend with a title, border and location on the chart along with other things. This tag must be nested in the Chart Display tag.

Tooltips display information when you hover over a point or area of the chart. Tooltips can be set across the whole chart or specifically to a series using the Chart Tooltip tag.

The Chart Display tag displays the facet provided in a chart.

To give users the option to export a chart, include the Chart Export tag within the Chart Display tag. Adding the tag will enable exporting without adding any attributes.

To render information in facets, use the Series Facet tag, which must be nested within a Chart Display tag.

The histogram visualization displays the filters of a facet as a left-to-right series of bars.

To render information from fields of a result list into a data series, use the Series Result List tag and use the label-field and value-field attributes.

Visualise the top filters of a facet as a tag cloud.

Workflow and Data Processing

A workflow processor is an atomic unit of business logic that can modify a query before it is submitted to a search platform, or transform a search response before rendering. This capability is used extensively for doing runtime data cleaning when, for example, it isn’t feasible to re-index a whole collection to fix issues in the source data.

Query Processors

Add a Filter to a Query. By creating or passing in a Filter instance, you can override or set all attributes of the filter that will then be added to the Query.

Response Processors

Facet response processors include ones to perform these operations:

  • Duplicate a facet.

  • Create facets.

  • Fill in date filters for a facet.

  • Parse and formatting filter values from one Date format to another.

  • Create a pseudo date facet.

  • Set or changing Parameters for a facet.

  • Sort facets based on various properties and parameters.

  • Process facet filter values formatted as paths to represent them as hierarchical trees.

  • Remove facets from a Response.

  • Create pseudo facets based on values in a given field or fields.

  • Process hierarchical facets so that only one level is rendered at a time.

  • Define a pseudo facet from a list of facets in the response.

Field response processors include ones to perform these operations:

  • Capitalise the display value of the given field names.

  • Add Highlighting to Fields.

  • Tag a document with classifications based on field values.

  • Format a date object, replacing the original date value with another.

  • Parse dates out of field values.

  • Set the value of a field that is missing a value, based on the value of a different field.

  • Parse the String value of the specified fields into an Object representation.

  • Create a multivalued field from a single field value by using a separator.

  • Extract the hostname from URLs and place it in a field named 'site'.

  • Process fully qualified URLs in field values and markup, and add anchor tags for active links in the display values.

  • Statically add metadata to documents that match a given regular expression.

  • Replace field values (actual, display, or both) that are HTML or URL encoded with decoded values.

  • Replace field values (actual, display, or both) that match a given regular expression with a different value.

  • Make Twitter users and hashtags clickable in the display value.

  • Duplicate a field, creating two separate instances.

  • Create a new field by joining multiple existing fields using a pattern expression.

  • Localise the values of a field using a specified bundle.

Filter response processors include ones to perform these operations:

  • Capitalise the display value of the given filter.

  • Parse dates out of facet filter values.

  • Sort facet filters by count.

  • Sort facet filters by actual value.

  • Replace display values in FacetFilters for specified or all Facets.

  • Retrieve other filter values for the same facet, despite there being one or more filters for that facet already applied.

  • Remove facet filters that match a regular expression pattern from a facet.

  • Replace filter values (actual, display, or both) that match a given regular expression with a different value.

  • (Since 4.2.0) Dynamically format the display value of a date range facet according to the size of the range.

General response processors include ones to perform these operations:

  • Perform a left join on fields.

  • Log response metadata and attributes to log4j.

  • Group results by a given Field value.