Endeca Query Languageの変更

この項では、Endeca Query Language (EQL)で必要な変更および動作の変更について説明します。

セットおよび複数割当て属性の完全なサポート

Endeca Serverバージョン7.5.xでは、7.6.xのEQLの文の結果で複数割当て属性がサポートされないなど、複数割当て属性のサポートに制限がありました。また、7.5.xのEQLでは、多くのコンテキストにおいて複数割当てコーパス属性で暗黙的な非複数割当てが実行されていました。非複数割当ては、そのレコード内から特定の割当て値が選択され、1つのレコードに対して操作されていました。また、複数割当て属性を参照する文で、EQLは、属性値すべてを選択するのではなく、それぞれの入力レコード用に複数割当て属性から任意の値を選択していました。

Endeca Server 7.6.xのEQLでは、複数割当て属性は完全にサポートされています。たとえば、複数割当て属性は文の結果に使用されます。レコードに割り当てられた複数割当て属性の(1つのみではなく)すべての値がEQLにセットとして返されます。選択した複数割当て属性からの割当てのないレコードからは、空のセットが返されることに注意してください。

EQLの様々な新しいセット関数を使用して、2つのセットの論理積または論理和を求めるなど、セットに対して操作を実行できます。また、これは、複数割当てコーパス属性の暗黙的な非複数割当ては実行されなくなり、EQLはレコードから1つのみの任意の値ではなく複数割当て値をすべて選択するようになったことを意味します。

セットとアトミック値のデータ型は異なることを理解しておくことは重要です。たとえば、整数型の複数割当て属性のセットのデータ型はmdex:long-setですが、整数型の単一割当て属性のアトミック値のデータ型はmdex:longです。

複数割当て属性を選択または使用する7.5.xのEQL文がある場合、セットの実装で動作するように書き直す必要がある場合があります。

EQL 7.6.xでセットおよび複数割当てデータを使用する方法の詳細は、『Oracle Endeca Server EQLガイド』を参照してください。

以前のEQL関数の変更

EQL 7.6.xでは、ARBCOUNTおよびCOUNTDISTINCT関数が複数割当て属性で動作するように更新されました。=(等号)、<(小なり)および>(大なり)演算子もセット間が等しいことをテストするために更新されました。

その他のすべての7.5.x関数および演算子はセットでは使用できず、使用した場合、データ型不一致のエラーが生成されます。たとえば、Scoreという名前の属性が整数型の複数割当て属性の場合、ARBを使用するこの文は正しく動作します。
RETURN results AS
SELECT ARB(Score) AS scores
GROUP BY WineType
ただし、SUM関数を使用した場合、
RETURN results AS
SELECT SUM(Score) AS scores
GROUP BY WineType
文はこのエラーで失敗します。
In computing attribute "scores": "SUM" is not a valid 
aggregating function over the types (mdex:long-set)

IS NULLおよびIS NOT NULL操作は、セットではサポートされていないことに注意してください。かわりに、新しいIS_EMPTYおよびIS_NOT_EMPTY関数(またはその代替の構文バージョン、IS EMPTYおよびIS NOT EMPTY)を使用します。

新しいセット関数に関するドキュメントについては、『Oracle Endeca Server EQLガイド』の第5章(セットおよび複数割当てデータに関する説明)を参照してください。

暗黙的なARBの削除

EQLは、集計を必要とする暗黙的なARB属性参照の周囲に暗黙的なARBを挿入しなくなり、かわりにユーザーにエラー警告を示すようになりました。たとえば、7.5では(単一割当てのdouble属性である)Priceは集計されないにもかかわらず、次の文が許可されていました。
RETURN results AS
SELECT Price AS totals
GROUP

文は、暗黙的なARBがPrice属性の周囲に追加されていたため、正しく解析されていました。

7.6では、暗黙的なARBは追加されなくなりました。つまり、集計を行わない属性のSELECTは許可されなくなりました。グループの文では、グループ属性でないすべての選択属性の集計は明示的に行う必要があります。

つまり、7.6では上述の問合せは次のエラー・メッセージで失敗します。
In computing non-grouping attribute "totals": 
Source attribute "NavStateRecords"."Price" must be aggregated
したがって、ユーザーが明示的に文にARBを追加する必要があります。
RETURN results AS
SELECT ARB(Price) AS totals
GROUP