Groonga組み込みコマンド
define_selector
define_selector - 検索コマンドを定義
引数
名前 | Offset | 概要 |
---|---|---|
name | 0 | |
table | 1 | |
match_columns | 2 | |
query | 3 | |
filter | 4 | |
scorer | 5 | |
sortby | 6 | |
output_columns | 7 | |
offset | 8 | |
limit | 9 | |
drilldown | 10 | |
drilldown_sortby | 11 | |
drilldown_output_columns | 12 | |
drilldown_offset | 13 | |
drilldown_limit | 14 | |
cache | 15 | |
match_escalation_threshold | 16 | |
query_expansion | 17 | |
query_flags | 18 | |
query_expander | 19 | |
adjuster | 20 |
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "define_selector", strlen("define_selector"));
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "user_selector");
/* Offsetから引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var_by_offset(ctx, command, 1);
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "User");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
true
select
select はテーブルから指定された条件にマッチするレコードを検索し、見つかったレコードを出力します。
引数
名前 | Offset | 概要 |
---|---|---|
table | 0 | |
match_columns | 1 | |
query | 2 | |
filter | 3 | |
scorer | 4 | |
sortby | 5 | |
output_columns | 6 | |
offset | 7 | |
limit | 8 | |
drilldown | 9 | |
drilldown_sortby | 10 | |
drilldown_output_columns | 11 | |
drilldown_offset | 12 | |
drilldown_limit | 13 | |
cache | 14 | |
match_escalation_threshold | 15 | |
query_expansion | 16 | |
query_flags | 17 | |
query_expander | 18 | |
adjuster | 19 |
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "select", strlen("select"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entries");
/* 実行と出力 */
grn_expr_exec(ctx, command, 0);
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
[
[
[
5
],
[
[
"_id",
"UInt32"
],
[
"_key",
"ShortText"
],
[
"content",
"Text"
],
[
"n_likes",
"UInt32"
]
],
[
1,
"The first post!",
"Welcome! This is my first post!",
5
],
[
2,
"Groonga",
"I started to use groonga. It's very fast!",
10
],
[
3,
"Mroonga",
"I also started to use mroonga. It's also very fast! Really fast!",
15
],
[
4,
"Good-bye Senna",
"I migrated all Senna system!",
3
],
[
5,
"Good-bye Tritonn",
"I also migrated all Tritonn system!",
3
]
]
]
結果の取得方法grn_ctx_recv
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "select", strlen("select"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entries");
/* 実行 */
grn_expr_exec(ctx, command, 0);
/* 結果の取得 */
char *result;
unsigned int result_length;
int recv_flags;
grn_ctx_recv(ctx, &result, &result_length, &recv_flags);
printf("%.*s\n", result_length, result);
load
load は、使用しているデータベースのテーブルにレコードを登録し、カラムの値を更新します。
引数
名前 | Offset | 概要 |
---|---|---|
values | 0 | |
table | 1 | |
columns | 2 | |
ifexists | 3 | |
input_type | 4 | |
each | 5 |
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "load", strlen("load"));
/* 引数を取得して値を設定 */
grn_obj *values = grn_expr_get_var(ctx, command, "values", strlen("values"));
grn_obj_reinit(ctx, values, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, values, "[{\"_key\":\"The first post!\", \"content\": \"Welcome! This is my first post!\", \"n_likes\": 5}]");
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entries");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
1
status
status - groongaプロセスの状態表示
引数
なし
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "status", strlen("status"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
{
"alloc_count": 141,
"starttime": 1414132653,
"uptime": 0,
"version": "4.0.5",
"n_queries": 0,
"cache_hit_rate": 0,
"command_version": 1,
"default_command_version": 1,
"max_command_version": 2
}
table_list
table_list - DBに定義されているテーブルをリスト表示
引数
なし
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "table_list", strlen("table_list"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
[
[
[
"id",
"UInt32"
],
[
"name",
"ShortText"
],
[
"path",
"ShortText"
],
[
"flags",
"ShortText"
],
[
"domain",
"ShortText"
],
[
"range",
"ShortText"
],
[
"default_tokenizer",
"ShortText"
],
[
"normalizer",
"ShortText"
]
],
[
260,
"Entries",
"db/test.db.0000104",
"TABLE_HASH_KEY|PERSISTENT",
"ShortText",
null,
null,
null
],
[
263,
"Terms",
"db/test.db.0000107",
"TABLE_PAT_KEY|PERSISTENT",
"ShortText",
null,
"TokenBigram",
"NormalizerAuto"
],
[
256,
"Users",
"db/test.db.0000100",
"TABLE_PAT_KEY|PERSISTENT",
"ShortText",
null,
null,
null
]
]
column_list
column_list コマンドはテーブルにあるカラムの一覧を返します。
引数
名前 | Offset | 概要 |
---|---|---|
table | 0 |
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "column_list", strlen("column_list"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entries");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
結果
[
[
[
"id",
"UInt32"
],
[
"name",
"ShortText"
],
[
"path",
"ShortText"
],
[
"type",
"ShortText"
],
[
"flags",
"ShortText"
],
[
"domain",
"ShortText"
],
[
"range",
"ShortText"
],
[
"source",
"ShortText"
]
],
[
260,
"_key",
"",
"",
"COLUMN_SCALAR",
"Entries",
"ShortText",
[]
],
[
261,
"content",
"db/test.db.0000105",
"var",
"COLUMN_SCALAR|PERSISTENT",
"Entries",
"Text",
[]
],
[
262,
"n_likes",
"db/test.db.0000106",
"fix",
"COLUMN_SCALAR|PERSISTENT",
"Entries",
"UInt32",
[]
]
]
```
## table_create
table_create は現在のデータベースに新しいテーブルを作成します。データを保存したり検索したりするために、1つ以上のテーブルを作成する必要があります。
**引数**
| 名前 | Offset | 概要 |
|:-----------------:|:------:|:------------:|
| name | 0 | |
| flags | 1 | |
| key_type | 2 | |
| value_type | 3 | |
| default_tokenizer | 4 | |
| normalizer | 5 | |
| token_filters | 6 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "table_create", strlen("table_create"));
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "Lexicon");
/* 引数を取得して値を設定 */
grn_obj *flags = grn_expr_get_var(ctx, command, "flags", strlen("flags"));
grn_obj_reinit(ctx, flags, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, flags, "TABLE_PAT_KEY");
/* 引数を取得して値を設定 */
grn_obj *type = grn_expr_get_var(ctx, command, "key_type", strlen("key_type"));
grn_obj_reinit(ctx, type, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, type, "ShortText");
/* 引数を取得して値を設定 */
grn_obj *tokenizer = grn_expr_get_var(ctx, command, "default_tokenizer", strlen("default_tokenizer"));
grn_obj_reinit(ctx, tokenizer, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, tokenizer, "TokenBigram");
/* 引数を取得して値を設定 */
grn_obj *normalizer = grn_expr_get_var(ctx, command, "normalizer", strlen("normalizer"));
grn_obj_reinit(ctx, normalizer, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, normalizer, "NormalizerAuto");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## table_remove
table_remove - テーブルの削除
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| name | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "table_remove", strlen("table_remove"));
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "Lexicon");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## table_rename
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| name | 0 | |
| new_name | 1 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "table_rename", strlen("table_rename"));
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "Entries");
/* 引数を取得して値を設定 */
grn_obj *new = grn_expr_get_var(ctx, command, "new_name", strlen("new_name"));
grn_obj_reinit(ctx, new, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, new, "Entry");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## column_create
column_create - カラムの追加
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| table | 0 | |
| name | 1 | |
| flags | 2 | |
| type | 3 | |
| source | 4 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "column_create", strlen("column_create"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entry");
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "body");
/* 引数を取得して値を設定 */
grn_obj *type = grn_expr_get_var(ctx, command, "type", strlen("type"));
grn_obj_reinit(ctx, type, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, type, "ShortText");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## column_remove
column_remove - テーブルに定義されているカラムの削除
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| table | 0 | |
| name | 1 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "column_remove", strlen("column_remove"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entry");
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "body");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## column_rename
column_rename コマンドはカラム名を変更します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| table | 0 | |
| name | 1 | |
| new_name | 2 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "column_rename", strlen("column_rename"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Entry");
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "name", strlen("name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "body");
/* 引数を取得して値を設定 */
grn_obj *new = grn_expr_get_var(ctx, command, "new_name", strlen("new_name"));
grn_obj_reinit(ctx, new, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, new, "body2");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## expr_missing
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| path | 0 | |
## quit
quit - セッション終了
**引数**
なし
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "quit", strlen("quit"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## shutdown
shutdown - サーバプロセスの停止
**引数**
なし
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "shutdown", strlen("shutdown"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## clearlock
clearlock - オブジェクトにセットされたロックを解除する
**引数**
| 名前 | Offset | 概要 |
|:-----------:|:------:|:------------:|
| target_name | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "clearlock", strlen("clearlock"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## defrag
defrag コマンドは指定されたオブジェクトのフラグメンテーションを解消します。
**引数**
| 名前 | Offset | 概要 |
|:-----------:|:------:|:------------:|
| target_name | 0 | |
| threshold | 1 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "defrag", strlen("defrag"));
/* 引数を取得して値を設定 */
grn_obj *name = grn_expr_get_var(ctx, command, "target_name", strlen("target_name"));
grn_obj_reinit(ctx, name, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, name, "Entry.body");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## log_level
log_level - ログ出力レベルの設定
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| level | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "log_level", strlen("log_level"));
/* 引数を取得して値を設定 */
grn_obj *level = grn_expr_get_var(ctx, command, "level", strlen("level"));
grn_obj_reinit(ctx, level, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, level, "warning");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## log_put
log_put - ログ出力
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| level | 0 | |
| message | 1 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "log_put", strlen("log_put"));
/* 引数を取得して値を設定 */
grn_obj *level = grn_expr_get_var(ctx, command, "level", strlen("level"));
grn_obj_reinit(ctx, level, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, level, "ERROR");
/* 引数を取得して値を設定 */
grn_obj *message = grn_expr_get_var(ctx, command, "message", strlen("message"));
grn_obj_reinit(ctx, message, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, message, "****MESSAGE****");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## log_reopen
**引数**
なし
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "log_reopen", strlen("log_reopen"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## delete
delete コマンドは指定したテーブルのレコードを削除します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| table | 0 | |
| key | 1 | |
| id | 2 | |
| filter | 3 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "delete", strlen("delete"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Country");
/* 引数を取得して値を設定 */
grn_obj *key = grn_expr_get_var(ctx, command, "key", strlen("key"));
grn_obj_reinit(ctx, key, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, key, "United States");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## cache_limit
cache_limit は最大クエリーキャッシュエントリー数を取得・設定します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| max | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "cache_limit", strlen("cache_limit"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
100
```
## dump
dump - データベースのスキーマとデータを出力する
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| tables | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "dump", strlen("dump"));
/* 引数を取得して値を設定 */
grn_obj *tables = grn_expr_get_var(ctx, command, "tables", strlen("tables"));
grn_obj_reinit(ctx, tables, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, tables, "Users");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
table_create Country TABLE_HASH_KEY ShortText
table_create Users TABLE_HASH_KEY UInt32
column_create Users name COLUMN_SCALAR ShortText
column_create Users country COLUMN_SCALAR Country
load --table Users
[
["_key","country","name"],
[1,"","John"],
[2,"","Mike"],
[3,"Japan","Takashi"],
[4,"Japan","Hanako"]
]
```
## register
register コマンドはプラグインを登録します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| path | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "register", strlen("register"));
/* 引数を取得して値を設定 */
grn_obj *path = grn_expr_get_var(ctx, command, "path", strlen("path"));
grn_obj_reinit(ctx, path, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, path, "query_expanders/tsv");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## check
check - オブジェクトの状態表示
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| obj | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "check", strlen("check"));
/* 引数を取得して値を設定 */
grn_obj *obj = grn_expr_get_var(ctx, command, "obj", strlen("obj"));
grn_obj_reinit(ctx, obj, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, obj, "Users.name");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
[
{
"flags": "0000C000",
"curr seg": 0,
"curr pos": 4194304,
"max_element_size": 4096,
"segregate_threshold": 16,
"n_element_variation": 14
},
[
{
"seg id": 0,
"seg type": 3,
"seg value": 0
}
]
]
```
## truncate
truncate コマンドは指定したテーブルのレコードをすべて削除します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| table | 0 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "truncate", strlen("truncate"));
/* 引数を取得して値を設定 */
grn_obj *table = grn_expr_get_var(ctx, command, "table", strlen("table"));
grn_obj_reinit(ctx, table, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, table, "Users");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
true
```
## normalize
normalize コマンドは指定したノーマライザーでテキストを正規化します。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| normalizer | 0 | |
| string | 1 | |
| flags | 2 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "normalize", strlen("normalize"));
/* 引数を取得して値を設定 */
grn_obj *normalizer = grn_expr_get_var(ctx, command, "normalizer", strlen("normalizer"));
grn_obj_reinit(ctx, normalizer, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, normalizer, "NormalizerAuto");
/* 引数を取得して値を設定 */
grn_obj *string = grn_expr_get_var(ctx, command, "string", strlen("string"));
grn_obj_reinit(ctx, string, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, string, "aBcDe 123");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
{
"normalized": "abcde 123",
"types": [],
"checks": []
}
```
## tokenize
tokenize コマンドは指定したトークナイザーでテキストをトークナイズします。これはトークナイズ処理のデバッグに便利です。
**引数**
| 名前 | Offset | 概要 |
|:----------:|:------:|:------------:|
| tokenizer | 0 | |
| string | 1 | |
| normalizer | 2 | |
| flags | 3 | |
| mode | 4 | |
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "tokenize", strlen("tokenize"));
/* 引数を取得して値を設定 */
grn_obj *tokenizer = grn_expr_get_var(ctx, command, "tokenizer", strlen("tokenizer"));
grn_obj_reinit(ctx, tokenizer, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, tokenizer, "TokenBigram");
/* 引数を取得して値を設定 */
grn_obj *string = grn_expr_get_var(ctx, command, "string", strlen("string"));
grn_obj_reinit(ctx, string, GRN_DB_TEXT, 0);
GRN_TEXT_PUTS(ctx, string, "Fulltext Search");
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
[
{
"value": "Fu",
"position": 0
},
{
"value": "ul",
"position": 1
},
{
"value": "ll",
"position": 2
},
{
"value": "lt",
"position": 3
},
{
"value": "te",
"position": 4
},
{
"value": "ex",
"position": 5
},
{
"value": "xt",
"position": 6
},
{
"value": "t ",
"position": 7
},
{
"value": " S",
"position": 8
},
{
"value": "Se",
"position": 9
},
{
"value": "ea",
"position": 10
},
{
"value": "ar",
"position": 11
},
{
"value": "rc",
"position": 12
},
{
"value": "ch",
"position": 13
},
{
"value": "h",
"position": 14
}
]
```
## tokenizer_list
tokenizer_list コマンドはデータベースに登録されているトークナイザーの一覧を返します。
**引数**
なし
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "tokenizer_list", strlen("tokenizer_list"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
[
{
"name": "TokenDelimit"
},
{
"name": "TokenUnigram"
},
{
"name": "TokenBigram"
},
{
"name": "TokenTrigram"
},
{
"name": "TokenBigramSplitSymbol"
},
{
"name": "TokenBigramSplitSymbolAlpha"
},
{
"name": "TokenBigramSplitSymbolAlphaDigit"
},
{
"name": "TokenBigramIgnoreBlank"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbol"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbolAlpha"
},
{
"name": "TokenBigramIgnoreBlankSplitSymbolAlphaDigit"
},
{
"name": "TokenDelimitNull"
}
]
```
## normalizer_list
normalizer_list コマンドはデータベースに登録されているノーマライザーの一覧を返します。
**引数**
なし
```c
/* コマンドを取得 */
grn_obj *command = grn_ctx_get(ctx, "normalizer_list", strlen("normalizer_list"));
/* コマンドの実行*/
grn_expr_exec(ctx, command, 0);
/* コマンド結果の取得 */
grn_ctx_info info;
grn_ctx_info_get(ctx, &info);
printf("%.*s\n", (int)GRN_TEXT_LEN(info.outbuf), GRN_TEXT_VALUE(info.outbuf));
```
**結果**
````js
[
{
"name": "NormalizerAuto"
},
{
"name": "NormalizerNFKC51"
}
]
```