rroonga 1.2.9 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/Rakefile +1 -0
- data/bin/grntest-log-analyze +123 -0
- data/bin/groonga-query-log-extract +117 -0
- data/ext/groonga/rb-grn-accessor.c +7 -5
- data/ext/groonga/rb-grn-array-cursor.c +1 -1
- data/ext/groonga/rb-grn-array.c +34 -44
- data/ext/groonga/rb-grn-column.c +74 -38
- data/ext/groonga/rb-grn-context.c +19 -15
- data/ext/groonga/rb-grn-database.c +47 -42
- data/ext/groonga/rb-grn-double-array-trie-cursor.c +40 -0
- data/ext/groonga/rb-grn-double-array-trie.c +530 -0
- data/ext/groonga/rb-grn-encoding-support.c +1 -1
- data/ext/groonga/rb-grn-encoding.c +1 -1
- data/ext/groonga/rb-grn-exception.c +1 -1
- data/ext/groonga/rb-grn-expression-builder.c +1 -1
- data/ext/groonga/rb-grn-expression.c +63 -51
- data/ext/groonga/rb-grn-fix-size-column.c +7 -7
- data/ext/groonga/rb-grn-hash-cursor.c +1 -1
- data/ext/groonga/rb-grn-hash.c +42 -39
- data/ext/groonga/rb-grn-index-column.c +35 -31
- data/ext/groonga/rb-grn-index-cursor.c +1 -1
- data/ext/groonga/rb-grn-logger.c +23 -18
- data/ext/groonga/rb-grn-object.c +40 -27
- data/ext/groonga/rb-grn-operator.c +1 -1
- data/ext/groonga/rb-grn-patricia-trie-cursor.c +1 -1
- data/ext/groonga/rb-grn-patricia-trie.c +122 -90
- data/ext/groonga/rb-grn-plugin.c +8 -7
- data/ext/groonga/rb-grn-posting.c +1 -1
- data/ext/groonga/rb-grn-procedure.c +1 -1
- data/ext/groonga/rb-grn-query.c +12 -12
- data/ext/groonga/rb-grn-record.c +1 -1
- data/ext/groonga/rb-grn-snippet.c +26 -19
- data/ext/groonga/rb-grn-table-cursor-key-support.c +1 -1
- data/ext/groonga/rb-grn-table-cursor.c +4 -3
- data/ext/groonga/rb-grn-table-key-support.c +23 -23
- data/ext/groonga/rb-grn-table.c +268 -153
- data/ext/groonga/rb-grn-type.c +11 -7
- data/ext/groonga/rb-grn-utils.c +4 -1
- data/ext/groonga/rb-grn-variable-size-column.c +1 -1
- data/ext/groonga/rb-grn-variable.c +2 -2
- data/ext/groonga/rb-grn-view-accessor.c +1 -1
- data/ext/groonga/rb-grn-view-cursor.c +1 -1
- data/ext/groonga/rb-grn-view-record.c +1 -1
- data/ext/groonga/rb-grn-view.c +43 -34
- data/ext/groonga/rb-grn.h +6 -2
- data/ext/groonga/rb-groonga.c +1 -1
- data/lib/groonga.rb +4 -2
- data/lib/groonga/context.rb +16 -41
- data/lib/groonga/dumper.rb +6 -4
- data/lib/groonga/expression-builder.rb +52 -26
- data/lib/groonga/grntest-log.rb +206 -0
- data/lib/groonga/pagination.rb +21 -19
- data/lib/groonga/patricia-trie.rb +7 -10
- data/lib/groonga/posting.rb +1 -1
- data/lib/groonga/query-log.rb +348 -0
- data/lib/groonga/record.rb +47 -143
- data/lib/groonga/schema.rb +679 -406
- data/lib/groonga/view-record.rb +4 -10
- data/rroonga-build.rb +1 -1
- data/test/test-array.rb +25 -4
- data/test/test-column.rb +8 -8
- data/test/test-database.rb +2 -3
- data/test/test-double-array-trie.rb +164 -0
- data/test/test-expression-builder.rb +2 -2
- data/test/test-expression.rb +10 -9
- data/test/test-gqtp.rb +2 -2
- data/test/test-hash.rb +32 -8
- data/test/test-patricia-trie.rb +34 -10
- data/test/test-query-log.rb +258 -0
- data/test/test-record.rb +6 -5
- data/test/test-schema-create-table.rb +8 -0
- data/test/test-schema.rb +491 -234
- data/test/test-table.rb +17 -24
- metadata +123 -100
- data/ext/groonga/Makefile +0 -233
data/ext/groonga/rb-grn-query.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* -*- c-file-style: "ruby" -*- */
|
1
|
+
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
@@ -132,17 +132,17 @@ rb_grn_operator_from_ruby_object (VALUE rb_operator)
|
|
132
132
|
* call-seq:
|
133
133
|
* query.new(string, options={})
|
134
134
|
*
|
135
|
-
* _string_をパースした上で、クエリを作成する。作成されたオ
|
135
|
+
* _string_ をパースした上で、クエリを作成する。作成されたオ
|
136
136
|
* ブジェクトはGroonga::IndexColumn#searchに渡すことで使用す
|
137
137
|
* ることができる。
|
138
138
|
*
|
139
|
-
* _options_に指定可能な値は以下の通り。
|
139
|
+
* _options_ に指定可能な値は以下の通り。
|
140
|
+
* @param options [::Hash] The name and value
|
141
|
+
* pairs. Omitted names are initialized as the default value.
|
142
|
+
* @option options :context (Groonga::Context.default) The context
|
143
|
+
* クエリが利用するGroonga::Context。
|
140
144
|
*
|
141
|
-
*
|
142
|
-
* クエリが利用するGroonga::Context。省略すると
|
143
|
-
* Groonga::Context.defaultを用いる。
|
144
|
-
*
|
145
|
-
* [+:default_operator+]
|
145
|
+
* @option options :default_operator The default_operator
|
146
146
|
* 演算子の既定値(演算子を省略した場合にどの演算を行うか)
|
147
147
|
* を指定する。
|
148
148
|
*
|
@@ -153,7 +153,7 @@ rb_grn_operator_from_ruby_object (VALUE rb_operator)
|
|
153
153
|
* (FIXME: 挙動の違いを検証する必要性あり?
|
154
154
|
* Groonga::Expressionとの関連性は?)
|
155
155
|
*
|
156
|
-
*
|
156
|
+
* @option options :max_expressions
|
157
157
|
* 検索クエリに指定する式の最大値を指定する。
|
158
158
|
*/
|
159
159
|
static VALUE
|
@@ -206,7 +206,7 @@ rb_grn_query_initialize (int argc, VALUE *argv, VALUE self)
|
|
206
206
|
* call-seq:
|
207
207
|
* query.close
|
208
208
|
*
|
209
|
-
* _query_が使用しているリソースを開放する。これ以降_query_を
|
209
|
+
* _query_ が使用しているリソースを開放する。これ以降 _query_ を
|
210
210
|
* 使うことはできない。
|
211
211
|
*/
|
212
212
|
static VALUE
|
@@ -230,8 +230,8 @@ rb_grn_query_close (VALUE self)
|
|
230
230
|
* call-seq:
|
231
231
|
* query.closed? -> true/false
|
232
232
|
*
|
233
|
-
* _query_
|
234
|
-
* +false
|
233
|
+
* _query_ が開放済みの場合は +true+ を返し、そうでない場合は
|
234
|
+
* +false+ を返す。
|
235
235
|
*/
|
236
236
|
static VALUE
|
237
237
|
rb_grn_query_closed_p (VALUE self)
|
data/ext/groonga/rb-grn-record.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* -*- c-file-style: "ruby" -*- */
|
1
|
+
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2010 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
@@ -103,35 +103,39 @@ rb_grn_snippet_alloc (VALUE klass)
|
|
103
103
|
* call-seq:
|
104
104
|
* Groonga::Snippet.new(options={})
|
105
105
|
*
|
106
|
-
* スニペットを作成する。_options_に指定可能な値は以下の通
|
106
|
+
* スニペットを作成する。 _options_ に指定可能な値は以下の通
|
107
107
|
* り。
|
108
|
+
* @param options [::Hash] The name and value
|
109
|
+
* pairs. Omitted names are initialized as the default value.
|
110
|
+
* @option options :context (Groonga::Context.default) The context
|
108
111
|
*
|
109
|
-
* [+:context+]
|
110
112
|
* スキーマ作成時に使用するGroonga::Contextを指定する。
|
111
|
-
* 省略した場合はGroonga::Context.defaultを使用する。
|
112
113
|
*
|
113
|
-
*
|
114
|
+
* @option options :normalize The normalize
|
115
|
+
*
|
114
116
|
* キーワード文字列・スニペット元の文字列を正規化するかど
|
115
|
-
*
|
117
|
+
* うか。省略した場合は +false+ で正規化しない。
|
118
|
+
*
|
119
|
+
* @option options :skip_leading_spaces (false) The skip_leading_spaces
|
116
120
|
*
|
117
|
-
*
|
118
|
-
* 先頭の空白を無視するかどうか。省略した場合は+false+で無
|
121
|
+
* 先頭の空白を無視するかどうか。省略した場合は で無
|
119
122
|
* 視しない。
|
120
123
|
*
|
121
|
-
*
|
124
|
+
* @option options :width (100) The width
|
125
|
+
*
|
122
126
|
* スニペット文字列の長さ。省略した場合は100文字。
|
123
127
|
*
|
124
|
-
*
|
128
|
+
* @option options :max_results (3) The max_results
|
125
129
|
* 生成するスニペットの最大数。省略した場合は3。
|
126
130
|
*
|
127
|
-
*
|
131
|
+
* @option options :html_escape (false) The html_escape
|
128
132
|
* スニペット内の+<+, +>+, +&+, +"+をHTMLエスケープするか
|
129
133
|
* どうか。省略した場合は+false+で、HTMLエスケープしない。
|
130
134
|
*
|
131
|
-
*
|
135
|
+
* @option options :default_open_tag ("") The default_open_tag
|
132
136
|
* デフォルトの開始タグ。省略した場合は""(空文字列)
|
133
137
|
*
|
134
|
-
*
|
138
|
+
* @option options :default_close_tag ("") The default_close_tag
|
135
139
|
* デフォルトの終了タグ。省略した場合は""(空文字列)
|
136
140
|
*/
|
137
141
|
static VALUE
|
@@ -213,14 +217,17 @@ rb_grn_snippet_initialize (int argc, VALUE *argv, VALUE self)
|
|
213
217
|
* call-seq:
|
214
218
|
* snippet.add_keyword(keyword, options={})
|
215
219
|
*
|
216
|
-
* _keyword_を追加する。_options_
|
217
|
-
*
|
220
|
+
* _keyword_ を追加する。 _options_ に指定可能な値は
|
221
|
+
* 以下の通り。
|
222
|
+
* @param options [::Hash] The name and value
|
223
|
+
* pairs. Omitted names are initialized as the default value.
|
224
|
+
* @option options :open_tag (default_open_tag) The open_tag
|
218
225
|
*
|
219
|
-
* [+:open_tag+]
|
220
226
|
* 開始タグ。省略した場合はGroonga::Snippet.newで指定し
|
221
227
|
* た+:default_open_tag+。
|
222
228
|
*
|
223
|
-
*
|
229
|
+
* @option options :close_tag (:default_close_tag) The close_tag
|
230
|
+
*
|
224
231
|
* 終了タグ。省略した場合はGroonga::Snippet.newで指定し
|
225
232
|
* た+:default_close_tag+。
|
226
233
|
*/
|
@@ -276,7 +283,7 @@ rb_grn_snippet_add_keyword (int argc, VALUE *argv, VALUE self)
|
|
276
283
|
* call-seq:
|
277
284
|
* snippet.execute(string) -> スニペットの配列
|
278
285
|
*
|
279
|
-
* _string_を走査し、スニペットを作成する。
|
286
|
+
* _string_ を走査し、スニペットを作成する。
|
280
287
|
*/
|
281
288
|
static VALUE
|
282
289
|
rb_grn_snippet_execute (VALUE self, VALUE rb_string)
|
@@ -339,7 +346,7 @@ rb_grn_snippet_execute (VALUE self, VALUE rb_string)
|
|
339
346
|
* call-seq:
|
340
347
|
* snippet.close
|
341
348
|
*
|
342
|
-
* _snippet_が使用しているリソースを開放する。これ以降_snippet_を
|
349
|
+
* _snippet_ が使用しているリソースを開放する。これ以降 _snippet_ を
|
343
350
|
* 使うことはできない。
|
344
351
|
*/
|
345
352
|
static VALUE
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* -*- c-file-style: "ruby" -*- */
|
1
|
+
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
@@ -270,8 +270,8 @@ rb_grn_table_cursor_each (VALUE self)
|
|
270
270
|
* call-seq:
|
271
271
|
* cursor.closed? -> true/false
|
272
272
|
*
|
273
|
-
*
|
274
|
-
* +false
|
273
|
+
* カーソルが開放済みの場合は +true+ を返し、そうでない場合は
|
274
|
+
* +false+ を返す。
|
275
275
|
*/
|
276
276
|
|
277
277
|
void
|
@@ -303,5 +303,6 @@ rb_grn_init_table_cursor (VALUE mGrn)
|
|
303
303
|
rb_grn_init_array_cursor(mGrn);
|
304
304
|
rb_grn_init_hash_cursor(mGrn);
|
305
305
|
rb_grn_init_patricia_trie_cursor(mGrn);
|
306
|
+
rb_grn_init_double_array_trie_cursor(mGrn);
|
306
307
|
rb_grn_init_view_cursor(mGrn);
|
307
308
|
}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
/* -*- c-file-style: "ruby" -*- */
|
1
|
+
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
@@ -113,16 +113,16 @@ rb_grn_table_key_support_add_raw (VALUE self, VALUE rb_key, int *added)
|
|
113
113
|
* call-seq:
|
114
114
|
* table.add(key, values=nil) -> Groonga::Recordまたはnil
|
115
115
|
*
|
116
|
-
* 主キーが_key_のレコード追加し、追加したレコードを返す。レ
|
117
|
-
*
|
116
|
+
* 主キーが _key_ のレコード追加し、追加したレコードを返す。レ
|
117
|
+
* コードの追加に失敗した場合は +nil+ を返す。
|
118
118
|
*
|
119
119
|
* すでに同じキーのレコードが存在する場合は追加せずに同じレ
|
120
120
|
* コードを返す。追加されたかどうかは
|
121
|
-
* +Groonga::Record#added
|
121
|
+
* +Groonga::Record#added?+ で調べることができる。 +true+ を返
|
122
122
|
* したら追加されたということを示す。
|
123
123
|
*
|
124
|
-
* _values_にはレコードのカラムに設定する値を指定する。省略
|
125
|
-
*
|
124
|
+
* _values_ にはレコードのカラムに設定する値を指定する。省略
|
125
|
+
* した場合または +nil+ を指定した場合はカラムは設定しない。カ
|
126
126
|
* ラムの値は<tt>{:カラム名1 => 値1, :カラム名2 => 値2,
|
127
127
|
* ...}</tt>と指定する。
|
128
128
|
*/
|
@@ -172,9 +172,9 @@ rb_grn_table_key_support_get (VALUE self, VALUE rb_key)
|
|
172
172
|
* table.id -> テーブルID
|
173
173
|
* table.id(key) -> レコードID
|
174
174
|
*
|
175
|
-
* _key_を指定しない場合はテーブルのIDを返す。
|
175
|
+
* _key_ を指定しない場合はテーブルのIDを返す。
|
176
176
|
*
|
177
|
-
* _key_を指定した場合はテーブルの_key_に対応するレコードの
|
177
|
+
* _key_ を指定した場合はテーブルの _key_ に対応するレコードの
|
178
178
|
* IDを返す。
|
179
179
|
*/
|
180
180
|
static VALUE
|
@@ -201,7 +201,7 @@ rb_grn_table_key_support_get_id (int argc, VALUE *argv, VALUE self)
|
|
201
201
|
* call-seq:
|
202
202
|
* table.key(id) -> 主キー
|
203
203
|
*
|
204
|
-
* テーブルの_id_に対応する主キーを返す。
|
204
|
+
* テーブルの _id_ に対応する主キーを返す。
|
205
205
|
*/
|
206
206
|
static VALUE
|
207
207
|
rb_grn_table_key_support_get_key (VALUE self, VALUE rb_id)
|
@@ -237,7 +237,7 @@ rb_grn_table_key_support_get_key (VALUE self, VALUE rb_id)
|
|
237
237
|
* call-seq:
|
238
238
|
* table.has_key?(key) -> true/false
|
239
239
|
*
|
240
|
-
* テーブルに主キーが_key_のレコードがあるならtrueを返す。
|
240
|
+
* テーブルに主キーが _key_ のレコードがあるならtrueを返す。
|
241
241
|
*/
|
242
242
|
static VALUE
|
243
243
|
rb_grn_table_key_support_has_key (VALUE self, VALUE rb_key)
|
@@ -287,7 +287,7 @@ rb_grn_table_key_support_delete_by_key (VALUE self, VALUE rb_key)
|
|
287
287
|
* table.delete(id)
|
288
288
|
* table.delete(key)
|
289
289
|
*
|
290
|
-
* テーブルの_id_または_key_に対応するレコードを削除する。
|
290
|
+
* テーブルの _id_ または _key_ に対応するレコードを削除する。
|
291
291
|
*/
|
292
292
|
static VALUE
|
293
293
|
rb_grn_table_key_support_delete (VALUE self, VALUE rb_id_or_key)
|
@@ -305,7 +305,7 @@ rb_grn_table_key_support_delete (VALUE self, VALUE rb_id_or_key)
|
|
305
305
|
* call-seq:
|
306
306
|
* table[key] -> Groonga::Record
|
307
307
|
*
|
308
|
-
* _table_の_key_に対応するGroonga::Recordを返す。
|
308
|
+
* _table_ の _key_ に対応するGroonga::Recordを返す。
|
309
309
|
*
|
310
310
|
* 0.9.0から値ではなくGroonga::Recordを返すようになった。
|
311
311
|
*/
|
@@ -357,8 +357,8 @@ set_value (VALUE args, SetValueData *data)
|
|
357
357
|
* call-seq:
|
358
358
|
* table[key] = {:column_name => value, ...}
|
359
359
|
*
|
360
|
-
* _table_の_key_に対応するカラム_column_name_の値を設定する。
|
361
|
-
* _key_に対応するレコードがない場合は新しく作成される。
|
360
|
+
* _table_ の _key_ に対応するカラム _column_name_ の値を設定する。
|
361
|
+
* _key_ に対応するレコードがない場合は新しく作成される。
|
362
362
|
*
|
363
363
|
* 0.9.0から値ではなくカラムの値を設定するようになった。
|
364
364
|
*/
|
@@ -397,8 +397,8 @@ rb_grn_table_key_support_array_set (VALUE self, VALUE rb_key, VALUE rb_values)
|
|
397
397
|
* table.set_column_value(key, name, value)
|
398
398
|
* table.set_column_value(id, name, value, :id => true)
|
399
399
|
*
|
400
|
-
* _table_の_key_に対応するカラム_name_の値を設定する。
|
401
|
-
* _key_に対応するレコードがない場合は新しく作成される。
|
400
|
+
* _table_ の _key_ に対応するカラム _name_ の値を設定する。
|
401
|
+
* _key_ に対応するレコードがない場合は新しく作成される。
|
402
402
|
*/
|
403
403
|
static VALUE
|
404
404
|
rb_grn_table_key_support_set_column_value (int argc, VALUE *argv, VALUE self)
|
@@ -437,9 +437,9 @@ rb_grn_table_key_support_set_column_value (int argc, VALUE *argv, VALUE self)
|
|
437
437
|
* table.column_value(key, name)
|
438
438
|
* table.column_value(id, name, :id => true)
|
439
439
|
*
|
440
|
-
* _table_の_key_に対応するカラム_name_の値を設定する。
|
440
|
+
* _table_ の _key_ に対応するカラム _name_ の値を設定する。
|
441
441
|
*
|
442
|
-
* TODO: _key_に対応するレコードがない場合は例外?
|
442
|
+
* TODO: _key_ に対応するレコードがない場合は例外?
|
443
443
|
*/
|
444
444
|
static VALUE
|
445
445
|
rb_grn_table_key_support_get_column_value (int argc, VALUE *argv, VALUE self)
|
@@ -496,7 +496,7 @@ rb_grn_table_key_support_get_value_by_key (VALUE self, VALUE rb_key)
|
|
496
496
|
* table.value(id, :id => true) -> 値
|
497
497
|
* table.value(key) -> 値
|
498
498
|
*
|
499
|
-
* _table_の_id_または_key_に対応する値を返す。
|
499
|
+
* _table_ の _id_ または _key_ に対応する値を返す。
|
500
500
|
*/
|
501
501
|
static VALUE
|
502
502
|
rb_grn_table_key_support_get_value (int argc, VALUE *argv, VALUE self)
|
@@ -566,7 +566,7 @@ rb_grn_table_key_support_set_value_by_key (VALUE self,
|
|
566
566
|
* table.set_value(id, value, :id => true)
|
567
567
|
* table.set_value(key, value)
|
568
568
|
*
|
569
|
-
* _table_の_id_または_key_に対応する値を_value_に設定する。
|
569
|
+
* _table_ の _id_ または _key_ に対応する値を _value_ に設定する。
|
570
570
|
* 既存の値は上書きされる。
|
571
571
|
*/
|
572
572
|
static VALUE
|
@@ -628,7 +628,7 @@ rb_grn_table_key_support_get_default_tokenizer (VALUE self)
|
|
628
628
|
*
|
629
629
|
* Groonga::IndexColumnで使用するトークナイザを設定する。
|
630
630
|
*
|
631
|
-
*
|
631
|
+
* @example
|
632
632
|
* # 2-gramを使用。
|
633
633
|
* table.default_tokenizer = "TokenBigram"
|
634
634
|
* # オブジェクトで指定
|
@@ -670,7 +670,7 @@ rb_grn_table_key_support_set_default_tokenizer (VALUE self, VALUE rb_tokenizer)
|
|
670
670
|
* call-seq:
|
671
671
|
* table.normalize_key? -> true/false
|
672
672
|
*
|
673
|
-
*
|
673
|
+
* キーを正規化する場合は +true+ 、正規化しない場合は +false+ を返
|
674
674
|
* す。
|
675
675
|
*/
|
676
676
|
static VALUE
|
@@ -689,7 +689,7 @@ rb_grn_table_key_normalize_key_p (VALUE self)
|
|
689
689
|
* call-seq:
|
690
690
|
* table.support_key? -> true/false
|
691
691
|
*
|
692
|
-
*
|
692
|
+
* テーブルでキーを使えるなら +true+ 、使えないなら +false+ を返
|
693
693
|
* す。キーを使えないテーブルはGroonga::Arrayだけ。
|
694
694
|
*/
|
695
695
|
static VALUE
|
data/ext/groonga/rb-grn-table.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* -*- c-file-style: "ruby" -*- */
|
1
|
+
/* -*- coding: utf-8; c-file-style: "ruby" -*- */
|
2
2
|
/*
|
3
3
|
Copyright (C) 2009-2011 Kouhei Sutou <kou@clear-code.com>
|
4
4
|
|
@@ -228,27 +228,28 @@ rb_grn_table_inspect (VALUE self)
|
|
228
228
|
* table.define_column(name, value_type, options={}) ->
|
229
229
|
* Groonga::FixSizeColumnかGroonga::VariableSizeColumn
|
230
230
|
*
|
231
|
-
* テーブルに名前が_name_で型が_value_type_のカラムを定義
|
231
|
+
* テーブルに名前が _name_ で型が _value_type_ のカラムを定義
|
232
232
|
* し、新しく定義されたカラムを返す。
|
233
233
|
*
|
234
|
-
* _options_に指定可能な値は以下の通り。
|
235
|
-
*
|
236
|
-
*
|
234
|
+
* _options_ に指定可能な値は以下の通り。
|
235
|
+
* @param options [::Hash] The name and value
|
236
|
+
* pairs. Omitted names are initialized as the default value.
|
237
|
+
* @option options :path The path
|
237
238
|
* カラムを保存するパス。
|
238
239
|
*
|
239
|
-
*
|
240
|
-
* +true
|
241
|
-
*
|
240
|
+
* @option options :persistent (永続カラム) The persistent
|
241
|
+
* +true+ を指定すると永続カラムとなる。省略した場合は永
|
242
|
+
* 続カラムとなる。 +:path+ を省略した場合は自動的にパスが
|
242
243
|
* 付加される。
|
243
244
|
*
|
244
|
-
*
|
245
|
+
* @option options :type (:scalar) The type
|
245
246
|
* カラムの値の格納方法について指定する。省略した場合は、
|
246
|
-
* +:scalar
|
247
|
+
* +:scalar+ になる。
|
247
248
|
*
|
248
249
|
* [+:scalar+] スカラ値(単独の値)を格納する。
|
249
250
|
* [+:vector+] 値の配列を格納する。
|
250
251
|
*
|
251
|
-
*
|
252
|
+
* @param options :compress The compress
|
252
253
|
* 値の圧縮方法を指定する。省略した場合は、圧縮しない。
|
253
254
|
*
|
254
255
|
* [+:zlib+] 値をzlib圧縮して格納する。
|
@@ -366,33 +367,34 @@ n_gram_tokenizer_p(grn_ctx *context, grn_obj *tokenizer)
|
|
366
367
|
* call-seq:
|
367
368
|
* table.define_index_column(name, value_type, options={}) -> Groonga::IndexColumn
|
368
369
|
*
|
369
|
-
* テーブルに名前が_name_で型が_value_type_のインデックスカ
|
370
|
+
* テーブルに名前が _name_ で型が _value_type_ のインデックスカ
|
370
371
|
* ラムを定義し、新しく定義されたカラムを返す。
|
371
372
|
*
|
372
|
-
* _options_に指定可能な値は以下の通り。
|
373
|
-
*
|
374
|
-
*
|
373
|
+
* _options_ に指定可能な値は以下の通り。
|
374
|
+
* @param options [::Hash] The name and value
|
375
|
+
* pairs. Omitted names are initialized as the default value.
|
376
|
+
* @option options :path The path
|
375
377
|
* カラムを保存するパス。
|
376
378
|
*
|
377
|
-
*
|
378
|
-
* +true
|
379
|
-
*
|
379
|
+
* @option options :persistent (永続カラム) The persistent
|
380
|
+
* +true+ を指定すると永続カラムとなる。省略した場合は永
|
381
|
+
* 続カラムとなる。 +:path+ を省略した場合は自動的にパスが
|
380
382
|
* 付加される。
|
381
383
|
*
|
382
|
-
*
|
384
|
+
* @option options :with_section The with_section
|
383
385
|
* 転置索引にsection(段落情報)を合わせて格納する。
|
384
386
|
*
|
385
|
-
*
|
387
|
+
* @option options :with_weight The with_weight
|
386
388
|
* 転置索引にweight情報を合わせて格納する。
|
387
389
|
*
|
388
|
-
*
|
390
|
+
* @option options :with_position The with_position
|
389
391
|
* 転置索引に出現位置情報を合わせて格納する。
|
390
392
|
*
|
391
|
-
*
|
392
|
-
*
|
393
|
+
* @option options :source The source
|
394
|
+
* インデックス対象となるカラムを指定する。 +:sources+ との併用はできない。
|
393
395
|
*
|
394
|
-
*
|
395
|
-
*
|
396
|
+
* @option options :sources The sources
|
397
|
+
* インデックス対象となる複数のカラムを指定する。 +:source+ との併用はできない。
|
396
398
|
*/
|
397
399
|
static VALUE
|
398
400
|
rb_grn_table_define_index_column (int argc, VALUE *argv, VALUE self)
|
@@ -521,8 +523,8 @@ ruby_object_to_column_name (VALUE rb_name,
|
|
521
523
|
* call-seq:
|
522
524
|
* table.column(name) -> Groonga::Column or nil
|
523
525
|
*
|
524
|
-
* テーブルの_name_に対応するカラムを返す。カラムが存在しな
|
525
|
-
*
|
526
|
+
* テーブルの _name_ に対応するカラムを返す。カラムが存在しな
|
527
|
+
* い場合は +nil+ を返す。
|
526
528
|
*/
|
527
529
|
VALUE
|
528
530
|
rb_grn_table_get_column (VALUE self, VALUE rb_name)
|
@@ -602,8 +604,8 @@ rb_grn_table_get_column_surely (VALUE self, VALUE rb_name)
|
|
602
604
|
* call-seq:
|
603
605
|
* table.columns(name=nil) -> Groonga::Columnの配列
|
604
606
|
*
|
605
|
-
* テーブルの全てのカラムを返す。_name_が指定された場合はカ
|
606
|
-
* ラム名の先頭が_name_で始まるカラムを返す。
|
607
|
+
* テーブルの全てのカラムを返す。 _name_ が指定された場合はカ
|
608
|
+
* ラム名の先頭が _name_ で始まるカラムを返す。
|
607
609
|
*/
|
608
610
|
static VALUE
|
609
611
|
rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
|
@@ -670,7 +672,7 @@ rb_grn_table_get_columns (int argc, VALUE *argv, VALUE self)
|
|
670
672
|
* call-seq:
|
671
673
|
* table.have_column?(name) -> true/false
|
672
674
|
*
|
673
|
-
* テーブルが_name_
|
675
|
+
* テーブルが _name_ カラムを持っている場合は +true+ を返す。
|
674
676
|
*/
|
675
677
|
static VALUE
|
676
678
|
rb_grn_table_have_column (VALUE self, VALUE rb_name)
|
@@ -769,43 +771,44 @@ rb_grn_table_open_grn_cursor (int argc, VALUE *argv, VALUE self,
|
|
769
771
|
* カーソルが破棄される。
|
770
772
|
*
|
771
773
|
* _options_に指定可能な値は以下の通り。
|
772
|
-
*
|
773
|
-
*
|
774
|
+
* @param options [::Hash] The name and value
|
775
|
+
* pairs. Omitted names are initialized as the default value.
|
776
|
+
* @option options :min The min
|
774
777
|
* キーの下限
|
775
778
|
*
|
776
|
-
*
|
779
|
+
* @option options :max The max
|
777
780
|
* キーの上限
|
778
781
|
*
|
779
|
-
*
|
780
|
-
* 該当する範囲のレコードのうち、(0ベースで)_:offset_番目
|
782
|
+
* @option options :offset The offset
|
783
|
+
* 該当する範囲のレコードのうち、(0ベースで) _:offset_ 番目
|
781
784
|
* からレコードを取り出す。
|
782
785
|
*
|
783
|
-
*
|
784
|
-
* 該当する範囲のレコードのうち、_:limit_件のみを取り出す。
|
786
|
+
* @option options :limit The limit
|
787
|
+
* 該当する範囲のレコードのうち、 _:limit_ 件のみを取り出す。
|
785
788
|
* 省略された場合または-1が指定された場合は、全件が指定され
|
786
789
|
* たものとみなす。
|
787
790
|
*
|
788
|
-
*
|
789
|
-
* +:asc
|
791
|
+
* @option options :order (asc) The order
|
792
|
+
* +:asc+ または +:ascending+ を指定すると昇順にレコードを取
|
790
793
|
* り出す。(デフォルト)
|
791
794
|
*
|
792
|
-
* +:desc
|
795
|
+
* +:desc+ または +:descending+ を指定すると降順にレコードを
|
793
796
|
* 取り出す。
|
794
797
|
*
|
795
|
-
*
|
796
|
-
* +:id
|
798
|
+
* @option options :order_by The order_by
|
799
|
+
* +:id+ を指定するとID順にレコードを取り出す。(Arrayと
|
797
800
|
* Hashのデフォルト)
|
798
801
|
*
|
799
|
-
* +:key
|
802
|
+
* +:key+ 指定するとキー順にレコードを取り出す。ただし、
|
800
803
|
* Groonga::PatriciaTrieにしか使えない。(PatriciaTrieのデ
|
801
804
|
* フォルト)
|
802
805
|
*
|
803
|
-
*
|
804
|
-
* +true
|
806
|
+
* @option options :greater_than The greater_than
|
807
|
+
* +true+ を指定すると +:min+ で指定した値に一致した [ +key+ ] を
|
805
808
|
* 範囲に含まない。
|
806
809
|
*
|
807
|
-
*
|
808
|
-
* +true
|
810
|
+
* @option options :less_than The less_than
|
811
|
+
* +true+ を指定すると +:max+ で指定した値に一致した [ +key+ ] を
|
809
812
|
* 範囲に含まない。
|
810
813
|
*/
|
811
814
|
static VALUE
|
@@ -874,7 +877,7 @@ rb_grn_table_get_size (VALUE self)
|
|
874
877
|
* call-seq:
|
875
878
|
* table.empty? -> true/false
|
876
879
|
*
|
877
|
-
*
|
880
|
+
* テーブルにレコードが登録されていなければ +true+ を返す。
|
878
881
|
*/
|
879
882
|
static VALUE
|
880
883
|
rb_grn_table_empty_p (VALUE self)
|
@@ -888,7 +891,7 @@ rb_grn_table_empty_p (VALUE self)
|
|
888
891
|
NULL, NULL, NULL,
|
889
892
|
NULL);
|
890
893
|
size = grn_table_size(context, table);
|
891
|
-
return size == 0;
|
894
|
+
return CBOOL2RVAL(size == 0);
|
892
895
|
}
|
893
896
|
|
894
897
|
/*
|
@@ -953,7 +956,7 @@ rb_grn_table_each (VALUE self)
|
|
953
956
|
* call-seq:
|
954
957
|
* table.delete(id)
|
955
958
|
*
|
956
|
-
* テーブルの_id_に対応するレコードを削除する。
|
959
|
+
* テーブルの _id_ に対応するレコードを削除する。
|
957
960
|
*/
|
958
961
|
VALUE
|
959
962
|
rb_grn_table_delete (VALUE self, VALUE rb_id)
|
@@ -982,41 +985,50 @@ rb_grn_table_delete (VALUE self, VALUE rb_id)
|
|
982
985
|
* テーブルに登録されているレコードを_keys_で指定されたルー
|
983
986
|
* ルに従ってソートしたレコードの配列を返す。
|
984
987
|
*
|
985
|
-
* _order_
|
988
|
+
* _order_ には +:asc+ , +:ascending+ , +:desc+ , +:descending+ の
|
986
989
|
* いずれを指定する。
|
987
990
|
*
|
988
|
-
*
|
989
|
-
*
|
990
|
-
*
|
991
|
-
*
|
992
|
-
*
|
993
|
-
*
|
994
|
-
*
|
995
|
-
*
|
996
|
-
*
|
997
|
-
*
|
998
|
-
*
|
999
|
-
*
|
1000
|
-
*
|
1001
|
-
*
|
1002
|
-
*
|
1003
|
-
*
|
1004
|
-
*
|
1005
|
-
*
|
1006
|
-
*
|
1007
|
-
*
|
1008
|
-
*
|
1009
|
-
*
|
1010
|
-
*
|
1011
|
-
*
|
1012
|
-
*
|
1013
|
-
*
|
1014
|
-
*
|
1015
|
-
*
|
991
|
+
* - ハッシュの配列で指定する方法 :=
|
992
|
+
* オーソドックスな指定方法。
|
993
|
+
*
|
994
|
+
* <pre lang="ruby">
|
995
|
+
* [
|
996
|
+
* {:key => "第1ソートキー", :order => order},
|
997
|
+
* {:key => "第2ソートキー", :order => order},
|
998
|
+
* ...,
|
999
|
+
* ]
|
1000
|
+
* </pre>
|
1001
|
+
* =:
|
1002
|
+
*
|
1003
|
+
* - 配列の配列で指定する方法 :=
|
1004
|
+
* 少し簡単化した指定方法。
|
1005
|
+
*
|
1006
|
+
* <pre lang="ruby">
|
1007
|
+
* [
|
1008
|
+
* ["第1ソートキー", order],
|
1009
|
+
* ["第2ソートキー", order],
|
1010
|
+
* ...,
|
1011
|
+
* ]
|
1012
|
+
* </pre>
|
1013
|
+
* =:
|
1014
|
+
*
|
1015
|
+
* - ソートキーの配列で指定する方法 :=
|
1016
|
+
* _order_ は常に昇順( +:ascending+ )になるが、最も簡単
|
1017
|
+
* に指定できる。
|
1018
|
+
*
|
1019
|
+
* <pre lang="ruby">
|
1020
|
+
* ["第1ソートキー", "第2ソートキー", ...]
|
1021
|
+
* </pre>
|
1022
|
+
* =:
|
1023
|
+
*
|
1024
|
+
* @param options [::Hash] The name and value
|
1025
|
+
* pairs. Omitted names are initialized as the default value.
|
1026
|
+
* @option options :offset The offset
|
1027
|
+
* ソートされたレコードのうち、(0ベースで) _:offset_ 番目
|
1016
1028
|
* からレコードを取り出す。
|
1017
1029
|
*
|
1018
|
-
*
|
1019
|
-
* ソートされたレコードのうち、_:limit_件のみを取り出す。
|
1030
|
+
* @option options :limit The limit
|
1031
|
+
* ソートされたレコードのうち、 _:limit_ 件のみを取り出す。
|
1020
1032
|
* 省略された場合または-1が指定された場合は、全件が指定され
|
1021
1033
|
* たものとみなす。
|
1022
1034
|
*/
|
@@ -1143,7 +1155,7 @@ rb_grn_table_sort (int argc, VALUE *argv, VALUE self)
|
|
1143
1155
|
* table.group([key1, key2, ...], options={}) -> [Groonga::Hash, ...]
|
1144
1156
|
* table.group(key, options={}) -> Groonga::Hash
|
1145
1157
|
*
|
1146
|
-
* _table_のレコードを_key1_, _key2_, _..._で指定したキーの
|
1158
|
+
* _table_ のレコードを _key1_ , _key2_ , _..._ で指定したキーの
|
1147
1159
|
* 値でグループ化する。多くの場合、キーにはカラムを指定する。
|
1148
1160
|
* カラムはカラム名(文字列)でも指定可能。
|
1149
1161
|
*/
|
@@ -1244,7 +1256,7 @@ rb_grn_table_group (int argc, VALUE *argv, VALUE self)
|
|
1244
1256
|
* call-seq:
|
1245
1257
|
* table[id] -> Groonga::Record
|
1246
1258
|
*
|
1247
|
-
* _table_の_id_に対応するGroonga::Recordを返す。
|
1259
|
+
* _table_ の _id_ に対応するGroonga::Recordを返す。
|
1248
1260
|
*
|
1249
1261
|
* 0.9.0から値ではなくGroonga::Recordを返すようになった。
|
1250
1262
|
*/
|
@@ -1287,7 +1299,7 @@ rb_grn_table_get_value (VALUE self, VALUE rb_id)
|
|
1287
1299
|
* table.value(id) -> 値
|
1288
1300
|
* table.value(id, :id => true) -> 値
|
1289
1301
|
*
|
1290
|
-
* _table_の_id_に対応する値を返す。
|
1302
|
+
* _table_ の _id_ に対応する値を返す。
|
1291
1303
|
*
|
1292
1304
|
* <tt>:id => true</tt>が指定できるのは利便性のため。
|
1293
1305
|
* Groonga::ArrayでもGroonga::HashやGroonga::PatriciaTrieと
|
@@ -1347,7 +1359,7 @@ rb_grn_table_set_value (VALUE self, VALUE rb_id, VALUE rb_value)
|
|
1347
1359
|
* table.set_value(id, value)
|
1348
1360
|
* table.set_value(id, value, :id => true)
|
1349
1361
|
*
|
1350
|
-
* _table_の_id_に対応する値として_value_設定する。既存の値は
|
1362
|
+
* _table_ の _id_ に対応する値として _value_ 設定する。既存の値は
|
1351
1363
|
* 上書きされる。
|
1352
1364
|
*
|
1353
1365
|
* <tt>:id => true</tt>が指定できるのは利便性のため。
|
@@ -1400,7 +1412,7 @@ rb_grn_table_get_column_value (VALUE self, VALUE rb_id, VALUE rb_name)
|
|
1400
1412
|
* table.column_value(id, name) -> 値
|
1401
1413
|
* table.column_value(id, name, :id => true) -> 値
|
1402
1414
|
*
|
1403
|
-
* _table_の_id_に対応するカラム_name_の値を返す。
|
1415
|
+
* _table_ の _id_ に対応するカラム _name_ の値を返す。
|
1404
1416
|
*
|
1405
1417
|
* <tt>:id => true</tt>が指定できるのは利便性のため。
|
1406
1418
|
* Groonga::ArrayでもGroonga::HashやGroonga::PatriciaTrieと
|
@@ -1456,7 +1468,7 @@ rb_grn_table_set_column_value (VALUE self, VALUE rb_id,
|
|
1456
1468
|
* table.set_column_value(id, name, value)
|
1457
1469
|
* table.set_column_value(id, name, value, :id => true)
|
1458
1470
|
*
|
1459
|
-
* _table_の_id_に対応するカラム_name_の値として_value_設定す
|
1471
|
+
* _table_ の _id_ に対応するカラム _name_ の値として _value_ 設定す
|
1460
1472
|
* る。既存の値は上書きされる。
|
1461
1473
|
*
|
1462
1474
|
* <tt>:id => true</tt>が指定できるのは利便性のため。
|
@@ -1492,12 +1504,12 @@ rb_grn_table_set_column_value_convenience (int argc, VALUE *argv, VALUE self)
|
|
1492
1504
|
* call-seq:
|
1493
1505
|
* table.unlock(options={})
|
1494
1506
|
*
|
1495
|
-
* _table_のロックを解除する。
|
1507
|
+
* _table_ のロックを解除する。
|
1496
1508
|
*
|
1497
1509
|
* 利用可能なオプションは以下の通り。
|
1498
1510
|
*
|
1499
|
-
* [_:id_]
|
1500
|
-
* _:id_で指定したレコードのロックを解除する。(注:
|
1511
|
+
* [ _:id_ ]
|
1512
|
+
* _:id_ で指定したレコードのロックを解除する。(注:
|
1501
1513
|
* groonga側が未実装のため、現在は無視される)
|
1502
1514
|
*/
|
1503
1515
|
static VALUE
|
@@ -1543,19 +1555,23 @@ rb_grn_table_unlock_ensure (VALUE self)
|
|
1543
1555
|
* table.lock(options={})
|
1544
1556
|
* table.lock(options={}) {}
|
1545
1557
|
*
|
1546
|
-
* _table_をロックする。ロックに失敗した場合は
|
1558
|
+
* _table_ をロックする。ロックに失敗した場合は
|
1547
1559
|
* Groonga::ResourceDeadlockAvoided例外が発生する。
|
1548
1560
|
*
|
1549
1561
|
* ブロックを指定した場合はブロックを抜けたときにunlockする。
|
1550
1562
|
*
|
1551
1563
|
* 利用可能なオプションは以下の通り。
|
1564
|
+
* @param options [::Hash] The name and value
|
1565
|
+
* pairs. Omitted names are initialized as the default value.
|
1566
|
+
* @option options :timeout The timeout
|
1552
1567
|
*
|
1553
|
-
*
|
1554
|
-
*
|
1555
|
-
* 得を試みる。_:timeout_秒以内にロックを獲得できなかった
|
1568
|
+
* ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲
|
1569
|
+
* 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった
|
1556
1570
|
* 場合は例外が発生する。
|
1557
|
-
*
|
1558
|
-
*
|
1571
|
+
*
|
1572
|
+
* @option options :id The id
|
1573
|
+
*
|
1574
|
+
* _:id_ で指定したレコードをロックする。(注: groonga側が
|
1559
1575
|
* 未実装のため、現在は無視される)
|
1560
1576
|
*/
|
1561
1577
|
static VALUE
|
@@ -1603,12 +1619,14 @@ rb_grn_table_lock (int argc, VALUE *argv, VALUE self)
|
|
1603
1619
|
* call-seq:
|
1604
1620
|
* table.clear_lock(options={})
|
1605
1621
|
*
|
1606
|
-
* _table_のロックを強制的に解除する。
|
1622
|
+
* _table_ のロックを強制的に解除する。
|
1607
1623
|
*
|
1608
1624
|
* 利用可能なオプションは以下の通り。
|
1625
|
+
* @param options [::Hash] The name and value
|
1626
|
+
* pairs. Omitted names are initialized as the default value.
|
1627
|
+
* @option options :id The id
|
1609
1628
|
*
|
1610
|
-
*
|
1611
|
-
* _:id_で指定したレコードのロックを強制的に解除する。
|
1629
|
+
* _:id_ で指定したレコードのロックを強制的に解除する。
|
1612
1630
|
* (注: groonga側が未実装のため、現在は無視される。実装さ
|
1613
1631
|
* れるのではないかと思っているが、実装されないかもしれな
|
1614
1632
|
* い。)
|
@@ -1646,12 +1664,14 @@ rb_grn_table_clear_lock (int argc, VALUE *argv, VALUE self)
|
|
1646
1664
|
* call-seq:
|
1647
1665
|
* table.locked?(options={})
|
1648
1666
|
*
|
1649
|
-
* _table_
|
1667
|
+
* _table_ がロックされていれば +true+ を返す。
|
1650
1668
|
*
|
1651
1669
|
* 利用可能なオプションは以下の通り。
|
1670
|
+
* @param options [options] The name and value
|
1671
|
+
* pairs. Omitted names are initialized as the default value.
|
1672
|
+
* @option options :id The id
|
1652
1673
|
*
|
1653
|
-
*
|
1654
|
-
* _:id_で指定したレコードがロックされていれば+true+を返す。
|
1674
|
+
* _:id_ で指定したレコードがロックされていれば +true+ を返す。
|
1655
1675
|
* (注: groonga側が未実装のため、現在は無視される。実装さ
|
1656
1676
|
* れるのではないかと思っているが、実装されないかもしれな
|
1657
1677
|
* い。)
|
@@ -1687,14 +1707,14 @@ rb_grn_table_is_locked (int argc, VALUE *argv, VALUE self)
|
|
1687
1707
|
* table.select(query, options) -> Groonga::Hash
|
1688
1708
|
* table.select(expression, options) -> Groonga::Hash
|
1689
1709
|
*
|
1690
|
-
* _table_からブロックまたは文字列で指定した条件にマッチする
|
1691
|
-
*
|
1710
|
+
* _table_ からブロックまたは文字列で指定した条件にマッチする
|
1711
|
+
* レコードを返す。返されたテーブルには +expression+ という特
|
1692
1712
|
* 異メソッドがあり、指定した条件を表している
|
1693
1713
|
* Groonga::Expressionを取得できる。
|
1694
1714
|
* Groonga::Expression#snippetを使うことにより、指定した条件
|
1695
1715
|
* 用のスニペットを簡単に生成できる。
|
1696
|
-
*
|
1697
|
-
* results = table.select do |record|
|
1716
|
+
* <pre>
|
1717
|
+
* ==results = table.select do |record|
|
1698
1718
|
* record["description"] =~ "groonga"
|
1699
1719
|
* end
|
1700
1720
|
* snippet = results.expression.snippet([["<em>", "</em>"]])
|
@@ -1705,65 +1725,72 @@ rb_grn_table_is_locked (int argc, VALUE *argv, VALUE self)
|
|
1705
1725
|
* puts "#{snippet}..."
|
1706
1726
|
* puts "---"
|
1707
1727
|
* end
|
1708
|
-
* end
|
1709
|
-
*
|
1728
|
+
* end==
|
1729
|
+
* </pre>
|
1710
1730
|
* 出力例
|
1711
1731
|
* Ruby/groongaの説明文の中で「groonga」が含まれる部分
|
1712
1732
|
* ---
|
1713
1733
|
* Ruby/<em>groonga</em>は<em>groonga</em>のいわゆるDB-APIの層の...
|
1714
1734
|
* ---
|
1715
1735
|
*
|
1716
|
-
* _query_には「[カラム名]:[演算子][値]」という書式で条件を
|
1736
|
+
* _query_ には「[カラム名]:[演算子][値]」という書式で条件を
|
1717
1737
|
* 指定する。演算子は以下の通り。
|
1718
|
-
*
|
1719
|
-
*
|
1720
|
-
*
|
1721
|
-
*
|
1722
|
-
*
|
1723
|
-
*
|
1724
|
-
*
|
1725
|
-
*
|
1726
|
-
*
|
1727
|
-
*
|
1728
|
-
*
|
1729
|
-
*
|
1730
|
-
*
|
1731
|
-
*
|
1732
|
-
*
|
1738
|
+
* <pre>
|
1739
|
+
* [なし]
|
1740
|
+
* \[カラム値] == [値]
|
1741
|
+
* [<tt>!</tt>]
|
1742
|
+
* \[カラム値] != [値]
|
1743
|
+
* [<tt><</tt>]
|
1744
|
+
* \[カラム値] < [値]
|
1745
|
+
* [<tt>></tt>]
|
1746
|
+
* \[カラム値] > [値]
|
1747
|
+
* [<tt><=</tt>]
|
1748
|
+
* \[カラム値] <= [値]
|
1749
|
+
* [<tt>>=</tt>]
|
1750
|
+
* \[カラム値] >= [値]
|
1751
|
+
* [<tt>@</tt>]
|
1752
|
+
* \[カラム値]が[値]を含んでいるかどうか
|
1753
|
+
* </pre>
|
1733
1754
|
*
|
1734
1755
|
* 例:
|
1735
|
-
*
|
1756
|
+
* <pre>
|
1757
|
+
* =="name:daijiro" # "name"カラムの値が"daijiro"のレコードにマッチ
|
1736
1758
|
* "description:@groonga" # "description"カラムが
|
1737
|
-
* # "groonga"
|
1759
|
+
* # "groonga"を含んでいるレコードにマッチ==
|
1760
|
+
* </pre>
|
1738
1761
|
*
|
1739
|
-
* _expression_には既に作成済みのGroonga::Expressionを渡す
|
1762
|
+
* _expression_ には既に作成済みのGroonga::Expressionを渡す
|
1740
1763
|
*
|
1741
1764
|
* ブロックで条件を指定する場合は
|
1742
1765
|
* Groonga::RecordExpressionBuilderを参照。
|
1743
1766
|
*
|
1744
1767
|
* Ruby1.9以降では、ブロックで条件を指定する際に
|
1745
1768
|
* Groonga::ColumnExpressionBuilderの他に"!="も使用可能。
|
1769
|
+
*
|
1746
1770
|
* 例:
|
1747
|
-
*
|
1771
|
+
* <pre>
|
1772
|
+
* ==comments = Groonga::Array.create(:name => "Comments")
|
1748
1773
|
* comments.define_column("content", "Text")
|
1749
|
-
*
|
1750
1774
|
* comments.add(:content => "Hello Good-bye!")
|
1751
1775
|
* comments.add(:content => "Hello World")
|
1752
1776
|
* comments.add(:content => "test")
|
1753
|
-
*
|
1754
1777
|
* result = comments.select do |record|
|
1755
1778
|
* record.content != "test"
|
1756
1779
|
* end
|
1757
1780
|
* p result.collect {|record| record.content}
|
1758
|
-
* # => ["Hello Good-bye!", "Hello World"]
|
1781
|
+
* # => ["Hello Good-bye!", "Hello World"]==
|
1782
|
+
* </pre>
|
1759
1783
|
*
|
1760
|
-
* _options_に指定可能な値は以下の通り。
|
1784
|
+
* _options_ に指定可能な値は以下の通り。
|
1785
|
+
* @param options [::Hash] The name and value
|
1786
|
+
* pairs. Omitted names are initialized as the default value.
|
1787
|
+
* @option options :default_column
|
1761
1788
|
*
|
1762
|
-
* [+:default_column+]
|
1763
1789
|
* "column_name:hoge"ではなく"hoge"のようにcolumn_nameが指
|
1764
1790
|
* 定されない条件の検索対象となるカラムを指定する。
|
1765
1791
|
*
|
1766
|
-
*
|
1792
|
+
* @option options :operator (Groonga::Operator::OR) The operator
|
1793
|
+
*
|
1767
1794
|
* マッチしたレコードをどのように扱うか。指定可能な値は以
|
1768
1795
|
* 下の通り。省略した場合はGroonga::Operator::OR。
|
1769
1796
|
*
|
@@ -1777,31 +1804,37 @@ rb_grn_table_is_locked (int argc, VALUE *argv, VALUE self)
|
|
1777
1804
|
* [Groonga::Operator::ADJUST] マッチしたレコードのスコア
|
1778
1805
|
* を増加。
|
1779
1806
|
*
|
1780
|
-
*
|
1807
|
+
* @option options :result The result
|
1808
|
+
*
|
1781
1809
|
* 検索結果を格納するテーブル。マッチしたレコードが追加さ
|
1782
1810
|
* れていく。省略した場合は新しくテーブルを作成して返す。
|
1783
1811
|
*
|
1784
|
-
*
|
1812
|
+
* @option options :name The name
|
1813
|
+
*
|
1785
1814
|
* 条件の名前。省略した場合は名前を付けない。
|
1786
1815
|
*
|
1787
|
-
*
|
1788
|
-
*
|
1816
|
+
* @option options :syntax The syntax
|
1817
|
+
*
|
1818
|
+
* _query_ の構文。省略した場合は +:query+ 。
|
1789
1819
|
*
|
1790
1820
|
* 参考: Groonga::Expression#parse.
|
1791
1821
|
*
|
1792
|
-
*
|
1822
|
+
* @option options :allow_pragma The allow_pragma
|
1823
|
+
*
|
1793
1824
|
* query構文時にプラグマを利用するかどうか。省略した場合は
|
1794
1825
|
* 利用する。
|
1795
1826
|
*
|
1796
1827
|
* 参考: Groonga::Expression#parse.
|
1797
1828
|
*
|
1798
|
-
*
|
1829
|
+
* @option options :allow_column The allow_column
|
1830
|
+
*
|
1799
1831
|
* query構文時にカラム指定を利用するかどうか。省略した場合
|
1800
1832
|
* は利用する。
|
1801
1833
|
*
|
1802
1834
|
* 参考: Groonga::Expression#parse.
|
1803
1835
|
*
|
1804
|
-
*
|
1836
|
+
* @option options :allow_update The allow_update
|
1837
|
+
*
|
1805
1838
|
* script構文時に更新操作を利用するかどうか。省略した場合
|
1806
1839
|
* は利用する。
|
1807
1840
|
*
|
@@ -1918,8 +1951,8 @@ rb_grn_table_set_operation_bang (VALUE self, VALUE rb_other,
|
|
1918
1951
|
* call-seq:
|
1919
1952
|
* table.union!(other) -> Groonga::Table
|
1920
1953
|
*
|
1921
|
-
* キーを比較し、_table_には登録されていない_other_のレコー
|
1922
|
-
* ドを_table_に作成する。
|
1954
|
+
* キーを比較し、 _table_ には登録されていない _other_ のレコー
|
1955
|
+
* ドを _table_ に作成する。
|
1923
1956
|
*
|
1924
1957
|
*/
|
1925
1958
|
static VALUE
|
@@ -1933,8 +1966,8 @@ rb_grn_table_union_bang (VALUE self, VALUE rb_other)
|
|
1933
1966
|
* call-seq:
|
1934
1967
|
* table.intersection!(other) -> Groonga::Table
|
1935
1968
|
*
|
1936
|
-
* キーを比較し、_other_には登録されていないレコードを
|
1937
|
-
* _table_から削除する。
|
1969
|
+
* キーを比較し、 _other_ には登録されていないレコードを
|
1970
|
+
* _table_ から削除する。
|
1938
1971
|
*
|
1939
1972
|
*/
|
1940
1973
|
static VALUE
|
@@ -1947,7 +1980,7 @@ rb_grn_table_intersection_bang (VALUE self, VALUE rb_other)
|
|
1947
1980
|
* call-seq:
|
1948
1981
|
* table.difference!(other) -> Groonga::Table
|
1949
1982
|
*
|
1950
|
-
* キーを比較し、_other_にも登録されているレコードを_table_
|
1983
|
+
* キーを比較し、 _other_ にも登録されているレコードを _table_
|
1951
1984
|
* から削除する。
|
1952
1985
|
*
|
1953
1986
|
*/
|
@@ -1961,8 +1994,8 @@ rb_grn_table_difference_bang (VALUE self, VALUE rb_other)
|
|
1961
1994
|
* call-seq:
|
1962
1995
|
* table.merge!(other) -> Groonga::Table
|
1963
1996
|
*
|
1964
|
-
* キーを比較し、_other_にも登録されている_table_のレコード
|
1965
|
-
* のスコアを_other_のスコアと同値にする。
|
1997
|
+
* キーを比較し、 _other_ にも登録されている _table_ のレコード
|
1998
|
+
* のスコアを _other_ のスコアと同値にする。
|
1966
1999
|
*
|
1967
2000
|
*/
|
1968
2001
|
static VALUE
|
@@ -1975,8 +2008,8 @@ rb_grn_table_merge_bang (VALUE self, VALUE rb_other)
|
|
1975
2008
|
* call-seq:
|
1976
2009
|
* table.support_key? -> true/false
|
1977
2010
|
*
|
1978
|
-
* _table_
|
1979
|
-
* +false
|
2011
|
+
* _table_ に主キーが設定されていれば +true+ 、されていなければ
|
2012
|
+
* +false+ を返す。
|
1980
2013
|
*/
|
1981
2014
|
static VALUE
|
1982
2015
|
rb_grn_table_support_key_p (VALUE self)
|
@@ -1989,7 +2022,7 @@ rb_grn_table_support_key_p (VALUE self)
|
|
1989
2022
|
* table.support_sub_records? -> true/false
|
1990
2023
|
*
|
1991
2024
|
* グループ化したとき、テーブルにグループに含まれるレコード
|
1992
|
-
*
|
2025
|
+
* 数を格納できる場合は +true+ 、格納できない場合は +false+ を返
|
1993
2026
|
* す。
|
1994
2027
|
*/
|
1995
2028
|
static VALUE
|
@@ -2008,8 +2041,8 @@ rb_grn_table_support_sub_records_p (VALUE self)
|
|
2008
2041
|
* call-seq:
|
2009
2042
|
* table.exist?(id) -> true/false
|
2010
2043
|
*
|
2011
|
-
* _table_に_id_で指定したID
|
2012
|
-
*
|
2044
|
+
* _table_ に _id_ で指定したIDのレコードが存在する場合は +true+ 、
|
2045
|
+
* 存在しない場合は +false+ を返す。
|
2013
2046
|
*
|
2014
2047
|
* 注意: 実行には相応のコストがかかるのであまり頻繁に呼ばな
|
2015
2048
|
* いようにして下さい。
|
@@ -2027,6 +2060,83 @@ rb_grn_table_exist_p (VALUE self, VALUE id)
|
|
2027
2060
|
return CBOOL2RVAL(grn_table_at(context, table, NUM2UINT(id)));
|
2028
2061
|
}
|
2029
2062
|
|
2063
|
+
/*
|
2064
|
+
* Document-method: defrag
|
2065
|
+
*
|
2066
|
+
* call-seq:
|
2067
|
+
* table.defrag(options={}) -> n_segments
|
2068
|
+
*
|
2069
|
+
* Defrags all variable size columns in the table.
|
2070
|
+
*
|
2071
|
+
* @return [Integer] the number of defraged segments
|
2072
|
+
* @option options [Integer] :threshold (0) the threshold to
|
2073
|
+
* determine whether a segment is defraged. Available
|
2074
|
+
* values are -4..22. -4 means all segments are defraged.
|
2075
|
+
* 22 means no segment is defraged.
|
2076
|
+
* @since 1.3.0
|
2077
|
+
*/
|
2078
|
+
static VALUE
|
2079
|
+
rb_grn_table_defrag (int argc, VALUE *argv, VALUE self)
|
2080
|
+
{
|
2081
|
+
grn_ctx *context;
|
2082
|
+
grn_obj *table;
|
2083
|
+
int n_segments;
|
2084
|
+
VALUE options, rb_threshold;
|
2085
|
+
int threshold = 0;
|
2086
|
+
|
2087
|
+
rb_scan_args(argc, argv, "01", &options);
|
2088
|
+
rb_grn_scan_options(options,
|
2089
|
+
"threshold", &rb_threshold,
|
2090
|
+
NULL);
|
2091
|
+
if (!NIL_P(rb_threshold)) {
|
2092
|
+
threshold = NUM2INT(rb_threshold);
|
2093
|
+
}
|
2094
|
+
|
2095
|
+
rb_grn_table_deconstruct(SELF(self), &table, &context,
|
2096
|
+
NULL, NULL, NULL,
|
2097
|
+
NULL, NULL,
|
2098
|
+
NULL);
|
2099
|
+
n_segments = grn_obj_defrag(context, table, threshold);
|
2100
|
+
rb_grn_context_check(context, self);
|
2101
|
+
|
2102
|
+
return INT2NUM(n_segments);
|
2103
|
+
}
|
2104
|
+
|
2105
|
+
/*
|
2106
|
+
* Document-method: rename
|
2107
|
+
*
|
2108
|
+
* call-seq:
|
2109
|
+
* table.rename(name)
|
2110
|
+
*
|
2111
|
+
* Renames the table to name.
|
2112
|
+
*
|
2113
|
+
* @param name [String] the new name
|
2114
|
+
* @since 1.3.0
|
2115
|
+
*/
|
2116
|
+
static VALUE
|
2117
|
+
rb_grn_table_rename (VALUE self, VALUE rb_name)
|
2118
|
+
{
|
2119
|
+
int rc;
|
2120
|
+
grn_ctx *context;
|
2121
|
+
grn_obj *table;
|
2122
|
+
char *name;
|
2123
|
+
int name_size;
|
2124
|
+
|
2125
|
+
rb_grn_table_deconstruct(SELF(self), &table, &context,
|
2126
|
+
NULL, NULL, NULL,
|
2127
|
+
NULL, NULL,
|
2128
|
+
NULL);
|
2129
|
+
|
2130
|
+
name = StringValueCStr(rb_name);
|
2131
|
+
name_size = RSTRING_LEN(rb_name);
|
2132
|
+
|
2133
|
+
rc = grn_table_rename(context, table, name, name_size);
|
2134
|
+
rb_grn_context_check(context, self);
|
2135
|
+
rb_grn_rc_check(rc, self);
|
2136
|
+
|
2137
|
+
return self;
|
2138
|
+
}
|
2139
|
+
|
2030
2140
|
void
|
2031
2141
|
rb_grn_init_table (VALUE mGrn)
|
2032
2142
|
{
|
@@ -2101,9 +2211,14 @@ rb_grn_init_table (VALUE mGrn)
|
|
2101
2211
|
|
2102
2212
|
rb_define_method(rb_cGrnTable, "exist?", rb_grn_table_exist_p, 1);
|
2103
2213
|
|
2214
|
+
rb_define_method(rb_cGrnTable, "defrag", rb_grn_table_defrag, -1);
|
2215
|
+
|
2216
|
+
rb_define_method(rb_cGrnTable, "rename", rb_grn_table_rename, 1);
|
2217
|
+
|
2104
2218
|
rb_grn_init_table_key_support(mGrn);
|
2105
2219
|
rb_grn_init_array(mGrn);
|
2106
2220
|
rb_grn_init_hash(mGrn);
|
2107
2221
|
rb_grn_init_patricia_trie(mGrn);
|
2222
|
+
rb_grn_init_double_array_trie(mGrn);
|
2108
2223
|
rb_grn_init_view(mGrn);
|
2109
2224
|
}
|