Studioでは、次のフィルタ・クラスが提供されています。フィルタは、現在の問合せ状態の変更に使用されます。
使用可能なフィルタ・クラスは次のとおりです。
ここに記載した情報以外のQueryFunctionフィルタ・クラスの詳細は、Studio APIリファレンスを参照してください。
フィルタリングを実行するためにEQLスニペットを使用します。DataSourceFilter絞込みは「選択した絞込み」コンポーネントには追加されません。
使用可能なプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
filterString | フィルタ情報を含むEQLスニペット。
DataSourceFilterの場合、これは、EQL文のWHERE句のコンテンツになります。 EQL構文の詳細は、『Oracle Endeca Server EQLガイド』を参照してください。 |
たとえば、Napa Valley地域の40ドル未満の価格のレコードのみが表示されるようにデータをフィルタリングするには、次のようにします。
ExpressionBase expression = dataSource.parseLQLExpression("Region='Napa Valley' and P_Price<40"); DataSourceFilter dataSourceFilter = new DataSourceFilter(expression);
指定された属性値を持つレコードのみが含まれるようにデータをフィルタリングするために使用されます。RefinementFilter絞込みは「選択した絞込み」コンポーネントに追加されます。
RefinementFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
attributeValue | String
絞込みで使用する属性値。 管理対象属性の場合、これは値固有です。 |
attributeKey | String
属性キー。絞込みで使用する属性を識別します。 |
multiSelect | AND |OR | NONE
複数選択属性の場合、フィルタに同じ属性の複数の値が含まれているときに、どのように絞込みを行うか。 ANDに設定すると、一致するレコードには、指定された値がすべて含まれている必要があります。 ORに設定すると、一致するレコードには、指定された値が少なくとも1つ含まれている必要があります。 NONEに設定すると、複数選択はサポートされません。最初の値のみが絞込みで使用されます。 この設定は、データ・セットの属性に構成した絞込み動作と一致する必要があります。属性の絞込み動作の確認および構成のための「ビュー」ページの使用方法の詳細は、 『Studioユーザーズ・ガイド』を参照してください。 |
次の例では、Year属性に1999という値を持つレコードのみが含まれるように、データが絞り込まれます。
RefinementFilter refinementFilter = new RefinementFilter("1999", "Year");
指定された属性値を持つレコードが除外されるようにデータをフィルタリングするために使用されます。NegativeRefinementFilter絞込みは「選択した絞込み」コンポーネントに追加されます。
NegativeRefinementFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
attributeValue | String
絞込みで使用する属性値。 |
attributeKey | String
属性キー。絞込みで使用する属性を識別します。 |
attributeType | BOOLEAN | STRING | DOUBLE | LONG | GEOCODE | DATETIME | TIME | DURATION
絞込みで使用する値のタイプ。 デフォルトはSTRINGです。 属性が文字列以外のタイプの標準属性である場合、タイプを指定する必要があります。 |
attributeValueName | String
オプション。絞込みのために「選択した絞込み」コンポーネントに表示する値。 attributeValueNameに値を指定しない場合は、「選択した絞込み」コンポーネントにはattributeValueの値が表示されます。 選択された属性が、格納されている実際の値とは異なる値名の管理対象属性である場合、別の表示値を指定することが適切な場合もあります。 |
ancestors | Stringリスト
オプション。「選択した絞込み」コンポーネントに表示する祖先値の表示名。 値階層から管理対象属性を選択するときは、多くの場合、祖先値を指定します。 |
isAttributeSingleAssign | Boolean。
trueに設定した場合、この属性は値を1つのみ持つことができます。 falseに設定した場合、この属性は複数値を取ります。 属性が複数値かどうかを確認するための「ビュー・マネージャ」の使用方法の詳細は、『Studioユーザーズ・ガイド』を参照してください。 |
次の例では、Region属性にWashingtonという値を持たないレコードのみが含まれるように、データが絞り込まれます。Regionは文字列属性であるため、他の構成は必要ありません。
NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("Region", "Washington");
次の例では、P_Year属性(単一割当て属性)に1997という値を持たないレコードのみが含まれるように、データが絞り込まれます。P_Yearは文字列属性ではないため、属性タイプLONGが指定されています。
NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("P_Year", "1997", PropertyType.LONG, true);
次の例では、Outlet属性(単一割当て属性)の値としてCatererを持たないレコードのみが含まれるように、データが絞り込まれます。Outletの値はコードとして保存されるため、絞込みに使用する表示名を指定します。また、Outletは階層属性であり、絞込みは、CatererがRetail Salesカテゴリの下のNonstore Retailersのサブカテゴリであることを示しています。
List<String> ancestors = new ArrayList<String>(); ancestors.add("Retail Sales"); ancestors.add("Nonstore Retailers"); NegativeRefinementFilter negativeRefinementFilter = new NegativeRefinementFilter("Outlet", "454210", "Caterer", ancestors, true);
指定された範囲内の属性値を持つレコードのみが含まれるようにデータをフィルタリングするために使用されます。RangeFilter絞込みは「選択した絞込み」コンポーネントに追加されます。
RangeFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
attributeKey | String
属性キー。フィルタで使用する属性を識別します。 |
rangeOperator | LT | LTEQ |GT |GTEQ| BTWN |GCLT |GCGT | GCBTWN
使用する比較のタイプ。
|
rangeType | DECIMAL | INTEGER | DATE | GEOCODE | TIME | DURATION
比較する値のタイプ。 |
value1 | Numeric
比較で使用する値。 BTWNの場合、これは範囲の下限値です。 ジオコードの範囲の演算子の場合、比較の原点です。 |
value2 | Numeric
BTWNの場合、これは範囲の上限値です。 GCLTおよびGCGTの場合、これは比較で使用される値です。 GCBTWNの場合、これは範囲の下限値です。 |
value3 | Numeric
GCBTWN演算子でのみ使用されます。範囲の上限値。 |
次の例では、P_Scoreの値が80から100の数値のレコードのみが含まれるように、データが絞り込まれます。
RangeFilter rangeFilter = new RangeFilter("P_Score", RangeType.NUMERIC, RangeOperator.BTWN, "80", "100");
日付値のフィルタに使用されます。DateFilterを使用すると、日時値のサブセットでフィルタできます。たとえば、特定の年または特定の月のすべてのレコードを含む日付属性をフィルタできます。
DateFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
dateFilters | 適用する日付フィルタを表すDateFilterDimensionオブジェクトのリスト。
各DateFilterDimensionオブジェクトは次のもので構成されます。
このフィルタは、指定された最も具体的な日付部分までのみをフィルタします。 |
次の例では、SalesDateが2006年6月15日のレコードのみが含まれるように、データが絞り込まれます。このフィルタでは年、月および日付のみを指定します。SalesDateのレコードに異なる時間、分、秒の値が含まれていても、2006年6月15日であればこのフィルタに一致します。
DateFilterDimension dfd = new DateFilterDimension(); dfd.addDatePartFilter(DatePart.YEAR, 2006); dfd.addDatePartFilter(DatePart.MONTH, 6); dfd.addDatePartFilter(DatePart.DAY_OF_MONTH, 15); DateFilter dateFilter = new DateFilter("SalesDate", dfd);
日付属性に最近のn年間、nか月間またはn日間である値を持つレコードを含む日付をフィルタするために使用されます。
LastNDateFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
attributeKey | 属性のキー名。 |
ticksBack | 結果のレコードに含む年数、月数または日数。 |
datePart | フィルタ処理に使用する日付部分。可能な値は次のとおりです。
|
次の例では、SalesDateに過去3年間の値を持つレコードのみが含まれるように、データが絞り込まれます。
LastNDateFilter lastNDateFilter = new LastNDateFilter("SalesDate", 3, DatePart.YEAR);
ジオコード値が特定の場所から特定の距離内にある値を持つレコードを含むデータをフィルタするために使用されます。
GeoFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
attributeKey | ジオコード属性のキー名。 |
rangeOperator | 比較演算子。 |
value1 | 開始位置として使用するジオコード値。 |
radius | 検索するマイル数またはキロ数。 |
locationName | 開始位置として使用する場所の名前。 |
unit | 比較の距離の単位(miまたはkm)。 |
指定された検索用語が見つかったレコードを含めるように、データをフィルタリングするために使用されます。SearchFilter絞込みは「選択した絞込み」コンポーネントに追加されます。
SearchFilterのプロパティは次のとおりです。
プロパティ | 説明 |
---|---|
searchInterface | String
使用する検索インタフェースの名前、またはテキスト検索で有効な属性の名前のいずれか。 |
terms | String
検索用語。 |
matchMode | ALL | PARTIAL | ANY | ALLANY | ALLPARTIAL | PARTIALMAX | BOOLEAN
検索で使用する一致モード。 |
enableSnippeting | Boolean
スニペットを有効にするかどうか。 オプション。指定しない場合、デフォルトはfalseです。 |
snippetLength | Integer
スニペットに含める文字の数。 enableSnippetingがtrueの場合は必須です。 スニペットを有効にするには、enableSnippetingをtrueに設定し、snippetLengthの値を指定します。 |
次の例では、default検索インタフェースを使用して、Californiaおよびredという用語を検索します。一致するレコードは、すべての検索用語を含んでいる必要があります。スニペットがサポートされ、100文字のスニペットが表示されます。
SearchFilter.Builder builder = new SearchFilter.Builder("default", "California red"); builder.matchMode(MatchMode.ALL); builder.enableSnippeting(true); builder.snippetLength(100); SearchFilter searchFilter = builder.build();