Configuring search in Magnolia

By default, Magnolia’s search functionality is provided by the Jackrabbit repository which uses the default Lucene algorithm to calculate the score for ranking results.

For more advanced search options and especially if you need to manage high volumes of assets, you can set up Magnolia to use Solr search.

Jackrabbit allows you to control which properties of a node are indexed and how much they will affect the jcr:score value which represents the full-search score of the node serving as a measure of that node’s relevance to the full-text search expression result. Once those properties are defined in the index configuration file, Lucene calculates how to index the content of a workspace.

Lucene

Magnolia’s search works using the Lucene algorithm where by default all properties mentioned in the index-rule receive a boost value of 1.0.

For example

//*[jcr:contains(.,'apache')] order by @jcr:score descending

jcr:score Text property

1000

"Apache Jackrabbit"

848

"some test jackrabbit apache, apache is great"

350

"this is a text that is much larger than the first one and only contains the word apache once."

While all workspaces have the mgnl:tags property indexed, not all of them have the same configuration:

  • Pages : the title properties receive a boost of 3.0. The components and areas node contents are also included in the mgnl:page when the search index is evaluated.

  • DAM: the mgnl:resource node content is included in the mgnl:asset when the search index is evaluated.

  • Tasks: the mgnl:contentNode content is included in the mgnl:task when the search index is evaluated.

Configuring Find Bar search results

You can configure how many search results are displayed. To do so, use the definition decoration mechanism.

For example, the following light module configuration updates the defaultCountPerSupplier to 3, allowing you to see only up to 3 search results.

<my-module>/decorations/admincentral/config.yaml
findBar:
   defaultCountPerSupplier: 3

The table below lists properties in the Admincentral module that affect how search results appear.

Table 1. Subset of findBar properties
Property Description

defaultCountPerSupplier

optional, default is 10

Integer defining the maximum number of search results shown from any single search supplier.

editorRoles

optional

List of user roles allowed in the Last editor search filter:
List of authorized user roles

All users are available unless specified otherwise.

By allowing all user roles in editorRoles, you may experience performance issues, especially when a large number of public users are registered in a shared user repository on the author instance and you open a Find Bar filter.

minimumSearchLength

optional, default is 3

Configure the minimum number of necessary characters that are shown in a text hint in the find bar to help the user understand how to use the search feature.
Findbar with text hint

suppliers

optional

List of search result suppliers. If undefined, it defaults to all suppliers provided by the Periscope module.

supplierOrder

optional, default is apps, pages, stories, assets, tours

List defining the ordering of search result groups.

Configuring in-app search filters

You can create, update, and delete search filters using the definition decoration mechanism.

  1. Find the filter configuration. For example:

    1. pages-app.yaml for the author, status, and template filters in the Pages app.

    2. pages-content-tags-integration/decorations/pages-app/apps/pages-app.subApps.browser.yaml for the tag filter in the Pages app.

    3. dam.subApps.yaml for the asset type, author, size, and status filters in the Assets app.

    4. content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yaml for the tag filter in the Assets app.

  2. Look for workbench and decorate the configuration of the existing filters or add a new filter.

    All the filters are configured in a similar way. The example below shows the default properties used in the configuration of the Assets app Type filter.

    dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
      workbench:
        sortFilterOptions: true
        filters:
          - name: mimeType
            icon: icon-file
            filterOperator: STARTS_WITH
            $type: dropdownMultiselect
            propertyName: jcr:content@jcr:mimeType
            datasource:
              $type: optionListDatasource
              options:
                - name: audio
                  value: audio/
                  label: Audio
                - name: documents
                  value: application/,text/
                  label: Documents
                - name: images
                  value: image/
                  label: Images
                - name: videos
                  value: video/
                  label: Videos

Other properties are available depending on the filter. See some examples below.

The tables below list workbench and filter properties that affect how in-app search and filters appear.

Table 2. Subset of in-app workbench search properties
Property Description

sortFilterOptions

optional, default is true

Sorts the filters by their labels from A-Z. It gets the order from the definition mapping.

searchEnabled

optional default is true

Enables the full-text search field.

searchPlaceholder

optional, default is Type to search…​

Placeholder text for the full-text-search field.

filters

optional

Map of filter configurations.

If no filters are defined, only the search field appears.

See the following table for filter properties.

Table 3. Subset of in-app filter search properties
Property Description

name

required

The name for the filter.

icon

optional

CSS class that identifies an icon used for the filter. See How to add SVG icons for apps.

$type

required

Use a valid field alias name to reference a supported field type.

The field types supported are:

  • For filters:

    • dropDown - info.magnolia.ui.filteringapp.filter.field.FilterDropdownViewDefinition

    • dropDownMultiSelect - info.magnolia.ui.filteringapp.filter.field.FilterDropdownMultiselectViewDefinition

filterOperator

optional

Choose an info.magnolia.ui.filter.FilterOperator for comparing values. Possible values are:

  • EQUALS

  • STARTS_WITH

  • CONTAINS

  • BETWEEN

textInputAllowed

optional, default is false

When true, the user can type into the field to filter available items.

If there are more than 8 items in the filter, textInputAllowed is automatically set to true so that users can search in the filter heading.

propertyName

optional

The property name.

If no propertyName is set, name is used instead. This is useful if the property name is complex, like mgnl:resource/foo:bar, and not yaml-compliant.

datasource

required

Use a valid datasource name to reference a data source type.

Configuring the number of filter results displayed

You can configure how many results are displayed when a user applies a filter in an app. By default, the results displayed are capped at 200. You can increase this value to suit your users' needs or decrease it to improve performance.

To do so:

  1. Go to the Resource Files app.

  2. Find the configuration of the app (for example, pages-app.yaml for Pages or dam.subApps.yaml for Assets).

  3. Under datasource, add the property filterResultsLimit.

  4. Set a value that suits your requirements.

    pages-app/apps/pages-app.yaml
    datasource:
      $type: jcrDatasource
      workspace: website
      filterResultsLimit: 42 (1)
      allowedNodeTypes:
        - mgnl:page
    1 Only 42 results are displayed in the Pages app when a filter is applied.
  5. Save your changes.

    Authors can see the number of results returned by the filter at the bottom of the app page. If more results are available, the text displayed indicates that.

    Text says

Search results are shown in a list view in all apps except the Definitions app, which uses a tree view for context.

Disabling in-app search filters and the search field

To disable search filters:

  1. Go to the Resource Files app.

  2. Find the filter configuration. For example:

    1. pages-app.yaml for the author, status, and template filters in the Pages app.

    2. pages-content-tags-integration/decorations/pages-app/apps/pages-app.subApps.browser.yaml for the tag filter in the Pages app.

    3. dam.subApps.yaml for the asset type, author, size, and status filters in the Assets app.

    4. content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yaml for the tag filter in the Assets app.

  3. Look for workbench and remove the configuration of the existing filters under filters.

    The filters are removed from the app, but the search field remains.

To remove the search field:

  1. Find the filter configuration in your app. For example, pages-app.yaml or dam.subApps.yaml.

  2. Add the searchEnabled property and set it to false.

The example below shows the configuration to disable the asset type, author, size, and status filters as well as the search field in the Assets app.

resources/dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    searchEnabled: false
    filters:

Default filter examples

The following sections list the default filters provided in the Assets and Pages apps and their configuration.

Assets app filters

The following default filters and filter values are provided in the Assets app:

  • Asset type

    • Audio

    • Documents

    • Images

    • Videos

  • Author

    • List of users

  • Size

    • Small

    • Medium

    • Large

    • Extra large

  • Status

    • Draft

    • Marked for deletion

    • Modified

    • Published

  • Tag

Asset type filter

The Asset type filter groups different file formats into filter values. By default, the following filter values are provided:

  • Audio - Uses the MIME type prefix audio/. All supported audio formats, such as .mpeg, .webm, .mp4, .ogg, .aac, .aacp, .flac, .wav, .x-wav, or .mp3.

  • Documents - Uses the MIME type prefixes application/ or text/ All supported document formats, such as .pdf, or .html.

  • Images - Uses the MIME type prefix image/. All supported image formats, such as .jpeg, .png, .svg, .gif, or .webp.

  • Videos - Uses the MIME type prefix video/. All supported video formats, such as .mp4, .mpeg, or .webm.

For a list of supported file formats, see Supported file formats for preview generation.

For more information about how MIME types are mapped to file extensions in Magnolia, see MIME type mapping.

Default configuration in resources/dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    sortFilterOptions: true
    filters:
      - name: mimeType
        icon: icon-file
        filterOperator: STARTS_WITH
        $type: dropdownMultiselect
        propertyName: jcr:content@jcr:mimeType
        datasource:
          $type: optionListDatasource
          options:
            - name: audio
              value: audio/
              label: Audio
            - name: documents
              value: application/,text/
              label: Documents
            - name: images
              value: image/
              label: Images
            - name: videos
              value: video/
              label: Videos
Author filter

The Author filter lists all the JCR-based Users in the instance.

SSO-based users may only find their own content using the Current user option that appears in the Author filter.
Default configuration in resources/dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    filters:
      - name: mgnl:createdBy
        icon: icon-user-public
        filterOperator: EQUALS
        $type: dropdownMultiselect
        datasource:
          name: available-filtering-users
Size filter

The Size filter groups different asset sizes into filter values. By default, the following filter values are provided:

  • Small - less than 1 MB: (,1)

  • Medium - 1 to 5 MB: [1,5]

  • Large - 5 to 20 MB: [5,20]

  • Extra large - greater than 20 MB: (20,)

Configuring Size filter ranges

You can configure the Size filter values to suit the kind of assets you deal with. For example, small means something different depending on if your asset library contains RTF assets or videos.

To set a range of values for the media size filter values, you must use the supported BETWEEN filter operator formatting:

[a,b]
(a,b)
[a,b)
(a,b]
  • [ means >= (more than or equal to).

  • ] means (less than or equal to).

  • ( means > (more than).

  • ) means < (less than).

  • The comma (the separator) between the values must exist.

  • a or b can be omitted but not both.

  • If a is omitted, the open symbol can be either [ or (.

  • If b is omitted, the close symbol can be either ] or ).

In the example below, you can see the default configuration for the Size filter.

Default configuration in resources/dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    filters:
      - name: size
        icon: icon-zoom-to-fit
        filterOperator: BETWEEN
        $type: dropdownMultiselect
        propertyName: jcr:content@size
        datasource:
          $type: optionListDatasource
          options:
            - name: small
              value: "(,1048576)"
              label: Small (< 1 MB)
            - name: medium
              value: "[1048576,5242880]"
              label: Medium (1 - 5 MB)
            - name: large
              value: "[5242880,20971520]"
              label: Large (5 - 20 MB)
            - name: extraLarge
              value: "(20971520,)"
              label: Extra large (> 20 MB)
Status filter

The Status filter lists all the publication statuses.

Publication status key
Status Description

Published

Content is published from the author instance to the public instance. Identical content exists on both instances.

Modified

Content was modified since publication. The author instance isn’t in sync with the public.

Draft

Content exists only on the author instance.

Marked for deletion

Content is marked for deletion but still appears in the list (grayed out). It can be restored or permanently deleted.

Default configuration in resources/dam-app-jcr/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    filters:
      - name: jcrPublishingStatus
        icon: icon-spinner-full
        $type: dropdownMultiselect
        datasource:
          $type: enumDatasource
          enumeration: info.magnolia.ui.contentapp.configuration.column.StatusColumnDefinition$PublicationStatus
          sorted: true
Tag filter

The Tag filter lists all the content tags.

The Tag filter is configured in resources/content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yaml by default, contrary to the other Assets app filters. The configuration is added by decoration to the current implementation of the dam module and is bundled in the content-tags module.
Default configuration in resources/content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yaml
  workbench:
    filters:
      - name: mgnl:tags
        icon: icon-tag
        $type: dropdownMultiselect
        datasource:
          name: available-filtering-content-tags

Pages app filters

The following default filters and filter values are provided in the Pages app:

  • Author

    • List of users

  • Status

    • Draft

    • Marked for deletion

    • Modified

    • Published

  • Tag

  • Template

The Author and Status filters are configured in the same way as their counterparts in the Assets app. Only the location of the configuration file is different resources/pages-app/apps/pages-app.yaml.

The Tag filter is also configured in the same way, but in another location: resources/pages-content-tags-integration/decorations/pages-app/apps/pages-app.subApps.browser.yaml.

Template filter

The Template filter lists all the page templates.

Default configuration in resources/pages-app/apps/pages-app.yaml
    workbench:
      filters:
        - name: mgnl:template
          icon: icon-view
          $type: dropdownMultiselect
          datasource:
            name: available-filtering-page-templates
Feedback

DX Core

×

Location

This widget lets you know where you are on the docs site.

You are currently perusing through the DX Core docs.

Main doc sections

DX Core Headless PaaS Legacy Cloud Incubator modules