この項では、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 7.6.xでは、ARB、COUNTおよびCOUNTDISTINCT関数が複数割当て属性で動作するように更新されました。=(等号)、<(小なり)および>(大なり)演算子もセット間が等しいことをテストするために更新されました。
RETURN results AS SELECT ARB(Score) AS scores GROUP BY WineType
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章(セットおよび複数割当てデータに関する説明)を参照してください。
RETURN results AS SELECT Price AS totals GROUP
文は、暗黙的なARBがPrice属性の周囲に追加されていたため、正しく解析されていました。
7.6では、暗黙的なARBは追加されなくなりました。つまり、集計を行わない属性のSELECTは許可されなくなりました。グループの文では、グループ属性でないすべての選択属性の集計は明示的に行う必要があります。
In computing non-grouping attribute "totals": Source attribute "NavStateRecords"."Price" must be aggregated
RETURN results AS SELECT ARB(Price) AS totals GROUP