Configure Faceted Tree Filters

Introduction

Goal

Configure filters in a faceted tree.

Background

When configuring a faceted tree, it is possible to add filters.

Configuration

You can configure filters on any hippofacnav:facetnavigation node using the multi-valued String property hippofacnav:filters. All filters are being AND-ed. We support currently the following formats as a filter:

  • jcr:primaryType = nodeType
  • propertyname = propertyvalue
  • propertyname != propertyvalue
  • contains(. , text)
  • contains(propertyname, text)
  • not(expression)
  • text

Examples

Node Type

Only include documents of type myproject:newsdocument in the faceted tree's result sets:

  hippofacnav:filters: [ 'jcr:primaryType = myproject:newsdocument' ]

Property Value

Only include documents with property myproject:brand having the value 'hippo':

  hippofacnav:filters: [ 'myproject:brand = hippo' ]

Exclude documents with property myproject:brand having the value 'hippo':

  hippofacnav:filters: [ 'myproject:brand != hippo' ]

Document-Scoped Free Text Query

Free text search in any property of any descendant node. If there is no result set sorting configured, the result set is ordered according Lucene scoring. The query syntax mostly follows the Lucene QueryParser syntax with some exceptions (see below). A space is interpreted as AND.

Not supported from the Lucene QueryParser syntax are:

  • fuzzy searches
  • proximity searches
  • range queries
  • wildcard at the start of a keyword

Examples:

Only include documents containing the word 'jump':

  hippofacnav:filters: [ 'contains(.,jumps)' ]

Only include documents containing 'quick' AND 'jump':

 hippofacnav:filters: [ 'contains(.,quick jump)' ]

Only include documents containing 'quick' OR 'jump':

 hippofacnav:filters: [ 'contains(.,quick OR jump)' ]

Only include documents which contain the words 'brown fox jumps' in this exact order:

 hippofacnav:filters: [ 'contains(.,"brown fox jumps")' ]

Only include documents with words that match bro?n, where ? is any single character:

 hippofacnav:filters: [ 'contains(.,bro?n)' ]

Only include documents with words that match laz*, where * is any character array:

 hippofacnav:filters: [ 'contains(., laz*)' ]

Only include documents containing 'quick' OR 'jump' and in the scoring, consider the word 'quick' 10 times more important:

 hippofacnav:filters: [ 'contains(.,quick^10 OR jump)' ]

If only text is filled in, the filter is treated as if it is: contains(.,text)

For example:

  hippofacnav:filters: [ 'quick brown fox' ]

is equal to

  hippofacnav:filters: [ 'contains(.,quick brown fox)' ]

Property-Scoped Free Text Search

Similar to document-scoped free text search, but restricted to a specific document property.

For example, to only include documents containing 'hippo' OR 'onehippo' in their myproject:title property:

 hippofacnav:filters: [ 'contains(myproject:title, hippo OR onehippo)' ]

Negation

Any of the expressions above can be negated by wrapping not() around it, for example:

 hippofacnav:filters: [ 'not(myproject:brand = hippo)' ]

 

Did you find this page helpful?
How could this documentation serve you better?
On this page
    Did you find this page helpful?
    How could this documentation serve you better?