階層絞込みのフルパスの取得

管理属性グループ(階層を含む属性のグループ)では、NavigationMenuConfigで指定されるReturnFullPathで絞込みに関する階層情報をリクエストできます。また、管理属性値の場合、階層情報は任意のレコード・リスト・リクエストのDimensionHierarchyおよびDimensionValueWithPathタイプで返されます。

階層情報は、特定の管理属性の背後にある絞込みを表します。たとえば、ProductCategory管理属性に1レベルの階層(CAT_COMPONENTS)が含まれ、現在の問合せがカテゴリ・コンポーネント・レベルの場合は、階層絞込みのフルパスを次のリストで表すことができます。
ProductCategory > CAT_COMPONENTS > Brakes
この特定のコンポーネントの場合、絞込み値はBrakes絞込みに対しても存在し、問合せをさらに絞り込みます。

階層を含む属性のナビゲーションについて

Endeca Serverの管理属性が表す階層関係では、特定の値に割り当てられたレコードが、その値のすべての先祖に暗黙的に割り当てられます。ワインのレコードの例では、分類階層にWine Type : Red > Merlotというパスが含まれます。つまり、Merlotとタグ付けされたレコードはすべて、暗黙的にRedとタグ付けされます。

Redへの絞込み(すなわちRedによるグループ分け)では、Merlotにマッピングされたすべてのレコード(およびRedに直接されたすべてのレコード)が表示されます。階層属性を使用すると、絞込みは後続ナビゲーションで引き続き生成されます。たとえば、ユーザーは「Merlot」をクリックすると、Merlotのみを表示することができます。Redに直接タグ付けされた項目またはCabernet (Merlotの兄弟)にタグ付けされた項目を除外できます。

要約すると、階層を含む管理属性の予期される動作は、ナビゲーションのどの時点でも、Endeca Serverが、ユーザー選択値にタグ付けされた属性だけではなく、階層の上位の値に暗黙的にタグ付けされた属性も返すことです。つまり、1レベルの属性値を取得することはできません。これは、データ・ドメインのレコードについて作成する属性のタイプ(標準または管理)を決定するときに考慮することが重要です。たとえば、フロントエンド・アプリケーションのユーザーが、特定の値にタグ付けされたすべてのレコードを取得する場合、その値は、管理属性ではなく、階層に対応していない標準属性に所属する必要があります。

属性グループの階層情報の取得

属性グループの階層絞込みのフルパスをリクエストするには、NavigationMenuConfigに対してReturnFullPath属性を使用します。ReturnFullPathには次の値があります。
属性 説明
ReturnFullPath レスポンスで階層絞込みのフルパスを返すかどうかを指定します。この設定は、絞込みとブレッドクラムのナビゲーション問合せに関連します。

trueに設定されている場合、返される絞込みには、ProductCategory > CAT_COMPONENTS > Brakesのように親絞込み値までのフルパスが含まれます。

falseに設定されている場合は、先祖へのパスのない絞込みのみ返されます。デフォルトはfalseです。

NavigationMenuConfigの書式を次の例に示します。これは、すでに作成された属性グループProduct Categoriesに対してtrueに設定されたReturnFullPath属性を使用します。
<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"
     ReturnFullPath="true">
   <RefinementGroupConfig Name="Product Categories" Expose="true"> 
     <RefinementConfig Name="CAT_COMPONENTS" Expose="true" MaximumCount="3"/>
   </RefinementGroupConfig>
</ContentElementConfig>

階層のないフラット管理属性では、値が属性に対してすでに選択されていた場合にそれ以上絞込みは行われないため、絞込みの親は常に属性ルートです。

特定の管理属性の絞込みは、Oracle Endeca Serverから属性内の同じレベルでのみ返すことができます。たとえば、Oracle Endeca Serverは、国、都道府県、地域が混在した絞込み選択肢のリストを返すことはできません。階層が属性に対して明示的に定義されているすべての場合において、特定の問合せに対して同じ階層レベルに対する絞込みのみ返されます。

対話Webサービスの次のリクエスト例は、標準または管理属性の階層絞込みのフルパスを取得する方法を示しています。
<Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
  <State>
    <SelectedRefinementFilter Name="WineType" Spec="/Red"/>
  </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"
     ReturnFullPath="true">
    <RefinementGroupConfig Name="Product Categories" Expose="true">
     <RefinementConfig Name="CAT_COMPONENTS" Expose="true" MaximumCount="3"/>
    </RefinementGroupConfig>
  </ContentElementConfig>
</Request>

レスポンスは、階層絞込みのリストを返します。これには、属性グループ情報と、このグループのすべての属性が含まれます。

管理属性値の階層情報の取得

管理属性値の階層情報を取得するには、ContentElementConfigの一部であるRecordListConfigタイプとともに、レコード・リストをリクエストする問合せを使用できます。

RecordListConfig問合せに対するレスポンスでは、次の2つのタイプに管理属性の階層とパス情報が含まれます。
  • DimensionHierarchy複合タイプは、指定した管理属性のパスのコレクションを返します。
  • DimensionValueWithPath複合タイプは、管理属性のルートから絞込み属性値までのパスを指定します。
たとえば、次の省略されたレコード・リスト問合せの例について考えます。
<ns:ContentElementConfig xsi:type="ns:RecordListConfig"
    Id="RecordList"
    HandlerFunction="RecordListHandler"
    HandlerNamespace="http://www.endeca.com/MDEX/conversation/2/0" 
    MaxPages="60">
   <ns:Column>ProductCategory</ns:Column>
   <ns:RecordsPerPage>200</ns:RecordsPerPage>
   <ns:Page>2</ns:Page>
   <ns:Sort Key="Description" Direction="Ascending"/>
</ns:ContentElementConfig>
このリクエストは、管理属性ProductCategoryの階層情報と階層パスを返します。次の省略されたレスポンス例に、返される階層情報を示します。
<cs:DimensionHierarchy>
   <cs:DimensionValueWithPath>
      <cs:DimensionValue DimensionName="ProductCategory" 
       Spec="4">Handlebars</cs:DimensionValue>
      <cs:DimensionValue DimensionName="ProductCategory" 
        Spec="CAT_COMPONENTS">Components</cs:DimensionValue>
      <cs:DimensionValue DimensionName="ProductCategory" 
        Spec="/">ProductCategory</cs:DimensionValue>
   </cs:DimensionValueWithPath>
   <cs:DimensionValueWithPath>
      <cs:DimensionValue DimensionName="ProductCategory" 
        Spec="6">Brakes</cs:DimensionValue>
      <cs:DimensionValue DimensionName="ProductCategory" 
        Spec="CAT_COMPONENTS">Components</cs:DimensionValue>
      <cs:DimensionValue DimensionName="ProductCategory" 
        Spec="/">ProductCategory</cs:DimensionValue>
   </cs:DimensionValueWithPath>
</cs:DimensionHierarchy>