Use search results served directly by the DXP search

Background

This section provides information on using a fully formatted search results page that is generated by the DXP search and delivered directly to your users.

A Freemarker template is configured in the DXP search configuration to return the fully formatted search results page.

The template can use IncludeUrl calls to remotely source headers/footers/navigation from a nominated Matrix page.

This is suitable for traditional 'full-page' search results, where facets, contextual navigation, blending, etc. are incorporated. The example diagram below shows several components being included from a remote location (typically a Matrix web server) using an approach similar to server-side inclusions.

search results served from funnelback 01

Advantages and disadvantages

Advantages

  • Provides the fastest response time. Funnelback responsible for all render response times (assuming IncludeUrl success).

  • Able to use IncludeUrl template macros to reference and cache centralized site template chunks.

  • Able to use Matrix-managed CSS, JS and other web resources.

  • Maximum re-use of existing Freemarker FTL macros.

  • Header/footer/navigation includes sourced using IncludeURL are cached.

Disadvantages

  • Freemarker templates are stored within the DXP search configuration - changes to search results markup must be made within the DXP search capability.

  • Implementations usually require a different domain for site pages vs. search pages (e.g. http://www.example.com/ vs. http://search.example.com/).

Integration with the Funnelback search is achieved simply by creating a standard HTML form within your Matrix site template that directly references the Funnelback server. The search box code will be similar to:

<form action="https://FUNNELBACK-SERVER/s/search.html" method="GET"> (1)
  <input type="search" name="query" value="" placeholder="Enter your search query"/>
  <input type="hidden" name="collection" value="SEARCH-PACKAGE-ID"/> (2)
  <input type="hidden" name="profile" value="RESULTS-PAGE-ID"/> (3)
  <input type="hidden" name="form" value="simple"/> (4)
  <input type="submit" value="Search"/>
</form>
1 Update the action to the URL for the search endpoint. If you have a custom search domain then use that here. (e.g. https://search.example.com/). If you are using the DXP search hostnames then ensure you are accessing the -search hostname (e.g. https://dxp-au-search.funnelback.squiz.cloud/ instead of https://dxp-au-admin.funnelback.squiz.cloud/). If you attempt to use the -admin URL you will be prompted to sign-in.
2 Replace SEARCH-PACKAGE-ID with the ID of your search package. You can get this from the search package management screen when configuring your search.
3 Replace RESULTS-PAGE-ID with the ID of your results page. You can get this from the results page management screen when configuring your search.
4 Replace simple with the ID of your template. If you are using the simple.ftl template you can leave this, or remove the <input> field completely as the search will default to using the simple.ftl.
The search form must call the search using a HTTP GET request. If you attempt to use a HTTP POST parts of the search will not function correctly.

Several search-specific properties are used:

Upon submission of this form, users would be redirected to a URL like:

http://<FUNNELBACK-SERVER>/s/search/html?collection=<SEARCH-PACKAGE-ID>&profile=<RESULTS-PAGE-ID>&query=<QUERY>