This article covers a Bloomreach Experience Manager version 11. There's an updated version available that covers our most recent release.

Hippo Search Service

The Hippo Search Service is intended to be used by the Advanced Search CMS feature. Within a delivery tier implementation, use the delivery tier's Fluent Search API instead.

The Hippo Search Service

The Hippo Search Service allows one to build queries using a Java DSL. A brief preview assuming the namespace of your project is myproject.

Search fluent API example:

import static;
import static;
import static;
import static;
import static;
import static;

public class SearchExample {

   public void doSearch() throws SearchServiceException, RepositoryException {

        SearchServiceFactory searchServiceFactory =
                HippoServiceRegistry.getService(SearchServiceFactory.class, SearchServiceFactory.class.getName());
        if (searchServiceFactory == null) {
            throw new SearchServiceException("Cannot find search service factory by name " + 

        SearchService searchService =

        Query query = searchService.createQuery()
                    .and(date("hippostdpubwf:publicationDate").from(new Date()).andTo(new Date()))

        QueryResult result =;
        HitIterator hits = result.getHits();
        while (hits.hasNext()) {
            Hit hit =;
            String id = hit.getSearchDocument().getContentId().toIdentifier();
            Node documentNode = UserSession.get().getJcrSession().getNodeByIdentifier(id);
            // do stuff


The fluent API will guide you through the different parts of the query. A number of static helper methods (text, date, not, ...) is available to keep the constraints readable.

Note that there's no JCR code involved; this is intentional as the API is intended to support multiple implementations.

The DEFAULT resolution of date range searches is DAY. You can specify in #isEqualTo, #from and #to a different resolution. The bigger the resolution, the faster the query.

Configure the Search Service

As of Hippo DX 11.2, the Search Service is a configurable module, with the following configuration location in the repository:


The table below lists the available configuration properties:

Property name Type Default Description
wildcard.postfix.enabled Boolean true If true, text searches will be extended with a wildcard. For example, a search for 'foobar' will be expanded to pseudo code jcr:contains("foobar") OR jcr:contains("foobar*").
wildcard.postfix.minlength Long 3 The minimum length a search term must have to be extended with a wildcard postfix. This is to prevent state explosion


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?