絞込み構成の書式

対話Webサービス・リクエストのRefinementGroupConfig要素とRefinementConfigを使用して、属性の絞込み値を公開します。これらの要素により、多くの属性をすべて列挙しなくても、それらの属性に対する操作を一度に実行できます。

デフォルトでは、グループと絞込みの属性は折りたたまれています。絞込みを持つ属性を公開する場合は、絞込みを公開する各属性でRefinementConfigを使用するか、ExposeAllPropertyRefinementsを使用して、一度にすべての属性の絞込みを公開します。

RefinementGroupConfigの書式

RefinementGroupConfig要素は、グループに含まれる属性から絞込みのリストを返します。この中にはRefinementConfig要素が含まれます。

RefinementGroupConfigには次のパラメータが含まれます。
属性 説明
Expose 必須です。グループの属性を、少しでも可能性のある絞込みとして評価するかどうかを示します。

Expose属性の使用は、絞込みのグループがあり、フロントエンド・アプリケーションのユーザー・インタフェースでこれらの展開や折りたたみを行うことができるようにする場合は重要です。たとえば、国名の絞込みが必要な場合、それらを取得するには、UIで展開と折りたたみを有効にするExposeを初期リクエストで使用します。次に、個別の対話Webサービス・リクエストでこれらの絞込みをリクエストします。

ExposeAllPropertyRefinements オプション。グループのすべての属性に対して絞込みを公開する(つまり、絞込み値を計算する)かどうかを示します。
Name 必須です。グループの名前。
RefinementConfig要素は、次の例で示すようにNavigationMenuConfig要素で使用されます。2つのExpose属性に注目してください。これらは、2つの異なるレベルの公開に使用されます。1つ目ではグループの属性が公開され、2つ目ではその属性下の絞込みが公開されます。つまり、このリクエストはグループの属性を公開してから、グループSales-Transactionの一部であるOrderQuantity属性の絞込み値を公開します。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
   <State/>
   <ContentElementConfig xsi:type="NavigationMenuConfig"
     Id="NavigationMenu"
     HandlerFunction="NavigationMenuHandler" 
     HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <RefinementGroupConfig Name="Sales-Transaction" Expose="true">
       <RefinementConfig Name="OrderQuantity" Expose="true" MaximumCount="100" /> 
     </RefinementGroupConfig> 
   </ContentElementConfig>
</Request>

グループの個々の属性に対して操作を実行する場合、そのすべてに対して実行するのではなく(たとえば、個々の属性の設定をオーバーライドするなど)、RefinementGroupConfigで複数のRefinementConfig要素を使用できます。

RefinementConfigの書式

RefinementConfig要素は、NavigationMenuで個々の属性の動作を制御します。これは、ナビゲーション問合せで返される有効なすべての絞込みのうち、どの属性が実際の絞込み値を返す必要があるかを指定し、絞込み値の順序と数も指定します。オプションの項目が必要ない場合は、リクエストでRefinementConfigを省略できます。

注意: 管理属性から導出される階層絞込みの場合、そのフルパスを追加で取得できます。詳細は、次の項を参照してください。 「階層絞込みのフルパスの取得」.
RefinementConfigの基本書式を次の例に示します。
<RefinementConfig 
   Name="OrderQuantity" 
   Spec="/"
   Expose="false" 
   OrderByRecordCount="false" 
   MaximumCount="100">
</RefinementConfig>

1つの特定の属性に使用できるRefinementConfig要素は1つのみです。

属性の説明は次のとおりです。
属性 説明
Name 必須です。属性の名前。
Spec オプション。階層を降りる場合に使用されます。絞込みツリーを下にナビゲートしながら絞込みをたどる必要はありません。仕様は、問合せの絞込みの親を識別します。

たとえば、空の状態では、NavMenuは使用可能な管理属性ProductCategoryを示します。ユーザーがProductCategoryを展開すると、RefinementConfig Name="ProductCategory"RefinementConfigに置かれ、Endeca Serverに送られます。NavMenuは、展開可能なElectronicsを含むProductCategoryの絞込みを示します。ユーザーがElectronicsを展開すると、RefinementConfig Name="ProductCategory" Spec="Electronics"RefinementConfigに置かれ、Endeca Serverに送られます。

次に、Endeca Serverから受信するレスポンスにはNavMenuが含まれ、Electronicsで始まるProductCategoryの絞込みがあります。

階層を持つ絞込み(管理属性の値に基づく)の場合、絞込み値は、この仕様の子管理属性値に対して返されます。たとえば、Spec="/"は、ルートの管理値(WineTypeなど)を示し、Spec="Merlot"は子管理値を示します。

Expose オプション。この属性がわずかな程度でも絞込みであるかどうかを計算するにはfalse(デフォルト)を指定し、それが絞込みであるかどうかを計算して、さらに個々の絞込み(ある場合)を取得して公開する場合はtrueを指定します。
OrderByRecordCount オプション。個々の問合せに基づいてレコード数で順序付けする(動的順序付け)にはtrueを指定し、PDRのsystem-navigation_Sorting属性で指定した、Oracle Endeca Serverのデフォルト順序を使用するにはfalse (デフォルト)を指定します。
MaximumCount オプション。標準属性または管理属性当たり返される絞込みの数に最大制限を指定する整数です。

この設定が指定されていない場合、対話Webサービス・レスポンスで属性当たりに返される絞込みの数は、対話Webサービス・リクエストのNavigationMenuConfig要素のMaximumRefinementCount属性の値で指示されます。その値が指定されていない場合、デフォルトは10になります。

RefinementConfigに関する注意事項

注意: RefinementConfig要素は、オプションの問合せパラメータであることに注意してください。ただし、RefinementConfigが含まれない属性は絞込みを返しません(ExposeAllPropertyRefinementsがグループで使用される場合を除く)。つまり、デフォルトでは、グループと絞込みの属性は折りたたまれています。絞込みを持つ属性を公開する場合は、絞込みを公開する各属性でRefinementConfigを使用するか、ExposeAllPropertyRefinementsを使用して、一度にすべての属性の絞込みを公開します。次に、これらの使用例を示します。

Expose属性もオプションで、デフォルトではfalseに設定されています。Expose="false"は、パフォーマンスの改善に役立ちます。

たとえば、ユーザー定義グループSales-Characteristicsに3つの属性がある単純なデータセットで、次の問合せを行うとします。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
  <State/>
  <ContentElementConfig xsi:type="NavigationMenuConfig"
     Id="NavigationMenu"
     HandlerFunction="NavigationMenuHandler"
     HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <RefinementGroupConfig Name="Sales-Characteristics" Expose="false"/>
  </ContentElementConfig> 
 </Request>

これは、HasRefineablePropertiesで情報を返しますが、絞込み自体は返しません。これは、Oracle Endeca Serverで計算する場合よりも高速です。(グループのすべての属性を取得するには、Exposetrueに設定する必要があります)。

ただし、ProductType管理属性の問合せは次のようになります。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
  <State/>
  <ContentElementConfig xsi:type="NavigationMenuConfig" Id="NavigationMenu" 
     HandlerFunction="NavigationMenuHandler"
     HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
     <RefinementGroupConfig Name="Sales-Characteristics" Expose="true"> 
       <RefinementConfig Name="ProductType" Expose="true" />
     </RefinementGroupConfig>
   </ContentElementConfig>
</Request>

この場合は、3つの管理属性すべて(Sales-Characteristicsグループに含まれるため)と、ProductType管理属性の最上位レベル絞込み属性値が返されます。これは、Oracle Endeca Serverでの計算にかかるコストがわずかに増加し、3つのルート管理属性値と、ProductTypeの最上位レベル管理属性値を返しますが、有効な絞込みを選択するには必要になります。

より高度な問合せオプションは、(単一の属性ではなく)リクエストされたすべての属性に対する最上位レベル管理属性値の絞込みをすべて返します。このオプションでは、ExposeAllRefinements属性をtrueに設定します。アプリケーションでこの属性をtrueに設定している場合、問合せは次のようになります。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
  <State/>
  <ContentElementConfig xsi:type="NavigationMenuConfig"
     HandlerFunction="NavigationMenuHandler"
     HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0"
     Id="NavigationMenu"
     ExposeAllRefinements="true"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <RefinementGroupConfig Name="Sales-Characteristics" Expose="true"/>
  </ContentElementConfig>
</Request>

これは、3つの管理属性と、これらの各属性のすべての有効な最上位レベル管理属性値を返します。

これは次の問合せと同等です。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
   <State/>
   <ContentElementConfig xsi:type="NavigationMenuConfig"
      Id="NavigationMenu"
      HandlerFunction="NavigationMenuHandler" 
      HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <RefinementGroupConfig Name="Sales-Characteristics" Expose="true">
       <RefinementConfig Name="UnitPrice" Expose="true" /> 
       <RefinementConfig Name="OrderQuantity" Expose="true" /> 
       <RefinementConfig Name="CustomerPONumber" Expose="true" />
      </RefinementGroupConfig>
   </ContentElementConfig>
</Request>

これは、Oracle Endeca Serverでの計算にかかるコストが最も高い問合せタイプであり、3つのルート管理属性値とすべての最上位レベル管理属性値を返し、ネットワークとページ・サイズに対してより大きな負荷をかけます。ただし、この方法は、考えられるすべての絞込み値を常に表示する必要のあるカスタム・ナビゲーション・ソリューションの作成に効果的です。