3.2.14. select

3.2.14.1. 名前

select - テーブルの中から条件にマッチするレコードを検索して出力する

3.2.14.2. 書式

select table [match_columns [query [filter [scorer [sortby [output_columns
             [offset [limit [drilldown [drilldown_sortby [drilldown_output_columns
             [drilldown_offset [drilldown_limit [output_type]]]]]]]]]]]]]]

3.2.14.3. 説明

groonga組込コマンドの一つであるselectについて説明します。組込コマンドは、groonga実行ファイルの引数、標準入力、またはソケット経由でgroongaサーバにリクエストを送信することによって実行します。

selectは、使用しているデータベースのテーブルの中から条件にマッチするレコードを検索して出力します。

3.2.14.4. 引数

table

検索対象のテーブルを指定します。

match_columns

query引数に指定する検索条件文字列でデフォルトの検索対象となるカラムを指定します。

カラム名

カラム名の後ろに’* 数値’を指定することによって、そのカラムにヒットした際のスコアに積算される重みを指定することができます。

カラム名 * 重み

複数のカラムを’||’で結合して指定することもできます。

カラム名1 * 重み1 || カラム名2 * 重み2

また、カラム名ではなく、検索に使用するインデックス名を指定することもできます。

query

検索条件をquery形式のgrn式文字列によって指定します。

filter

絞り込み条件をscript形式のgrn式文字列によって指定します。

query引数とfilter引数をどちらも指定した場合は、両方の条件を満足するレコードのみがヒットします。どちらも指定しない場合は全件がヒットします。

scorer

検索条件にマッチする全てのレコードに対して適用するgrn式をscript形式で指定します。

scorerは、検索処理が完了し、ソート処理が実行される前に呼び出されます。従って、各レコードのスコアを操作する式を指定しておけば、検索結果のソート順序をカスタマイズできるようになります。

sortby

ソートキーとなるカラム名のリストをカンマ(‘,’)区切りで指定します。:

[-]カラム名1 [-]カラム名2 [-]カラム名3...

カラム名1の値でソートし、値が同一である場合はカラム名2でソート、と順次比較を行いソートします。カラム名の前に - を付加した場合は降順にソートします。付加しない場合には昇順にソートします。

output_columns

出力するカラム名のリストをカンマ(‘,’)区切りで指定します。

アスタリスク(‘*’)を指定すると、全てのカラムが指定されたものとみなされます。または、script形式のgrn式文字列を指定します。 (デフォルトは、’_id *’)

offset

検索条件にマッチしたレコードのうち、出力対象となる最初のレコードの番号を0ベースで指定します。(デフォルト値は0) offsetに負の値を指定した場合は、ヒットした件数 + offset によって算出される値が指定されたものとみなされます。

limit

検索条件にマッチしたレコードのうち、出力を行うレコードの件数を指定します。実際には、offset + limit がヒットした件数を超えない範囲でレコードが出力されます。

drilldown

グループ化のキーとなるカラム名のリストをカンマ(‘,’)区切りで指定します。検索条件にマッチした各レコードを出力したのちに、drilldownに指定されたカラムの値が同一であるレコードをとりまとめて、それぞれについて結果レコードを出力します。

drilldown_sortby

drilldown条件に指定されたカラムの値毎にとりまとめられたレコードについて、ソートキーとなるカラム名のリストをカンマ(‘,’)区切りで指定します。sortbyパラメータと同様に昇降順を指定できます。

drilldown_output_columns

drilldown条件に指定されたカラムの値毎にとりまとめられたレコードについて、出力するカラム名のリストをカンマ(‘,’)区切りで指定します。

drilldown_offset

drilldown条件に指定されたカラムの値毎にとりまとめられたレコードについて、出力対象となる最初のレコードの番号を0ベースで指定します。

drilldown_limit

drilldown条件に指定されたカラムの値毎にとりまとめられたレコードについて、出力を行うレコードの件数を指定します。

output_type

出力形式を、json,tsv,xmlのいずれかで指定します。

3.2.14.5. 返値

以下のようなjson形式で値が返却されます。 [1]

[[リターンコード, 処理開始時間, 処理時間], [検索結果, ドリルダウン結果]]

リターンコード

grn_rcに対応する数値が返されます。0(GRN_SUCCESS)以外の場合は、続いてエラー内容を示す 文字列が返されます。

処理開始時間

処理を開始した時間について、1970年1月1日0時0分0秒を起点とした秒数を小数で返します。

処理時間

処理にかかった秒数を返します。

検索結果

drilldown条件が実行される前の検索結果が以下のように出力されます。:

[[検索件数], [[カラム名1,カラム型1],..], 検索結果1,..]

検索件数

検索件数が出力されます。

カラム名n

output_columnsに指定された条件に従って、対象となるカラム名が出力されます。

カラム型n

output_columnsに指定された条件に従って、対象となるカラム型が出力されます。

検索結果n

output_columns, offset, limitによって指定された条件に従って各レコードの値が出力されます。

drilldown結果

drilldown処理の結果が以下のように出力されます。:

[[[件数], [[カラム名1,カラム型1],..], 検索結果1,..],..]

件数

drilldownに指定されたカラムの値の異なり数が出力されます。

カラム名n

drilldown_output_columnsに指定された条件に従って、対象となるカラム名が出力されます。

カラム型n

drilldown_output_columnsに指定された条件に従って、対象となるカラム型が出力されます。

ドリルダウン結果n

drilldown_output_columns, drilldown_offset, drilldown_limitによって指定された条件に従って各レコードの値が出力されます。

3.2.14.6. 例

テーブルEntryの全レコード・全カラムの値を出力します。:

select Entry --output_type json

[[0,1268213158.65153,0.000246],[[[2],[["_id", "UInt32"],["_key","ShortText"],["body","ShortText"]],[1,"abandon","放棄する"],[2,"abbreviate","短縮する"]]]]

select Entry --output_type xml

<SEGMENTS><SEGMENT><RESULTPAGE><RESULTSET OFFSET="0" LIMIT="10" NHITS="2"><HIT NO="1"><FIELD NAME="_id">1</FIELD><FIELD NAME="_key">abandon</FIELD><FIELD NAME="body">放棄する</FIELD></HIT><HIT NO="2"><FIELD NAME="_id">2</FIELD><FIELD NAME="_key">abbreviate</FIELD><FIELD NAME="body">短縮する</FIELD></HIT></RESULTSET></RESULTPAGE></SEGMENT></SEGMENTS>

3.2.14.7. 関連項目

grn式 (grn_expr)

脚注

[1]tsv,xml出力はv1.0でサポートされます。また、処理開始時間・処理時間については正確でない場合があります。

Table Of Contents

Previous topic

3.2.13. quit

Next topic

3.2.15. set

This Page