4.1.2 検索条件と検索結果

検索を実行する場合に指定する検索条件と,取得する検索結果について説明します。

<この項の構成>
(1) 検索条件
(2) 検索結果

(1) 検索条件

検索条件を指定するメソッドの検索条件は,edmSQL文として指定します。

edmSQLとは,文書空間オブジェクトを検索するための手段としてDocumentBrokerが提供する検索用言語です。SQLの文法に関する知識を活用して,文書空間オブジェクトの検索ができます。なお,これ以降,このマニュアルでは,edmSQLを使用した検索を,edmSQL検索といいます。また,edmSQLに従って記述した条件式を,edmSQL文といいます。

edmSQLには,次のような特長があります。

(2) 検索結果

ここでは,次の項目について説明します。

(a) 検索結果集合

検索条件を指定するメソッドを実行すると,検索結果集合が作成され,メソッドの戻り値として返却されます。検索結果集合は,検索条件に一致する文書空間オブジェクトの集合です。

検索結果集合は,要素がプロパティ値である,行と列の二次元データとして表すことができます。さらに,Java クラスライブラリでは,この二次元データにメタデータを付けて表すことができます。メタデータとは,列のプロパティ値のデータ型,および列名の集合です。

Java クラスライブラリで扱う検索結果集合を次の図に示します。

図4-1 検索結果集合

[図データ]

なお,メタデータとして列名(プロパティ名)が付けられるのは,名前付き検索結果の場合です。名前付き検索結果の詳細については,「4.3.4 名前付き検索結果を取得する検索」を参照してください。

検索結果集合は,検索実行メソッドの戻り値として返却される,DbjResultSetインターフェースを使用して操作します。DbjResultSetインターフェースでは,検索結果集合を,各行を要素とするリストとして扱います。さらに,行の各要素を,各列の値を要素とするリストとして扱います。

検索結果集合の行は,カーソル行を移動して特定します。各行の列の要素は,列の値を要素とするリストに対して,列インデクスを指定することによって特定します。列インデクスは,0から始まる整数値であり,edmSQL文のSELECT句に指定した順に,0,1,…nと割り当てられます。

検索結果集合の要素を特定する例を次に示します。

図4-2 検索結果集合の要素の特定

[図データ]

(b) 検索結果キャッシュ

検索結果は,いったんキャッシュに保存して,複数回に分けて取得することができます。このキャッシュを検索結果キャッシュといいます。検索結果キャッシュは,検索条件を指定するメソッドおよび一覧を取得するメソッドで使用できます。検索結果キャッシュを使用するための情報は,検索結果取得情報に設定します。

検索結果キャッシュを使用すると,1回の検索でキャッシュから取得する検索結果の行数を指定したり,キャッシュ上の取得開始位置を指定して任意の行から検索結果を取得したりできます。検索結果キャッシュはキャッシュ名によって識別されます。このため,キャッシュ名が異なる複数の検索結果キャッシュを保持できます。キャッシュ名を指定しないと,ユーザアプリケーションプログラムが検索結果を取得し終わった時点で,検索結果キャッシュは無効になります。また,キャッシュ名は,同一セッション内だけで有効です。

なお,検索結果キャッシュから検索結果を取得できるのは,キャッシュ名が同じ検索結果キャッシュに対して,同じ検索条件で検索を実行する場合だけです。キャッシュを使用する検索では,次の条件を満たす場合,検索条件が同じであると判断されます。

(c) 検索結果取得情報

検索結果の取得方法は,検索結果取得情報として指定します。検索結果取得情報には,検索結果集合からユーザアプリケーションプログラムに返却する検索結果の最大件数,取得開始位置と件数,並び順などが指定できます。また,検索結果キャッシュを使用する場合には,キャッシュに取得する最大件数,キャッシュ名およびキャッシュキーも指定できます。検索結果取得情報は,検索条件を指定するメソッドおよび一覧を取得するメソッドで指定できます。

取得する検索結果の並び順は,コンパレータを使用して指定します。コンパレータを設定した検索結果取得情報を指定して検索を実行すると,コンパレータによってソートされた検索結果が取得できます。また,検索結果キャッシュに対して検索を実行する場合は,検索結果キャッシュの内容が並べ替えられます。並べ替えは,検索結果キャッシュに対して,異なるコンパレータを設定した検索結果取得情報を指定して検索を実行する時に実行されます。例えば,Aというコンパレータでソートしていた検索結果キャッシュに対して,Bというコンパレータを設定した検索結果取得情報を指定して検索を実行すると,検索結果キャッシュの内容が並べ替えられます。ただし,コンパレータとしてnull値を指定した場合は,前と同じコンパレータを指定したものとして処理されます。このため,並べ替えは実行されません。