ページの先頭行へ戻る
Big Data Integration ServerV1.4.0 検索編アプリケーション開発ガイド
FUJITSU Software

B.5.1 ソート式の書式

ソート式には、テキスト式、属性式または単一行関数指定が指定できます。それぞれに対して取出し順序(昇順または降順)を指定できます。“,”で区切って複数指定することができます。


ソート式の定義を以下の図に示します。


図B.17 ソート式の定義


注意

ソート式には、キー指定を8個まで指定できます。

以下にソート式で定義する項目について説明します。


テキスト式

テキスト式は、ソートを行うキーとなるテキストノードを指定します。

テキスト式の詳細については、“B.2.2 テキスト式”を参照してください。


/company/employee/dept/text()

単一行関数指定

単一行関数指定は、単一行関数の結果でソートを行いたい場合に指定します。

単一行関数指定の詳細については、“B.2.4 単一行関数指定”を参照してください。


例1
rlen(/company/name/text(),16)
例2
rlen(/company/employee/@position,16)

属性式

属性式は、ソートを行うキーとなる属性ノードを指定します。

属性式の詳細については、“B.2.3 属性式”を参照してください。


/company/employee/@position

DESC

結果を降順で返却する場合に指定します。省略した場合は昇順に返却されます。


/company/employee/dept/text() DESC

ソートを行う場合

テキスト式で行う場合
  • テキスト式を指定すると、テキスト式が示すテキストノードが持つ文字列でソートを行います。

  • テキスト式で指定したテキストノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合はrlen関数を利用して文字数を変更します。指定できる文字数は1~128です。

  • テキスト式で指定したテキストノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。

  • テキスト式で指定したテキストノードが同一文書中に複数存在する場合は、先頭のテキストノードを利用します。

  • テキスト式で指定したテキストノードが文書中にない場合は、取出し順序の指定にかかわらず、最後に返却します。

  • 数値としてソートしたい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、桁合わせの必要がありません。


属性式で行う場合
  • 属性式を指定すると、属性式が示す属性ノードが持つ文字列でソートを行います。

  • 属性式で指定した属性ノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合はrlen関数を利用して文字数を変更します。指定できる文字数は1~128です。

  • 属性式で指定した属性ノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。

  • 属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭の属性ノードを利用します。

  • 属性式で指定した属性ノードが文書中にない場合は、取出し順序の指定にかかわらず、最後に返却します。

  • 数値としてソートしたい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、桁合わせの必要がありません。


以下に示す2つの文書を文字列としてソートすると“100”よりも“20”の方が大きくなります。ソート式にval(/value/text())と指定すると、100および20といった数値でソートするため、20よりも100の方が大きくなります。


<value>100</value>

<value>20</value>

集計を行う場合

テキスト式の場合
  • テキスト式を指定すると、テキスト式が示すテキストノードが持つ文字列が同じ文書を、1つのグループとして扱います。

  • テキスト式で指定したテキストノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合は、rlen関数を利用して文字数を変更します。指定できる文字数は1~128です。

  • テキスト式で指定したテキストノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。

  • テキスト式で指定したテキストノードが同一文書中に複数存在する場合は、先頭のテキストノードを利用します。

  • テキスト式で指定したテキストノードが文書中にない場合は、値のないグループキーを持つ1つのグループとして扱います。

  • 数値をキーとして集計したい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、文字列に数値以外を含む場合や、小数点以下の位取りが異なる場合でも、数値が同じものは同じグループとして扱うことができます。


属性式の場合
  • 属性式を指定すると、属性式が示す属性ノードが持つ文字列が同じ文書を、1つのグループとして扱います。

  • 属性式で指定した属性ノードが持つ文字列は、左端から20バイトが有効です。有効長を変更したい場合は、rlen関数を利用して文字数を変更します。指定できる文字数は1~128です。

  • 属性式で指定した属性ノードが持つ文字列に含まれる空白、全角空白、改行コードおよびタブは有効な値として区別します。

  • 属性式で指定した属性ノードが同一文書中に複数存在する場合は、先頭の属性ノードを利用します。

  • 属性式で指定した属性ノードが文書中にない場合は、値のないグループキーを持つ1つのグループとして扱います。

  • 数値をキーとして集計したい場合は、val関数を指定します。val関数を指定すると数値としてデータを扱うため、文字列に数値以外を含む場合や、小数点以下の位取りが異なる場合でも、数値が同じものは同じグループとして扱うことができます。


以下に示す2つの文書を/doc/key/text()をキーとして集計すると、それぞれ別グループになります。ソート式にval(/doc/key/text())と指定すると、どちらも1000という数値として扱うため同じグループとして集計します。


<doc>
  <key>net1000.00g</key>
  <ship>2000個</ship>
</doc>

<doc>
  <key>1,000g</key>
  <ship>1000個</ship>
</doc>