EQLレコード・フィルタでは、合計レコード・セットの任意のサブセットを定義し、検索とナビゲーションの結果をこれらのサブセットに動的に制限できます。
どちらのフィルタも問合せの状態で使用されます。両方のフィルタのフィルタ言語は、基本的にEQLからのレコード・フィルタWHERE句表現になります。
フィルタの構文とEQLの使用可能な演算子の詳細は、後続のトピックで説明します。
DataSourceFilterコンポーネントは、他の処理を行う前にレコードのコーパスをフィルタします。つまり、このフィルタが最初に適用され、問合せで表示可能な大量のデータを削減します。これは、フィルタされたレコードはスペル修正に貢献せず、EQLでAllBaseRecordsの一部として利用できないことを示します。DataSourceFilterは、(状態で指定された)コレクションに対する問合せをサポートします。
DataSourceFilterは、検索可能なレコードを、Dgraphの合計レコードの指定したサブセットに限定するため、表示が許可されないレコードをユーザーが取得できないようにするセキュリティ・フィルタとして使用できます。EQL用語では、AllBaseRecordsは、DataSourceFilterフィルタを渡すレコードに相当します。
問合せの処理中に、Endeca Serverは、コレクション名を含むすべての状態にDataSourceFilterを自動的に追加することに注意してください。詳細は、「データ・ソース・フィルタの自動追加」を参照してください。
大量のレコードがDataSourceFilterで絞り込まれると、追加のアプリケーションレベルのフィルタにSelectionFilterコンポーネントが使用されます。これは、最終レコード結果セットの基準を指定します。返される結果は、問合せで指定されるすべてのフィルタに一致するレコードになります。
SelectionFilterは、(状態で指定された)コレクションに対する問合せをサポートします。それらのコレクションに関連付けられているすべてのフィルタ・ルールが問合せで自動的に呼び出されます。リクエストによって暗黙的なフィルタが生成された場合、その暗黙的なフィルタに関する結果の情報がAppliedFilterRule要素で返されます。
SelectionFilterは、データが絞込みの計算に使用できるかどうかも判断します。NavStateRecordsは、すべてのフィルタ(SelectionFilterを含む)を渡すレコードに相当します。
状態には、複数のDataSourceFilterフィルタおよび/またはSelectionFilterフィルタを含めることができます。この場合は、状態内の各フィルタに一意の名前を指定する必要があります。
2つ以上のフィルタを指定した場合(たとえば、2つのSelectionFilter要素)、複数の検索の共通部分を表すレコード・セットが返されます。たとえば、一方のSelectionFilterフィルタでColor=redを検索し、もう一方のSelectionFilterフィルタでColor=blueを検索した場合、結果のレコード・セットとして、(すべてのredレコードとすべてのblueレコードの和集合ではなく)redとblueの両方の割当てを持つ各レコードが返されます。
EQLレコード・フィルタを有効にするために必要なDgraphプロセス構成フラグはありません。