Limiting the number of refinements to be displayed

If there are too many refinements to be returned per refinement, you can limit the number of displayed refinements.

Generally, when the request from the Conversation Web Service asks for attributes to return in response to a query, it asks for all of them that were requested with a RefinementGroupConfig element.

To provide a meaningful navigation experience, the Oracle Endeca Server returns only those attributes that actually have refinements on them and that are not filtered by precedence rules. In other words, the attributes are returned based on the navigation state. (In order for the request to return refinements if they are present in the data set, the Expose attribute should be set to true in the RefinementConfig. Its default value is false).

If there are too many refinements to be returned per attribute, you can limit the number of them that are displayed using NavigationMenuConfig in the Conversation Web Service request.

You can do this in a global setting or per each refinement value. The following statements describe the logic used by the Conversation Web Service to identify the number of refinements to be displayed:
For example, in this configuration for the navigation menu, MaximumRefinementCount is set to 15. In addition, for the WineType refinement value, MaximumCount is set to 40. MaximumCount is not set in each of the other refinement values.
<ContentElementConfig xsi:type="NavigationMenuConfig"
 HandlerFunction="NavigationMenuHandler"
 HandlerNamespace="http://www.endeca.com/MDEX/conversation/1/0"
 Id="NavigationMenu"
 MaximumRefinementCount="15"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <RefinementGroupConfig Name="Wine Characteristics" Expose="true">
   <RefinementConfig Name="WineType" MaximumCount="40"/>
   <RefinementConfig Name="Year"/>
   <RefinementConfig Name="Score"/>
  </RefinementGroupConfig>
</ContentElementConfig>

This request returns up to 40 refinement values for WineType. It returns 15 refinement values for each of the other two refinement values (Year and Score).

The attribute HasMore (with possible boolean values true or false) in the response specifies whether the total refinement count exceeds the value returned with the MaximumRefinementCount.

The following example shows a response where the HasMore attribute is set to true in the NavigationMenuItem type of the Conversation Web Service response:
<cs:Results xmlns:cs="http://www.endeca.com/MDEX/conversation/1/0" 
   xmlns:mdex="http://www.endeca.com/MDEX/XQuery/2009/09">
  <cs:Request>
    <FilterState xmlns="http://www.endeca.com/MDEX/conversation/1/0">
    <ContentElementConfig xsi:type="NavigationMenuConfig" Id="NavigationMenu"
      HandlerFunction="NavigationMenuHandler" 
      HandlerNamespace="http://www.endeca.com/MDEX/conversation/1/0" 
        xmlns="http://www.endeca.com/MDEX/conversation/1/0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <RefinementGroupConfig Name="Wine Characteristics" Expose="true">
        <RefinementConfig Name="WineType" MaximumCount="1" Expose="true"
          xmlns:ns="http://www.endeca.com/MDEX/conversation/1/0"/>
      </RefinementGroupConfig>
    </ContentElementConfig>
  </cs:Request>
  <cs:ContentElement xsi:type="cs:NavigationMenu" Id="NavigationMenu" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <cs:NavigationMenuItemGroup Name="Wine Characteristics" HasRefinablePRoperties="true">
    <cs:NavigationMenuItem Name="WineType" DisplayName="WineType" MultiSelect="Or" HasMore="true">
         <cs:ExposureControl Exposed="true">
           <cs:Operator OwnerId="NavigationMenu" 
              xsi:type="cs:RefinementHideOperator"
              Name="WineType" Spec="/"
              Group="Wine Characteristics"/>
         </cs:ExposureControl>
         <cs:Refinement Name="WineType" Spec="/Red" Label="Red" Count="18">
          <cs:Operator xsi:type="cs:RefinementOperator" Name="WineType" Spec="/Red"/>
         </cs:Refinement>
      <cs:RootDimensionValue DimensionName="WineType" Spec="/"/>
    </cs:NavigationMenuItem>
   </NavigationMenuItemGroup>
  </cs:ContentElement>
</cs:Results>