31 static const char *DEFAULT_DEFAULT_TOKENIZER =
"TokenBigram";
34 usage(FILE *output,
int argc,
char **argv)
36 #define OUTPUT(...) fprintf(output, __VA_ARGS__)
38 OUTPUT(
"Usage: %s [OPTIONS] DB_PATH DATASET_NAME\n", argv[0]);
39 OUTPUT(
" e.g.: %s /tmp/db shops\n", argv[0]);
42 OUTPUT(
" --default-tokenizer=TOKENIZER Use TOKENIZER as the default\n");
43 OUTPUT(
" tokenizer for item name\n");
45 DEFAULT_DEFAULT_TOKENIZER);
46 OUTPUT(
" -h, --help Show this message and exit\n");
60 if (str_len > 0 || ctx->
rc) {
62 printf(
"ERROR (%d): %s\n", ctx->
rc, ctx->
errbuf);
65 printf(
"%.*s\n", str_len, str);
73 const char *dataset_name)
75 const char *p = command;
76 const char *dataset_place_holder =
"${DATASET}";
77 char *dataset_place_holder_position;
84 while ((dataset_place_holder_position = strstr(p, dataset_place_holder))) {
85 GRN_TEXT_PUT(ctx, buffer, p, dataset_place_holder_position - p);
87 p = dataset_place_holder_position + strlen(dataset_place_holder);
97 main(
int argc,
char **argv)
100 const char *dataset_name;
104 int parsed_argc, rest_argc;
106 const char *default_tokenizer = NULL;
112 opts[0].
arg = &default_tokenizer;
115 if (parsed_argc < 0) {
116 usage(stderr, argc, argv);
121 usage(stdout, argc, argv);
125 rest_argc = argc - parsed_argc;
126 if (rest_argc != 2) {
127 usage(stderr, argc, argv);
131 db_path = argv[parsed_argc];
132 dataset_name = argv[parsed_argc + 1];
143 fprintf(stderr,
"DB create failed (%s): %s\n", db_path, ctx->
errbuf);
146 fprintf(stderr,
"DB open failed (%s): %s\n", db_path, ctx->
errbuf);
153 #define SEND(string) send_command(ctx, &text, string, dataset_name)
154 SEND(
"register suggest/suggest");
155 SEND(
"table_create event_type TABLE_HASH_KEY ShortText");
160 "table_create bigram TABLE_PAT_KEY|KEY_NORMALIZE ShortText "
161 "--default_tokenizer ");
162 if (default_tokenizer) {
171 SEND(
"table_create kana TABLE_PAT_KEY|KEY_NORMALIZE ShortText");
172 SEND(
"table_create item_${DATASET} TABLE_PAT_KEY|KEY_NORMALIZE "
173 "ShortText --default_tokenizer TokenDelimit");
174 SEND(
"column_create bigram item_${DATASET}_key "
175 "COLUMN_INDEX|WITH_POSITION item_${DATASET} _key");
176 SEND(
"column_create item_${DATASET} kana COLUMN_VECTOR kana");
177 SEND(
"column_create kana item_${DATASET}_kana COLUMN_INDEX "
178 "item_${DATASET} kana");
179 SEND(
"column_create item_${DATASET} freq COLUMN_SCALAR Int32");
180 SEND(
"column_create item_${DATASET} last COLUMN_SCALAR Time");
181 SEND(
"column_create item_${DATASET} boost COLUMN_SCALAR Int32");
182 SEND(
"column_create item_${DATASET} freq2 COLUMN_SCALAR Int32");
183 SEND(
"column_create item_${DATASET} buzz COLUMN_SCALAR Int32");
185 SEND(
"table_create pair_${DATASET} TABLE_HASH_KEY UInt64");
186 SEND(
"column_create pair_${DATASET} pre COLUMN_SCALAR item_${DATASET}");
187 SEND(
"column_create pair_${DATASET} post COLUMN_SCALAR item_${DATASET}");
188 SEND(
"column_create pair_${DATASET} freq0 COLUMN_SCALAR Int32");
189 SEND(
"column_create pair_${DATASET} freq1 COLUMN_SCALAR Int32");
190 SEND(
"column_create pair_${DATASET} freq2 COLUMN_SCALAR Int32");
191 SEND(
"column_create item_${DATASET} co COLUMN_INDEX pair_${DATASET} pre");
193 SEND(
"table_create sequence_${DATASET} TABLE_HASH_KEY ShortText");
194 SEND(
"table_create event_${DATASET} TABLE_NO_KEY");
195 SEND(
"column_create sequence_${DATASET} events "
196 "COLUMN_VECTOR|RING_BUFFER event_${DATASET}");
197 SEND(
"column_create event_${DATASET} type COLUMN_SCALAR event_type");
198 SEND(
"column_create event_${DATASET} time COLUMN_SCALAR Time");
199 SEND(
"column_create event_${DATASET} item COLUMN_SCALAR item_${DATASET}");
200 SEND(
"column_create event_${DATASET} sequence COLUMN_SCALAR "
201 "sequence_${DATASET}");
203 SEND(
"table_create configuration TABLE_HASH_KEY ShortText");
204 SEND(
"column_create configuration weight COLUMN_SCALAR UInt32");
205 SEND(
"load --table configuration");
207 SEND(
"{\"_key\": \"${DATASET}\", \"weight\": 1}");
219 return success ? EXIT_SUCCESS : EXIT_FAILURE;