提供されているQueryFunctionフィルタ・クラス

Studioでは、次のフィルタ・クラスが提供されています。フィルタは、現在の問合せ状態の変更に使用されます。

使用可能なフィルタ・クラスは次のとおりです。

ここに記載した情報以外のQueryFunctionフィルタ・クラスの詳細は、Studio APIリファレンスを参照してください。

DataSourceFilter

フィルタリングを実行するために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絞込みは「選択した絞込み」コンポーネントに追加されます。

RefinementFilterのプロパティは次のとおりです。

プロパティ 説明
attributeValue String

絞込みで使用する属性値。

管理対象属性の場合、これは値固有です。

attributeKey String

属性キー。絞込みで使用する属性を識別します。

multiSelect AND |OR | NONE

複数選択属性の場合、フィルタに同じ属性の複数の値が含まれているときに、どのように絞込みを行うか。

ANDに設定すると、一致するレコードには、指定された値がすべて含まれている必要があります。

ORに設定すると、一致するレコードには、指定された値が少なくとも1つ含まれている必要があります。

NONEに設定すると、複数選択はサポートされません。最初の値のみが絞込みで使用されます。

この設定は、データ・セットの属性に構成した絞込み動作と一致する必要があります。属性の絞込み動作の確認および構成のための「ビュー」ページの使用方法の詳細は、 『Studioユーザーズ・ガイド』を参照してください。

次の例では、Year属性に1999という値を持つレコードのみが含まれるように、データが絞り込まれます。

RefinementFilter refinementFilter = new RefinementFilter("1999", "Year");

NegativeRefinementFilter

指定された属性値を持つレコードが除外されるようにデータをフィルタリングするために使用されます。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絞込みは「選択した絞込み」コンポーネントに追加されます。

RangeFilterのプロパティは次のとおりです。

プロパティ 説明
attributeKey String

属性キー。フィルタで使用する属性を識別します。

rangeOperator LT | LTEQ |GT |GTEQ| BTWN |GCLT |GCGT | GCBTWN

使用する比較のタイプ。

  • 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");
RangeFilterを拡張する日時固有の次の範囲フィルタもあります。
  • DateRangeFilter
  • TimeRangeFilter
  • DurationRangeFilter

DateFilter

日付値のフィルタに使用されます。DateFilterを使用すると、日時値のサブセットでフィルタできます。たとえば、特定の年または特定の月のすべてのレコードを含む日付属性をフィルタできます。

DateFilterのプロパティは次のとおりです。

プロパティ 説明
dateFilters 適用する日付フィルタを表すDateFilterDimensionオブジェクトのリスト。
DateFilterDimensionオブジェクトは次のもので構成されます。
  • 各日付部分を識別するDatePart定数
  • 各日付部分の値を表す整数値

このフィルタは、指定された最も具体的な日付部分までのみをフィルタします。

次の例では、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);

LastNDateFilter

日付属性に最近のn年間、nか月間またはn日間である値を持つレコードを含む日付をフィルタするために使用されます。

LastNDateFilterのプロパティは次のとおりです。

プロパティ 説明
attributeKey 属性のキー名。
ticksBack 結果のレコードに含む年数、月数または日数。
datePart フィルタ処理に使用する日付部分。可能な値は次のとおりです。
  • YEAR
  • MONTH
  • DAY_OF_MONTH
  • HOUR
  • MINUTE
  • SECOND

次の例では、SalesDateに過去3年間の値を持つレコードのみが含まれるように、データが絞り込まれます。

LastNDateFilter lastNDateFilter = new LastNDateFilter("SalesDate", 3, DatePart.YEAR);

GeoFilter

ジオコード値が特定の場所から特定の距離内にある値を持つレコードを含むデータをフィルタするために使用されます。

GeoFilterのプロパティは次のとおりです。

プロパティ 説明
attributeKey ジオコード属性のキー名。
rangeOperator 比較演算子。
value1 開始位置として使用するジオコード値。
radius 検索するマイル数またはキロ数。
locationName 開始位置として使用する場所の名前。
unit 比較の距離の単位(miまたはkm)。

SearchFilter

指定された検索用語が見つかったレコードを含めるように、データをフィルタリングするために使用されます。SearchFilter絞込みは「選択した絞込み」コンポーネントに追加されます。

SearchFilterのプロパティは次のとおりです。

プロパティ 説明
searchInterface String

使用する検索インタフェースの名前、またはテキスト検索で有効な属性の名前のいずれか。

terms String

検索用語。

matchMode ALL | PARTIAL | ANY | ALLANY | ALLPARTIAL | PARTIALMAX | BOOLEAN

検索で使用する一致モード。

enableSnippeting Boolean

スニペットを有効にするかどうか。

オプション。指定しない場合、デフォルトはfalseです。

snippetLength Integer

スニペットに含める文字の数。

enableSnippetingtrueの場合は必須です。

スニペットを有効にするには、enableSnippetingtrueに設定し、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();