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)