EQLを使用したレコードの識別

更新または削除対象のレコードを1つ以上識別するには、EQL式を使用します。

レコード・セット指定子について

既存のレコードを更新または削除するingestChanges操作には、操作対象のレコード・セットを識別するレコード・セット指定子が必要な場合があります。レコード・セット指定子は、操作のrecordSpecifier要素内のEQL式で評価されます。

EQL式では、1つ以上のレコード属性を使用して、操作によって更新または削除されるレコード・セットを識別します。EQL式で指定されるレコード属性には、レコードの任意の属性(レコードの主キー属性を含む)を使用できます。

ただし、主キー属性はEQL式で必ず使用される必要があるので注意してください。たとえば、red、blueなどの値が指定されたcolorという名前の属性を保持するレコードが(複数)あるとします。この場合は、EQL式を使用して、color=red割当てを保持するすべてのレコードを削除するように指定できます。

EQL式の評価でゼロ件のレコードが識別される可能性もあり、その場は更新または削除が実行されないので注意してください。

EQL構文の詳細は、Oracle Endeca EQLガイドを参照してください。

EQLを使用した単一レコードの識別

次の例は、単一レコードを識別するEQL構文を含むrecordSpecifier要素を示しています。このデータ・セットで、主キー属性はpartIDという名前の属性(stringタイプ)です。次の式では、主キーがP123のレコードを識別します。
<recordSpecifier>"partID" = 'P123'</recordSpecifier>
ここで、
"partID" ='P123'
はstring値に対するEQL式です。
同様に、主キー属性がmodelNumという名前の属性(integerタイプ)の場合、主キーが45のレコードを識別するEQL式は次のようになります。
<recordSpecifier>"modelNum" = 45</recordSpecifier>
注意: これらの例では、EQLで主キー属性を使用する方法を示していますが、レコードの更新または削除では、データ・セットの任意の属性をEQL式で使用できます。新規レコードを追加する場合は、他の属性の値は使用せずに、主キー属性の値を指定したEQL式でレコードを識別します。

EQLを使用した複数のレコードの識別

次の例では、integerタイプの属性Numの値が45よりも大きいレコードをすべて識別します。
<ns:recordSpecifier>"Num" > 45</ns:recordSpecifier>
次の例では、属性price (doubleタイプ)の値が19.99より大きく、49.99より小さいレコードを識別します(両端の値を含まない)。
<ns:recordSpecifier>
("price" &gt; 19.99) AND ("price" &lt; 49.99)
</ns:recordSpecifier>
注意: この例では、このリクエストのXML構文が正しく解析されるようにするため、不等号(大なり、小なり)はエスケープ処理されています。
最後に、次の例のEQL式では、属性tagに割当て値が存在するレコードを識別します。
<ns:recordSpecifier>"tag" IS NOT NULL</ns:recordSpecifier>

EQLエラー・メッセージに対する言語IDの設定

EQL式の構文が正しくないと、データ・インジェストWebサービスはEQL構文エラー・メッセージを返します。ingestChanges複合タイプにはオプションのLanguage要素があり、EQLエラー・メッセージが返される言語を設定できます。要素は次のようになります。
<ns:ingestChanges>
   <!--Optional:-->
   <ns:OuterTransactionId>?</ns:OuterTransactionId>
   <!--Optional:-->
   <ns:Language>en</ns:Language>
   <!--Zero or more repetitions:-->
   <ns:updateRecords>
   ...
   </ns:updateRecords>
   ...
</ns:ingestChanges>
サポートされる言語とそれに対応する言語IDは次のとおりです。
  • 中国語(簡体字): zh_CN
  • 中国語(繁体字): zh_TW
  • 英語: en
  • フランス語: fr
  • ドイツ語: de
  • イタリア語: it
  • 日本語: ja
  • 韓国語: ko
  • ポルトガル語: pt
  • スペイン語: es

デフォルトは、en (英語)言語IDです。