Events search limitations

Managed by | Updated .

Background

Funnelback's events mode enables search over event records, allowing an event to appear multiple times in the search results, which are grouped by date.

Events mode changes the way in which Funnelback processes queries and is incompatible with a number of other features within Funnelback.

Features that are incompatible when events mode is turned on

The following features are incompatible with events mode:

  • Faceted navigation
  • Contextual navigation
  • Query blending
  • Document at a time processing (DAAT mode)

Troubleshooting events mode

Some query constraints don't apply when running an events search

The method of expressing an events query splits the query string into two parts.  A % character is used to split the query string between normal query constraints and event iteration parameters.

If it appears that some constraints are not applying then examine the XML or JSON data model and inspect the query as processed from the response element.

The query string should be in the following format:

<normal query constraints> % <event iterators>

e.g.

beethoven symphony genre:classical ensemble:orchestra % D=20160415 D>20160415 D<20160630 D=20160630

If any constraints appear to the right of the % character then these will get ignored.  To work around this you may need to use a pre process or pre datafetch hook script to reconstruct the query prior to it being submitted to, or avoid using CGI parameters such as meta_X_sand which result in constraints being added to the query.  These constraints can be added using a hook script instead.

Events are not returned

Check that document at a time processing isn't turned on - look for -daat=N (where N>0) as a query processor option, or service_volume=high.

Events are not returned when -daat mode is enabled.

Funnelback 13+ disables DAAT mode automatically if events mode is enabled.

Turning on events mode breaks the search template

The simple.ftl that shipped with Funnelback prior to v14.0 was incompatible with events mode and resulted in the a HTTP 500 error being returned when accessing search results.

This can be correct by making the following two changes:

Update the simple.ftl to modify the tierbar check as follows:

simple.ftl
<@s.Results>
    <#if s.result.class.simpleName == "TierBar">
        <#-- A tier bar -->
        <#if s.result.matched != s.result.outOf>
            <h2 class="fb-title">Search results that match ${s.result.matched} of ${s.result.outOf} words</h2>
        </#if>
        <#-- Print event tier bars if they exist -->
        <#if s.result.eventDate??>

            <h2 class="fb-title">Events on ${s.result.eventDate?date}</h2>
        </#if>
    <#else>

Update $SEARCH_HOME/web/templates/funnelback_classic.ftl as follows.

Replace:

$SEARCH_HOME/web/templates/funnelback_classic.ftl
<#if rs.fullyMatching &gt; 0>
    <#local pages = (rs.fullyMatching + rs.partiallyMatching + rs.numRanks - 1) / rs.numRanks />
<#else>
    <#local pages = (rs.totalMatching + rs.numRanks - 1) / rs.numRanks />
</#if>

with:

$SEARCH_HOME/web/templates/funnelback_classic.ftl
<#if rs.fullyMatching??>

    <#if rs.fullyMatching &gt; 0>
        <#local pages = (rs.fullyMatching + rs.partiallyMatching + rs.numRanks - 1) / rs.numRanks />
    <#else>
        <#local pages = (rs.totalMatching + rs.numRanks - 1) / rs.numRanks />
    </#if>
<#else>
    <#local pages = (rs.totalMatching + rs.numRanks - 1) / rs.numRanks />
</#if>
<#local currentPage = 1 />
<#if rs.currStart &gt; 0 && rs.numRanks &gt; 0>
    <#local currentPage = (rs.currStart + rs.numRanks -1) / rs.numRanks />
</#if>
Was this artcle helpful?

Tags
Type: Keywords:
Features:
XML
Frontend > Contextual navigation Frontend > Event search Frontend > Faceted navigation