管理属性値の追加

管理属性値は、管理属性に対する割当てを表します。Endecaデータ・ドメインの索引にそれらを追加すると、管理属性値はレコードとして表されます。管理属性値は、データ・レコードを追加する前に、空のデータ・ドメインに追加できます。

管理属性値の追加は、データ・レコードの追加方法に似ています。具体的には、管理属性値をロードするには、1つ以上のrecord要素を指定してデータ・インジェストWebサービスのaddRecordsサブ操作を使用し、1つ以上のingestChangesリクエストを発行できます。
<ns:record>
   <!--Zero or more repetitions:-->
   <ns1:attribute name="?" type="?">?</ns1:attribute>
 </ns:record>
record要素には、次の属性を指定する必要があります。
  • 管理属性値を追加する管理属性のキー。管理属性はすでに存在している必要があります。または、そのPDRおよびDDRを同じリクエストで追加できます。
  • 追加する新しい管理属性値レコードのspec。
  • 親管理属性値レコードのspec。親管理属性値はすでに存在している必要があります。または、同じリクエストで追加できます。
たとえば、次のリクエストでは、location管理属性がすでに存在し(したがって、そのPDRおよびDDRはすでにロードされており)、USというspecの親管理属性値がすでに追加されているとします。(PDRおよびDDRを追加していない場合は、「PDRおよびDDRの追加について」を参照してください。)このリクエストでは、VTというspecを持つ新しい管理属性値レコードを追加します。リクエストは、次のように指定します。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:ns="http://www.endeca.com/MDEX/ingest/3/0" xmlns:ns1="http://www.endeca.com/MDEX/XQuery/2009/09">
   <soapenv:Header/>
   <soapenv:Body>
    <ns:ingestChanges>
     <ns:addRecords>
      <ns:record>
       <ns1:attribute name="mdex-dimension_location_Parent" type="mdex:string">US</ns1:attribute>
       <ns1:attribute name="mdex-dimension_location_Spec" type="mdex:string">VT</ns1:attribute>
       <ns1:attribute name="mdex-dimension-value_Dimension" type="mdex:string">location</ns1:attribute>
      </ns:record>
     </ns:addRecords>                    
    </ns:ingestChanges>
   </soapenv:Body>
</soapenv:Envelope>
このリクエストでは、次の属性を指定しています。
  • 属性mdex-dimension-value_Dimension (管理属性キーを定義する初期プロパティ): 管理属性のキーであるlocation
  • 属性mdex-dimension_location_Parent (DDRで指定されている、親管理属性値の名前): 親管理属性値のキーであるUS
  • 属性mdex-dimension_location_Spec (追加する新しい管理属性値レコードのspecの名前): 管理属性値レコードのspecであるVT
注意: 管理属性値spec (この例ではmdex-dimension_location_Spec)と、管理属性値の親(mdex-dimension_location_Parent)の属性名を取得するには、この情報が必要な管理属性のキーを指定してgetDimensions構成Webサービス・リクエストを発行します。たとえば、管理属性locationに対するリクエストを発行します。

追加する管理属性値は、Endecaデータ・ドメインではまったく新しいレコードとみなされます。つまり、specと同じ値を持つ管理属性値レコードがデータ・ドメインにすでに存在する場合、addRecordsリクエストは失敗します。

管理属性値レコードをロードするには、次のようにします。

  1. Oracle Endeca Serverのendeca-cmdコマンドを使用してEndecaデータ・ドメインが作成され、そのデータ・ドメインが開始されていることを確認します。この時点で、データ・レコードは何も追加されていないとします。
  2. 管理属性に対する構成Webサービス・リクエストを発行して、管理属性値のspecおよび親(管理属性が存在する場合)の名前を取得します。たとえば、次のリクエストでは管理属性locationに関する情報を取得します(省略されているネームスペースはns="http://www.endeca.com/MDEX/config/services/types/3/0"です)。
    <ns:configTransaction>
                 <ns:getDimensions>
                  <mdex-dimension_Key>location</mdex-dimension_Key>
             </ns:getDimensions>
         </ns:configTransaction>
    このリクエストから、次の情報が返されます。
    <config-types:results xmlns:config-types="http://www.endeca.com/MDEX/config/services/types/3/0">
             <dimensions xmlns="http://www.endeca.com/MDEX/config/XQuery/2009/09">
                <record>
                   <mdex-dimension-value_Parent type="mdex:string" xmlns="">mdex-dimension_location_Parent</mdex-dimension-value_Parent>
                   <mdex-dimension-value_Spec type="mdex:string" xmlns="">mdex-dimension_location_Spec</mdex-dimension-value_Spec>
                   <mdex-dimension_EnableRefinements type="mdex:boolean" xmlns="">true</mdex-dimension_EnableRefinements>
                   <mdex-dimension_IsDimensionSearchHierarchical type="mdex:boolean" xmlns="">true</mdex-dimension_IsDimensionSearchHierarchical>
                   <mdex-dimension_IsRecordSearchHierarchical type="mdex:boolean" xmlns="">true</mdex-dimension_IsRecordSearchHierarchical>
                   <mdex-dimension_Key type="mdex:string" xmlns="">location</mdex-dimension_Key>
                </record>
             </dimensions>
          </config-types:results>
    条件:
    • mdex-dimension-value_Specは、管理属性値のspec属性名の値を保持します。この例では、このspecの値はmdex-dimension_location_Specです。この値は、この書式に従う必要はありません。管理属性自体を追加する際は、任意の名前を選択できます。たとえば、この目的に使用する属性がすでに存在する場合、string型の一意の単一割当てで、何も割り当てられていない必要があります。管理属性を作成するとき、(この例のように)管理属性値のspecの指定を省略することもできます。これは、この属性がDDRではオプションであるためです。指定しない場合は、属性が作成され、specの値の書式はこの例のような書式とみなされます。管理属性値の詳細は、『Oracle Endeca Server開発者ガイド』を参照してください。
    • mdex-dimension-location_Parentは、親管理属性値の値を定義します。ネーミング規則はspecの場合と同じです。管理属性のDDRを作成するときに名前を指定しなかった場合、書式はこの例と同じようにmdex-dimension_location_Parentとなります。あるいは、任意の名前を選択できます。たとえば、この目的に使用する属性がすでに存在する場合、string型の単一割当てで、何も割り当てられていない必要があります。

    データ・インジェストWebサービスの後続のaddRecordsリクエストでこれらの属性とその値を使用して、管理属性値を追加します。

  3. 次の例のようにingest:ingestChangesリクエストを作成し、データ・インジェストWebサービスにリクエストを送信します。このリクエストでは、追加する新しい管理属性値レコードのspec (この場合はVT)、親管理属性値のspec (US)、関連付けられた管理属性の名前(location)を指定します。
    <ns:ingestChanges>
     <ns:addRecords>
       <ns:record>
        <ns1:attribute name="mdex-dimension_location_Parent" type="mdex:string">US</ns1:attribute>
        <ns1:attribute name="mdex-dimension_location_Spec" type="mdex:string">VT</ns1:attribute>
        <ns1:attribute name="mdex-dimension-value_Dimension" type="mdex:string">location</ns1:attribute>
        <ns1:attribute name="mdex-dimension-value_name" type="mdex:string">Vermont</ns1:attribute>
        <ns1:attribute name="mdex-dimension-value_synonyms" type="mdex:string">The Green Mountain State</ns1:attribute>
        <ns1:attribute name="mdex-dimension-value_synonyms" type="mdex:string">The Ski State</ns1:attribute>
        <ns1:attribute name="mdex-dimension-value_rank" type="mdex:string">3</ns1:attribute>
       </ns:record>
      </ns:addRecords>                           
     </ns:ingestChanges>

    リクエストは通常、ETLクライアントによって作成および管理されます。または、soapUIを使用できます。

    この例では、管理属性値spec (VT)とその他の必要な特性(親管理属性と、関連付けられた管理属性)を追加する他、オプションの追加パラメータも指定しています。たとえば、管理属性値の名前(Vermont。Specと異なっていてもかまいません)、この値のシノニム(1つ以上を指定可能)、この管理属性内の静的ランクなどです。

  4. リクエストの作成後、ingestChangesResponseを参照して、リクエストが成功したかどうかを確認します。
    前のサンプル・リクエストから返される成功時のingestChangesResponseは、次のようになります。
    <ingest:ingestChangesResponse xmlns:ingest="http://www.endeca.com/MDEX/ingest/3/0">
             <ingest:numPropertiesCreated>0</ingest:numPropertiesCreated>
             <ingest:numRecordsAffected>1</ingest:numRecordsAffected>
             <ingest:numRecordsDeleted>0</ingest:numRecordsDeleted>
          </ingest:ingestChangesResponse>
    注意: 管理属性値の追加にデータ・インジェストWebサービスのingestChanges操作を使用した場合、ランキングの競合は解決されず、前に追加した値と競合する場合でもランキング値はすべて追加できます。Endeca Serverで既存の値のランクを自動的に再設定し、ランキングの同位を解決する場合は、管理属性値の追加に構成WebサービスのputManagedAttributeValues操作を使用します。

管理属性値を追加する他、データ・インジェストWebサービスのupdateRecordsサブ操作を使用して、管理属性値に対する割当てを更新することもできます。ただし、更新できるのは管理属性値を追加した後で、mdex-dimension-value_name属性およびmdex-dimension-value_rank属性の値のみです。