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:pagewhen the search index is evaluated.
- 
DAM: the mgnl:resourcenode content is included in themgnl:assetwhen the search index is evaluated.
- 
Tasks: the mgnl:contentNodecontent is included in themgnl:taskwhen 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.
findBar:
   defaultCountPerSupplier: 3Configurable properties for Find Bar search
The table below lists properties in the Admincentral module that affect how search results appear.
| Property | Description | ||
|---|---|---|---|
| 
 | optional, default is  Integer defining the maximum number of search results shown from any single search supplier. | ||
| 
 | optional List of user roles allowed in the Last editor search filter: All users are available unless specified otherwise. 
 | ||
| 
 | optional, default is  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. | ||
| 
 | optional List of search result suppliers. If undefined, it defaults to all suppliers provided by the Periscope module. See also Search result suppliers. | ||
| 
 | optional, default is  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.
| Filters can’t be configured for Asset Chooser dialogs. Use a full-text search field instead. | 
- 
Find the filter configuration. For example: - 
pages-app.yamlfor the author, status, and template filters in the Pages app.
- 
pages-content-tags-integration/decorations/pages-app/apps/pages-app.subApps.browser.yamlfor the tag filter in the Pages app.
- 
dam.subApps.yamlfor the asset type, author, size, and status filters in the Assets app.
- 
content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yamlfor the tag filter in the Assets app.
 
- 
- 
Look for workbenchand 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.yamlworkbench: 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.
Configurable properties for in-app search
The tables below list workbench and filter properties that affect how in-app search and filters appear.
| Property | Description | 
|---|---|
| 
 | optional, default is  Sorts the filters by their labels from A-Z. It gets the order from the definition mapping. | 
| 
 | optional default is  Enables the full-text search field. | 
| 
 | optional, default is  Placeholder text for the full-text-search field. | 
| 
 | optional Map of filter configurations. If no filters are defined, only the search field appears. See the following table for filter properties. | 
| Property | Description | 
|---|---|
| 
 | required The name for the filter. | 
| 
 | optional CSS class that identifies an icon used for the filter. See How to add SVG icons for apps. | 
| 
 | required Use a valid field alias name to reference a supported field type. The field types supported are: 
 | 
| 
 | optional Choose an info.magnolia.ui.filter.FilterOperator for comparing values. Possible values are: 
 | 
| 
 | optional, default is  When  If there are more than 8 items in the filter,  | 
| 
 | optional The property name. If no  | 
| 
 | 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:
- 
Go to the Resource Files app. 
- 
Find the configuration of the app (for example, pages-app.yamlfor Pages ordam.subApps.yamlfor Assets).
- 
Under datasource, add the propertyfilterResultsLimit.
- 
Set a value that suits your requirements. pages-app/apps/pages-app.yamldatasource: $type: jcrDatasource workspace: website filterResultsLimit: 42 (1) allowedNodeTypes: - mgnl:page1 Only 42results are displayed in the Pages app when a filter is applied.
- 
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.  
| 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:
- 
Go to the Resource Files app. 
- 
Find the filter configuration. For example: - 
pages-app.yamlfor the author, status, and template filters in the Pages app.
- 
pages-content-tags-integration/decorations/pages-app/apps/pages-app.subApps.browser.yamlfor the tag filter in the Pages app.
- 
dam.subApps.yamlfor the asset type, author, size, and status filters in the Assets app.
- 
content-tags-integration/decorations/dam-assets-app/apps/dam.subApps.yamlfor the tag filter in the Assets app.
 
- 
- 
Look for workbenchand remove the configuration of the existing filters underfilters.The filters are removed from the app, but the search field remains. 
To remove the search field:
- 
Find the filter configuration in your app. For example, pages-app.yamlordam.subApps.yaml.
- 
Add the searchEnabledproperty and set it tofalse.
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 - 
List of all content tags 
 
- 
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/ortext/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.
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: VideosAuthor 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. | 
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-usersSize 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. 
- 
aorbcan be omitted but not both.
- 
If ais omitted, the open symbol can be either[or(.
- 
If bis omitted, the close symbol can be either]or).
In the example below, you can see the default configuration for the Size filter.
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.
| 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. | 
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: trueTag 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.yamlby default, contrary to the other Assets app filters. The configuration is added by decoration to the current implementation of thedammodule and is bundled in thecontent-tagsmodule. | 
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-tagsPages 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 - 
List of all the content tags 
 
- 
- 
Template - 
List of all the page templates 
 
- 
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.
resources/pages-app/apps/pages-app.yaml    workbench:
      filters:
        - name: mgnl:template
          icon: icon-view
          $type: dropdownMultiselect
          datasource:
            name: available-filtering-page-templates
