Simplify facets inside of the query¶
Sometimes you or your customer want to share links to a search result. The link itself could really hard to read, a specially if it contains a lot of filters.
There are two options that you can apply on the query string:
Concat multiple values of facet into a single string
Mask the filter inside of the query
All query related configurations will be placed below node query below node solr:
routeEnhancers:
products:
solr:
query:
Concat multiple values into a string¶
To activate the concatenation of multiple values add the concat entry and set the value to true.
By default the values will concat with a colon. If you need a different separator, add the entry valueSeparator and set a value that fits your need.
routeEnhancers:
products:
solr:
query:
concat: true
# valueSeparator: ','
Before Solr concatenates the values, they will be sorted in alphanumeric matter.
Imaging following filter:
tx_solr[filter][0]=taste:sweet&tx_solr[filter][1]=taste:sour&tx_solr[filter][2]=taste:matcha
By enabling the concat of multiple values, it would change into:
tx_solr[filter][0]=taste:matcha,sour,sweet
Mask filter inside of the query¶
Mask filter inside of the URL allows you to make the URL more readable and to shrink the length.
The configuration contains two parts:
enable the mask
map from the facet name to parameter (see faceting.facets.[facetName] - single facet configuration)
Add the entry mask with the value true to the query configuration.
Add the node map and configure the mapping.
The value of the map defines the facet key, the value the parameter that will be used inside of the URL.
routeEnhancers:
products:
solr:
query:
mask: true
map:
taste: taste
Imaging following filter:
tx_solr[filter][0]=taste:sweet&tx_solr[filter][1]=taste:sour&tx_solr[filter][2]=taste:matcha
By enabling the concat of multiple values, it would change into:
taste=matcha,sour,sweet
Tip
The facet and the "target" can be equal, you may use same names.
Note
By enabling the mask option, the concat option applied automatically!
Note
The mask only apply to facet you configure inside of the map.
Important
Some facet names are excluded from mask until you configure a different parameter name. This are the internal/reserved parameters of TYPO3. * type * id * no_cache * cHash * MP
Full example¶
This example shows all configurations together, which were done above in step by step:
routeEnhancers:
products:
solr:
query:
# To reduce the amount of parameters you can force Solr to concat the values.
# For example you have following filter:
# tx_solr[filter][0]=taste:sweet&tx_solr[filter][1]=taste:sour&tx_solr[filter][2]=taste:matcha
#
# Concat will:
# 1. collect all filters of the same type
# 2. will sort all filter values alpha numeric
# 3. join the values together
#
# As a result the query will modified into:
# tx_solr[filter][0]=taste:matcha,sour,sweet
#
# Note: If you active the mask option, the concat feature turn on automatically
#
concat: true
# valueSeparator: ','
# You can tell Solr to mask query facets. This feature require the map below
#
# For example you have following filter:
# tx_solr[filter][0]=taste:sweet&tx_solr[filter][1]=taste:sour&tx_solr[filter][2]=taste:matcha
# Mask will:
# 1. implode all values into a single string and sort it -> green,red,yellow
# 2. replace tx_solr[filter][]=color: with color=
#
# As a result the query will modified into:
# taste=matcha,sour,sweet
#
mask: true
# In order to simplify a filter argument, you have to define a corresponding map value
# There is no automatically reduction of filter parameters at the moment available.
# The key is the name of your facet, the value what use instead.
#
# Important:
# There are some restrictions for the values. The use of TYPO3 core parameters is prohibited.
# This contains at the moment following strings: no_cache, cHash, id, MP, type
map:
taste: taste