select - テーブルの中から条件にマッチするレコードを検索して出力する
select table [match_columns [query [filter [scorer [sortby [output_columns
[offset [limit [drilldown [drilldown_sortby [drilldown_output_columns
[drilldown_offset [drilldown_limit [output_type]]]]]]]]]]]]]]
groonga組込コマンドの一つであるselectについて説明します。組込コマンドは、groonga実行ファイルの引数、標準入力、またはソケット経由でgroongaサーバにリクエストを送信することによって実行します。
selectは、使用しているデータベースのテーブルの中から条件にマッチするレコードを検索して出力します。
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式文字列を指定します。 [1] (デフォルトは、’_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のいずれかで指定します。
以下のようなjson形式で値が返却されます。 [#]_
[[リターンコード, 処理開始時間, 処理時間], [検索結果, ドリルダウン結果]]
リターンコード
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によって指定された条件に従って各レコードの値が出力されます。
テーブル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>