EQLレコード・フィルタについて

EQLレコード・フィルタでは、合計レコード・セットの任意のサブセットを定義し、検索とナビゲーションの結果をこれらのサブセットに動的に制限できます。

対話Webサービスには、EQL (Endeca Query Language)を使用して、次のEQL構文を使用する問合せにフィルタを指定することができる2つのフィルタ・コンポーネントがあります。
両方のコンポーネントのフィルタ言語は、基本的にEQLからのレコード・フィルタWHERE句表現になります。どちらのフィルタも、次の省略された例のように、問合せのState要素で使用されます。
<Request>  <State>    <DataSourceFilterString>PROD_CATEGORY = 'Hardware'</DataSourceFilterString>    <SelectionFilterString>AMOUNT_SOLD > 1000</SelectionFilterString>  </State>...</Request>

EQLの使用可能な演算子と関数の詳細は、後続のトピックにリストします。

DataSourceFilterString

DataSourceFilterStringコンポーネントは、他の処理を行う前にレコードのコーパスをフィルタします。つまり、このフィルタが最初に適用され、問合せで表示可能な大量のデータを削減します。これは、フィルタされたレコードはスペル修正に貢献せず、EQLでAllBaseRecordsの一部として利用できないことを示します。

DataSourceFilterStringは、検索可能なレコードを、Dgraphの合計レコードの指定したサブセットに限定するため、表示が許可されないレコードをユーザーが取得できないようにするセキュリティ・フィルタとして使用できます。EQL用語では、AllBaseRecordsは、DataSourceFilterStringフィルタを渡すレコードに相当します。

SelectionFilterString

大量のレコードがDataSourceFilterStringで絞り込まれると、追加のアプリケーションレベルのフィルタにSelectionFilterStringコンポーネントが使用されます。これは、最終レコード結果セットの基準を指定します。返される結果は、問合せで指定されるすべてのフィルタに一致するレコードになります。

SelectionFilterStringは、データが絞込みの計算に使用できるかどうかも判断します。NavStateRecordsは、すべてのフィルタ(SelectionFilterStringを含む)を渡すレコードに相当します。

EQLフィルタの最大数

問合せでは、最大で1つのDataSourceFilterStringフィルタと1つのSelectionFilterStringフィルタを使用できます。このようなフィルタが2つ以上指定されると、問合せは失敗し、次のような該当のエラー・メッセージが表示されます。
You may not have more than one DataSourceFilter across State and Operators  You may not have more than one SelectionFilter across State and Operators

この場合、ANDまたはOR演算子で無関係なフィルタを削除したりフィルタを再作成して、フィルタに複数の条件を指定できます。

Dgraphの有効化

EQLレコード・フィルタを有効にするために必要なDgraphプロセス構成フラグはありません。