管理属性の階層フィルタ

EQLレコード・フィルタは、検索条件に管理属性値を指定できます。

管理属性値を指定するには、2つのEQL階層関数を使用できます。
階層関数
IS_ANCESTOR(managedAttribute, valueSpec) 特定の属性が指定された属性または祖先の場合、レコードを含めます。属性が指定された階層のメンバーではない場合、問合せ時のエラーになります。
IS_DESCENDANT(managedAttribute, valueSpec) 特定の属性が指定された属性または子孫の場合、および指定された値の仕様が一致する場合、レコードを含めます。属性が指定された階層のメンバーではない場合、問合せ時のエラーになります。

どちらの関数の場合も、managedAttributeは管理属性の名前、valueSpec (文字列で指定)は管理属性値の仕様(値名ではない)になります。

次の例では、IS_DESCENDANT関数が使用されます。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <Request xmlns="http://www.endeca.com/MDEX/conversation/2/0">
        <State>
          <DataSourceFilterString>COUNTRY_NAME = 'United States of America'</DataSourceFilterString>
          <SelectionFilterString>IS_DESCENDANT(ProductCategory, '140')</SelectionFilterString>
        </State>
        <ContentElementConfig xsi:type="RecordListConfig"
          HandlerFunction="RecordListHandler"
          HandlerNamespace="http://www.endeca.com/MDEX/conversation/handlers/2010"
          Id="RecordList" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        </ContentElementConfig>
       </Request>
    </soapenv:Body>
</soapenv:Envelope>
検索は、仕様が140で、ProductCategory管理属性の子孫である管理属性値でフィルタ処理されます。返される各値には次の割当てが必要です。
<cs:Record>
   ...
   <ProductCategory cs:ValueName="Endurance Racing" type="mdex:string">140</ProductCategory>
   ...
</cs:Record>