Edited at

Groonga組み込みコマンドの利用

More than 3 years have passed since last update.


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

  /* コマンドを取得 */

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));

結果

true


table_remove

table_remove - テーブルの削除

引数

名前
Offset
概要

name
0

  /* コマンドを取得 */

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));

結果

true


table_rename

引数

名前
Offset
概要

name
0

new_name
1

  /* コマンドを取得 */

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));

結果

true


column_create

column_create - カラムの追加

引数

名前
Offset
概要

table
0

name
1

flags
2

type
3

source
4

  /* コマンドを取得 */

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));

結果

true


column_remove

column_remove - テーブルに定義されているカラムの削除

引数

名前
Offset
概要

table
0

name
1

  /* コマンドを取得 */

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));

結果

true


column_rename

column_rename コマンドはカラム名を変更します。

引数

名前
Offset
概要

table
0

name
1

new_name
2

  /* コマンドを取得 */

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));

結果

true


expr_missing

引数

名前
Offset
概要

path
0


quit

quit - セッション終了

引数

なし

  /* コマンドを取得 */

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));

結果

true


shutdown

shutdown - サーバプロセスの停止

引数

なし

  /* コマンドを取得 */

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));

結果

true


clearlock

clearlock - オブジェクトにセットされたロックを解除する

引数

名前
Offset
概要

target_name
0

  /* コマンドを取得 */

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));

結果

true


defrag

defrag コマンドは指定されたオブジェクトのフラグメンテーションを解消します。

引数

名前
Offset
概要

target_name
0

threshold
1

  /* コマンドを取得 */

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));

結果

true


log_level

log_level - ログ出力レベルの設定

引数

名前
Offset
概要

level
0

  /* コマンドを取得 */

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));

結果

true


log_put

log_put - ログ出力

引数

名前
Offset
概要

level
0

message
1

  /* コマンドを取得 */

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));

結果

true


log_reopen

引数

なし

  /* コマンドを取得 */

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));

結果

true


delete

delete コマンドは指定したテーブルのレコードを削除します。

引数

名前
Offset
概要

table
0

key
1

id
2

filter
3

  /* コマンドを取得 */

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));

結果

true


cache_limit

cache_limit は最大クエリーキャッシュエントリー数を取得・設定します。

引数

名前
Offset
概要

max
0

  /* コマンドを取得 */

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));

結果

100


dump

dump - データベースのスキーマとデータを出力する

引数

名前
Offset
概要

tables
0

  /* コマンドを取得 */

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));

結果

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

  /* コマンドを取得 */

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));

結果

true


check

check - オブジェクトの状態表示

引数

名前
Offset
概要

obj
0

  /* コマンドを取得 */

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));

結果

[

{
"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

  /* コマンドを取得 */

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));

結果

true


normalize

normalize コマンドは指定したノーマライザーでテキストを正規化します。

引数

名前
Offset
概要

normalizer
0

string
1

flags
2

  /* コマンドを取得 */

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));

結果

{

"normalized": "abcde 123",
"types": [],
"checks": []
}


tokenize

tokenize コマンドは指定したトークナイザーでテキストをトークナイズします。これはトークナイズ処理のデバッグに便利です。

引数

名前
Offset
概要

tokenizer
0

string
1

normalizer
2

flags
3

mode
4

  /* コマンドを取得 */

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));

結果

[

{
"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 コマンドはデータベースに登録されているトークナイザーの一覧を返します。

引数

なし

  /* コマンドを取得 */

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));

結果

[

{
"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 コマンドはデータベースに登録されているノーマライザーの一覧を返します。

引数

なし

  /* コマンドを取得 */

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));

結果

[

{
"name": "NormalizerAuto"
},
{
"name": "NormalizerNFKC51"
}
]