About Features Downloads Getting Started Documentation Events Support GitHub

Site Tools


Blended Search

:!: Supported from VuFind 9.0.


Blended search makes it possible to display search results from two or more sources in a single results list. It also supports mapping of facets into unified options as well as mapping active filters to those in multiple backends.

This makes it possible e.g. to display authority records alongside bibliographic records, or include records from the local index as well as an index of licensed electronic material (e.g. Ex Libris Central Discovery Index or EBSCO Discovery Service). Or both. There's no hard limit on the number of backends, though mappings naturally get more complicated when the number of backend increases.


  • Currently only basic search is supported.
  • It is recommended to keep maximum number of results available for paging low, as merging results further from the beginning is a heavy process.
  • Blending the results is not a magic process, and relevance ranking works quite differently across platforms. There are settings available that affect blending of initial results, but currently it's mostly just round robin.
  • Many of the advanced options, such as full facet lists, are not supported.


The actual search backends should be configured and tested to work before configuring blended search. These include:

Make sure that the backends that you want to use with blended search work properly standalone before continuing.

:!: It is strongly recommended to enable search caching for each backend to improve performance and reduce duplicated requests. See the [SearchCache] section for the relevant search configuration file for details. Using Memcached is recommended.


The following instructions assume that VuFind's local directory is local, so all configuration files to be modified are under the local/config/vufind directory. Adjust as necessary.

The actual configuration is done with two files: Blender.ini and BlenderMappings.yaml. Blender.ini contains settings for configuring the search similarly to other backends. BlenderMappings contains all the mappings from backends to common values for facets, search type mappings and sort options.

It is recommended to choose one backend as the “primary” one and use its facet values etc. as the target to which all the other backends are mapped to. This makes configuration easier. However, there's nothing preventing the use of a Blender-specific set of facets that all backends map to, if desired.

Basic Configuration

  1. Copy config/vufind/Blender.ini to local/config/vufind/Blender.ini for modification.
  2. Enable desired backends in [Backends] section.
  3. Use the [Blending] section, if desired, to configure the selection of initial results. You can also define the block size used for records from each source. Block size can also be relative to the total number of results.
  4. Set up all the other settings in Blender.ini according to your needs.

Note that Blender supports its own pseudo-facet blender_backend. It can be used to display all the backends as a facet field and limit results to one or more of them. blender_backend can also be used as a checkbox filter. See [CheckboxFacets] in Blender.ini for examples.

Mappings Configuration

This is expected to be the most laborsome part of the configuration.

  1. Copy config/vufind/BlenderMappings.yaml to local/config/vufind/BlenderMappings.yaml for modification.
  2. See the beginning of the file for information on the format and available settings.
  3. Set up all mappings according to your needs. The sample file contains example mappings for several facets, including mappings to a hierarchical format facet.

There are several noteworthy features particularly with facet mappings:

  • Facet mappings also work the other direction and define how active filters are mapped to each backend. You can also define fields that are only used e.g. with checkbox filters.
  • If a backend does not support a filter value, that backend gets automatically disabled. If you wish to keep the backend active and just ignore such values, list the values under the Ignore setting.
  • If you're mapping a value to a hierarchical facet (those can be used with Solr), you can set Hierarchical: true to indicate that. In such case Blender will automatically populate any upper levels as well. Example:
          Field: SourceType
          Hierarchical: true
            Academic Journals: "1/Journal/eJournal/"

The above example would map “Academic Journals” from EDS into “0/Journal/” and “1/Journal/eJournal/”.

  • You can define filters that are set by default. With Primo, this is useful with the pcAvailability filter. Example:
      Type: boolean
          Field: fulltext_boolean
          Field: pcAvailability
            "false": 1
          DefaultValue: "true"
          Field: "LIMIT|FT"
            "y": true

With the above example, fulltext:1 filter can be used to limit results to available full text resources. With Primo, the pcAvailability filter works the opposite way and must be set to true for the search to return also other resources. The above configuration sets the default value to “true” for just that effect. If fulltext:1 filter is activated, it is mapped to “false” overriding the default value.

configuration/blender.txt · Last modified: 2022/04/25 08:26 by emaijala