Contextual navigation: data model
Contextual navigation information is returned within the following data model elements:
-
question.cnClickedCluster
andquestion.cnPreviousClusters
-
response.resultPacket.contextualNavigation
Contextual navigation - data model main elements
{
"question": {
...
"cnClickedCluster": "orange juice", (1)
"cnPreviousClusters": [ (2)
{
"orange"
}
],
...
},
"response": {
...
"resultPacket": {
"contextualNavigation": { (3)
"searchTerm": "Orange Juice", (4)
"clusterNav": { (5)
},
"categories": [ (6)
],
"customData": {} (7)
}
}
},
...
}
1 | question.cnClickedCluster : provides information on a contextual navigation cluster that was clicked, resulting in the current query. |
2 | question.cnPreviousClusters : is an array of previous contextual navigation clicks, and can be used to construct a breadcrumb trail of contextual navigation that results in the current query. |
3 | response.resultPacket.contextualNavigation : All contextual navigation information required to build the contextual navigation is contained within this element. |
4 | response.resultPacket.contextualNavigation.searchTerm : Indicates the search term(s) used to generate this contextual navigation |
5 | response.resultPacket.contextualNavigation.clusterNav : Includes information that can be used to build a navigation element for contextual navigation. |
6 | response.resultPacket.contextualNavigation.categories : The contextual navigation items, grouped into categories of type, topic and site. |
7 | response.resultPacket.contextualNavigation.customData : General-purpose element that can be used to store custom information when extending contextual navigation using plugins or hook scripts. |
Categories element
The response.resultPacket.contextualNavigation.categories
element contains the full set of contextual navigation suggestions.
The individual suggestions are grouped into three contextual navigation categories of type, topic and site. The (maximum) number of suggestions returned for each of these groupings can be controlled via the contextual_navigation.type.max_clusters
, contextual_navigation.topic.max_clusters
and contextual_navigation.site.max_clusters
settings.
...
categories: [
{
"name": "type", (1)
"more": 0, (2)
"moreLink": null, (3)
"fewerLink": "?log=false&profile=_default_preview&query=orange&collection=training%7Esp-foodista", (4)
"clusters": [ (5)
{
"href": "?clicked_fluster=cup+orange&cluster0=orange&log=false&profile=_default_preview&query=%60cup+Orange%60&collection=training%7Esp-foodista",
"count": 10,
"label": "Cup...",
"query": "cup Orange"
}
]
},
{
"name": "topic",
"more": 0,
"moreLink": null,
"fewerLink": null,
"clusters": [
{
"href": "?clicked_fluster=orange+juice&cluster0=orange&log=false&profile=_default_preview&query=%60Orange+Juice%60&collection=training%7Esp-foodista",
"count": 42,
"label": "...Juice",
"query": "Orange Juice"
},
{
"href": "?clicked_fluster=orange+zest&cluster0=orange&log=false&profile=_default_preview&query=%60orange+zest%60&collection=training%7Esp-foodista",
"count": 19,
"label": "...Zest",
"query": "orange zest"
}
]
}
],
...
1 | The category name. Possible values are type. topic and site. |
2 | The number of additional values. |
3 | A link to expand the list of values. (legacy) |
4 | A link to shrink the list of values. (legacy) |
5 | The list of suggestions. |
The clusters element contains the following for each suggestion that is returned:
...
{
"href": "?clicked_fluster=orange+juice&cluster0=orange&log=false&profile=_default_preview&query=%60Orange+Juice%60&collection=training%7Esp-foodista", (1)
"count": 42, (2)
"label": "...Juice", (3)
"query": "Orange Juice" (4)
}
...
1 | Link that runs the suggested query |
2 | Number of results found when generating this suggestion. Note that this number is not an accurate representation of the number of results that will be returned when clicking on the suggestion as the suggestions are only extracted from a small sample of results. |
3 | A label to use when presenting the suggested query. Note: the … in the suggestion should be replaced with the query that was used to generate the list of suggestions. |
4 | The query that will be run when this result is clicked on |
ClusterNav element
The ClusterNav is a legacy element that |
The response.resultPacket.contextualNavigation.clusterNav
element includes navigational information that can be used when building your contextual navigation widget.
Sub-elements:
"clusterNav": {
"level": 0, (1)
"url": "log=false&profile=_default_preview&query=orange&collection=training%7Esp-foodista", (2)
"label": "orange" (3)
},
1 | response.resultPacket.contextualNavigation.clusterNav.level : The level of this navigation item. |
2 | response.resultPacket.contextualNavigation.clusterNav.url : The URL to reach this navigation item. |
3 | response.resultPacket.contextualNavigation.clusterNav.label : THe label for this navigation item. |
Contextual navigation HTML
Contextual navigation is commonly templated in HTML using a pattern similar to the code below:
<h2>Related searches</h2>
<ul>
<#for each cluster>
<li><a href="{cluster.href}">{cluster.label->replace('...' with {contextualNavigation.searchTerm} }</a></li>
</#for>
</ul>
Display contextual navigation in a Freemarker results template shows the template code of how best bets are templated using Freemarker, which is used in the default Funnelback template. This example can be adapted to other languages.