Groongaの対話モードをラップするgrnwrap
Groongaには素敵なWebベースの管理画面が付属していますが、ターミナルから対話モードで動作を確かめたいことも(私は)けっこうあります。
がしかし、この対話モードでは履歴呼び出しやカーソル移動が使えません。それと結果のJSONが一行なのでたいへん見づらい。
困ったのでPythonで入出力をラップするスクリプトを書きました。動作環境として、Python 2.6以上(それ以前の場合はsimplejsonをインストール)がreadlineモジュールつきでコンパイルされていることが必要です。
michisu/grnwrap at master - GitHub
機能
- カーソル移動とか
- 履歴の保存
- タブキーでコマンド名、引数名、テーブル名、ファイルパスの補完
- JSONのインデント表示
- Gオプションでselectの結果をMySQLの\G風にフォーマット
- *.grnなファイルパスを入力するとファイルに書かれたGroongaコマンドを実行
引数名(--filterとか)の補完は環境によって動作が変わってしまうようなので、デフォルトでは無効の場合があります。無効になっているけど試したい場合は-cオプションをつけて起動してみてください。
使い方
$ grnwrap
実行例
$ grnwrap -G /tmp/tutorial.db
> select --table Site --query title:@this
******************************* 1. row *******************************
_id: 1
_key: http://example.org/
title: This is test record 1!
1 records / 1 hits (0.000823 sec)
> select --table Site --query title:@test --output_columns _id,_score,title --sortby _score
******************************* 1. row *******************************
_id: 1
_score: 1
title: This is test record 1!
******************************* 2. row *******************************
_id: 2
_score: 1
title: test record 2.
******************************* 3. row *******************************
_id: 4
_score: 1
title: test record four.
******************************* 4. row *******************************
_id: 3
_score: 2
title: test test record three.
******************************* 5. row *******************************
_id: 9
_score: 2
title: test test record nine.
******************************* 6. row *******************************
_id: 8
_score: 2
title: test test record eight.
******************************* 7. row *******************************
_id: 7
_score: 3
title: test test test record seven.
******************************* 8. row *******************************
_id: 5
_score: 3
title: test test test record five.
******************************* 9. row *******************************
_id: 6
_score: 4
title: test test test test record six.
9 records / 9 hits (0.007133 sec)