デフォルトでは、エンドユーザーが問合せを作成してガイド付きナビゲーション・エクスペリエンスの一部としていくつかの絞込みを選択した場合、Endeca Serverによって、適用済の絞込み(明示的に選択されたものと暗黙的なもの)は返されません。つまり、デフォルトでは、エンドユーザーは、返されるどの絞込みを選択しても結果セットをさらに絞り込むことができます。ただし、絞込みとして使用されるすべての属性に対して、提案される絞込みだけでなく適用済の絞込み(明示的に選択されたものと暗黙的なもの)も取得するナビゲーション・メニューの対話Webサービス・リクエストを発行できます。
任意の組合せでtrueとfalseの値を使用できます。
絞込みを取得したら、ExposeAllRefinements="true"の設定により、絞込みをWebサービス・レスポンスでも返すかどうかを制御します。
<ns:NavigationMenuConfig Id="?"
ExposeAllRefinements="?"
ReturnFullPath="false"
MaximumRefinementCount="?"
IncludeAllExplicitSelections="false"
IncludeAllImplicitSelections="false">
</ns:StateName>
<ns:RefinementConfig Name="?"
Spec="?" Expose="false" OrderByRecordCount="false" MaximumCount="?"
IncludeExplicitSelections="false" IncludeImplicitSelections="false"/>
</ns:NavigationMenuConfig>
これらの例では、次のネームスペースが省略されています。xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.endeca.com/MDEX/conversation/3/0" xmlns:typ="http://www.endeca.com/MDEX/eql_parser/types"
次のリクエストの例では、特定のナビゲーション状態で問合せを作成します(ユーザーがこの状態までナビゲートしたと仮定しています)。状態内には絞込みフィルタが含まれているため、A.R.Lenobleという特定のWineryに結果が絞り込まれます。このリクエストでは、まだ使用可能な提案される絞込みのリストを取得するとともに、すべての絞込みに対して、すでに適用済の絞込み(明示的に選択されたものと暗黙的なもの)を取得します。
<ns:Request> <ns:State> <ns:Name>ref_state</ns:Name> <ns:SelectedRefinementFilter Name="Winery" Spec="A.R. Lenoble"/> </ns:State> <ns:NavigationMenuConfig Id="NavigationMenu" ExposeAllRefinements="true" ReturnFullPath="true" IncludeAllExplicitSelections="true" IncludeAllImplicitSelections="true"> <ns:StateName>ref_state</ns:StateName> <ns:RefinementConfig Name="WineType" Expose="true"/> <ns:RefinementConfig Name="Region" Expose="true"/> <ns:RefinementConfig Name="Winery" Expose="true"/> </ns:NavigationMenuConfig> </ns:Request>このリクエストでは、ナビゲーション・レベルで適用済の絞込みの両方のタイプ(暗黙的なものと明示的に選択されたもの)に対してtrueが指定されています。このため、該当する絞込みがWinery A.R.Lenobleの現在のナビゲーション状態に含まれている場合、レスポンスでは、その絞込みが、提案される絞込みのリストとともに取得されます。ExposeAllRefinements="true"である場合にのみ、適用済の絞込みの完全なリストがリクエストで返されることに注意してください。また、このリクエストでは、3つの属性(WineType、RegionおよびWinery)に対してすべての絞込み値を公開するように要求します。
<cs:Result>
<State>
<Name>ref_state</Name>
<SelectedRefinementFilter Name="Winery" Spec="A.R. Lenoble"/>
</State>
<cs:NavigationMenu Id="NavigationMenu">
<cs:NavigationMenuItem Name="Region" DisplayName="Region" MultiSelect="None"
HasMore="false">
<cs:ExposureControl Exposed="true"/>
<cs:RootDimensionValue DimensionName="Region" Spec="/"/>
<cs:ImplicitRefinement Name="Region" Spec="Champagne" Label="Champagne"/>
</cs:NavigationMenuItem>
<cs:NavigationMenuItem Name="Winery" DisplayName="Winery" MultiSelect="None"
HasMore="false">
<cs:ExposureControl Exposed="true"/>
<cs:RootDimensionValue DimensionName="Winery" Spec="/"/>
<cs:SelectedRefinement Name="Winery" Spec="A.R. Lenoble" Label="A.R. Lenoble" Count="3"/>
</cs:NavigationMenuItem>
<cs:NavigationMenuItem Name="WineType" DisplayName="Wine Type" MultiSelect="None"
HasMore="false">
<cs:ExposureControl Exposed="true"/>
<cs:Refinement Name="WineType" Spec="Brut Rose" Label="Brut Rose" Count="1"/>
<cs:Refinement Name="WineType" Spec="Brut Blanc de Blancs" Label="Brut Blanc de Blancs" Count="1"/>
<cs:Refinement Name="WineType" Spec="Brut" Label="Brut" Count="1"/>
<cs:RootDimensionValue DimensionName="WineType" Spec="/"/>
<cs:FullPath>
<cs:DimensionValue DimensionName="WineType" Spec="/">WineType</cs:DimensionValue>
<cs:DimensionValue DimensionName="WineType" Spec="Sparkling">Sparkling</cs:DimensionValue>
</cs:FullPath>
<cs:ImplicitRefinement Name="WineType" Spec="Sparkling" Label="Sparkling"/>
</cs:NavigationMenuItem>
</cs:NavigationMenu>
</cs:Results>
このレスポンスでは、Stateが最初に返され、ワイン醸造所L.A.Lenobleの選択済フィルタが反映されます。その後のNavigationMenuには、Region、Winery、WineTypeの各属性用に3つのNavigationMenuItem要素が含まれています。
<cs:NavigationMenuItem Name="Region" DisplayName="Region" MultiSelect="None"
HasMore="false">
<cs:ExposureControl Exposed="true"/>
<cs:RootDimensionValue DimensionName="Region" Spec="/"/>
<cs:ImplicitRefinement Name="Region" Spec="Champagne" Label="Champagne"/>
</cs:NavigationMenuItem>
<cs:NavigationMenuItem Name="WineType" ...>
...
<cs:ImplicitRefinement Name="WineType" Spec="Sparkling" Label="Sparkling"/>
</cs:NavigationMenuItem>
これは、このデータセットにおいて、Champagne地方にあるA.R. Lenobleワイン醸造所のワインは3種類しかなく、生産しているのはシャンパンのみであるためです。したがって、状態のフィルタでワイン醸造所としてA.R. Lenobleを指定することにより(SelectedRefinementFilter Name="Winery" Spec="A.R. Lenoble")、ユーザーはさらに2つの絞込み(Regionの値ChampagneとWineTypeの値Sparkling)を暗黙的に選択することになります。
<cs:NavigationMenuItem Name="Winery" ...>
...
<cs:SelectedRefinement Name="Winery" Spec="A.R. Lenoble" Label="A.R. Lenoble" Count="3"/>
</cs:NavigationMenuItem>
ユーザー・インタフェースでは、この情報を使用して、これらのすでに適用済の絞込みを(すでに選択済であるため)選択不可として表示できます。オプションで、これらのどの絞込みが暗黙的に選択されているかをユーザーに示すこともできます。
<cs:NavigationMenuItem Name="WineType" ...>
...
<cs:Refinement Name="WineType" Spec="Brut Rose" Label="Brut Rose" Count="1"/>
<cs:Refinement Name="WineType" Spec="Brut Blanc de Blancs" Label="Brut Blanc de Blancs" Count="1"/>
<cs:Refinement Name="WineType" Spec="Brut" Label="Brut" Count="1"/>
最後に、リクエストで要求された3つの絞込みはすべて(階層がある)管理属性を対象としているため、RootDimensionValue要素およびFullPath要素内に各絞込みの階層に関する追加情報が返されます。
要約すると、この方法により、すべての属性に対して適用済の絞込みを取得するかどうかを制御できます。このグローバル制御に加えて、明示的に選択された絞込み、暗黙的な絞込みまたはその両方を取得するかどうかを個々の属性ごとに指定することもできます。個々の属性ごとに適用済の絞込みの完全なリストを取得すると、すべての属性に対する適用済の絞込みの取得がオーバーライドされます。詳細は、「属性ごとの適用済の絞込みの取得」を参照してください。