ここでは、標準属性スキーマを作成するためにプロパティ詳細レコード(PDR)をロードするグラフの実装に関する詳細を説明します。
標準属性スキーマをロードするには、CSVベースの構成グラフを使用します。「CSVベースの構成グラフ」を参照してください。
PDR入力ファイルでは、必須およびオプションのPDRプロパティの特定の設定で、1つ以上のEndeca標準属性を定義します。入力ファイルは、次の図のようなものです。
サンプル・ファイルの1行目は、入力ファイルで定義されたプロパティを指定するヘッダー行です。mdex-property_Keyの値を指定する必要があります。その他のmdex-*およびシステム・ナビゲーション・プロパティはオプションです。指定しない属性プロパティでは、デフォルトが使用されるか、または定義されません。標準属性のシステム・デフォルト値の詳細は、「標準属性のデフォルト値」を参照してください。
Key,DisplayName,TextSearch,SortOrder
これらのプロパティの名前は任意です。入力ファイルでは、選択する様々な名前を使用できます(たとえば、KeyではなくAttrNameを使用してもかまいません)。各プロパティは、たとえばCSVファイルのカンマ、テキスト・ファイルのパイプ文字などによって区切られます。
入力ヘッダー・プロパティ | PDRプロパティへのマップ |
---|---|
Key | mdex-property_Key |
DisplayName | mdex-property_DisplayName |
TextSearch | mdex-property_IsTextSearchable |
SortOrder | system-navigation_Sorting |
入力ファイルの2行目以降には、構成プロパティの値が含まれます。
構成グラフでは、Reformatコンポーネントを使用して、標準属性スキーマを定義するためにサーバーに送信するXMLを作成します。XMLは、PDRセット(<mdex:record>)から構成され、各PDRは属性プロパティ(たとえば<mdex-property_Key>、<mdex-property_DisplayName>など)から構成されます。
integer n = 1; integer aggrKey = 0; // Transforms input record into output record. function integer transform() { string searchBool = ""; string saRecord = "<mdex:record xmlns=\"\">"; saRecord = saRecord + "<mdex-property_Key>" + $0.Key + "</mdex-property_Key>"; saRecord = saRecord + "<mdex-property_DisplayName>" + $0.DisplayName + "</mdex-property_DisplayName>"; // Lower case the boolean in the CSV file searchBool = lowerCase($0.TextSearch); saRecord = saRecord + "<mdex-property_IsTextSearchable>" + searchBool + "</mdex-property_IsTextSearchable>"; saRecord = saRecord + "<system-navigation_Sorting>" + $0.SortOrder + "</system-navigation_Sorting>"; $0.xmlString = saRecord + "</mdex:record>"; // Batch up the web service requests. $0.singleAggregationKey = aggrKey; n++; if (n % 15 == 0) { aggrKey++; } return ALL; }
まず、このコードは2つの整数変数を(第1の変数はループ・カウンタとして、第2の変数は集約キー(aggKey)として)定義します。
次に、transform()関数が、<mdex:record>コンテナを作成し、入力ファイルで定義されたプロパティに対応するノード(<mdex-property_Key>、<mdex-property_DisplayName>)をそのコンテナに移入することにより、PDRを作成します。各ノードの値は、入力ファイルの対応する値から導出されます。
この例では、すべて大文字で指定されたテキスト検索フィールドの値は、XMLに追加される前に小文字に変換されることに注意してください。
最後に、レコードはサーバーへの送信のために15のバッチにグループ化されます。バッチで送信することにより、グラフ内のすべてのコンポーネントを通じて連続的な処理ストリームが保証され、Integrator ETLとEndeca Serverの両方のパフォーマンスが向上します。
Endeca ServerにPDR構成をロードするには、構成WebサービスのupdateProperties操作を使用します。この操作により新しい標準属性が作成され、影響を受けるすべての既存の標準属性が新しいデータにより更新されます。次のコードは、PDRをロードするための一般的なupdateProperties操作を示しています。
<config-service:configTransaction xmlns:config-service="http://www.endeca.com/MDEX/config/services/types/3/0"> <config-service:OuterTransactionId>${OUTER_TRANSACTION_ID}</config-service:OuterTransactionId> <config-service:updateProperties xmlns:mdex="http://www.endeca.com/MDEX/XQuery/2009/09"> $xmlString </config-service:updateProperties> </config-service:configTransaction>
この例には、次の2つの変数が含まれます。
OUTER_TRANSACTION_ID
この変数は、リクエストの外部トランザクションIDを指定します。変数とその値は、Integrator ETLプロジェクトのworkspace.prmファイルに格納されます。
$xmlString
この変数には、グラフ内のReformatコンポーネントによって構築されたPDRが含まれます。
このコードは、構成グラフ内のWeb Services Clientコンポーネントに追加されます。