rroonga 2.0.4 → 2.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/Rakefile +21 -2
  2. data/bin/grndump +3 -2
  3. data/ext/groonga/extconf.rb +1 -6
  4. data/ext/groonga/rb-grn-array.c +58 -31
  5. data/ext/groonga/rb-grn-column.c +220 -148
  6. data/ext/groonga/rb-grn-context.c +46 -32
  7. data/ext/groonga/rb-grn-database.c +102 -90
  8. data/ext/groonga/rb-grn-double-array-trie.c +205 -163
  9. data/ext/groonga/rb-grn-encoding-support.c +2 -3
  10. data/ext/groonga/rb-grn-encoding.c +13 -8
  11. data/ext/groonga/rb-grn-exception.c +1 -1
  12. data/ext/groonga/rb-grn-expression.c +110 -133
  13. data/ext/groonga/rb-grn-fix-size-column.c +5 -4
  14. data/ext/groonga/rb-grn-geo-point.c +55 -0
  15. data/ext/groonga/rb-grn-hash.c +120 -82
  16. data/ext/groonga/rb-grn-index-column.c +66 -70
  17. data/ext/groonga/rb-grn-index-cursor.c +3 -0
  18. data/ext/groonga/rb-grn-logger.c +33 -51
  19. data/ext/groonga/rb-grn-object.c +2 -0
  20. data/ext/groonga/rb-grn-operator.c +1 -1
  21. data/ext/groonga/rb-grn-patricia-trie.c +287 -232
  22. data/ext/groonga/rb-grn-plugin.c +11 -14
  23. data/ext/groonga/rb-grn-snippet.c +37 -54
  24. data/ext/groonga/rb-grn-table-cursor-key-support.c +3 -3
  25. data/ext/groonga/rb-grn-table-cursor.c +8 -6
  26. data/ext/groonga/rb-grn-table-key-support.c +22 -29
  27. data/ext/groonga/rb-grn-table.c +355 -279
  28. data/ext/groonga/rb-grn-type.c +18 -25
  29. data/ext/groonga/rb-grn-utils.c +77 -7
  30. data/ext/groonga/rb-grn-variable-size-column.c +12 -20
  31. data/ext/groonga/rb-grn-view.c +56 -51
  32. data/ext/groonga/rb-grn.h +28 -1
  33. data/ext/groonga/rb-groonga.c +1 -0
  34. data/lib/groonga.rb +2 -0
  35. data/lib/groonga/command.rb +3 -1
  36. data/lib/groonga/database.rb +27 -0
  37. data/lib/groonga/dumper.rb +96 -17
  38. data/lib/groonga/geo-point.rb +216 -0
  39. data/lib/groonga/schema.rb +29 -46
  40. data/rroonga-build.rb +1 -1
  41. data/rroonga.gemspec +90 -0
  42. data/test/groonga-test-utils.rb +168 -0
  43. data/test/run-test.rb +60 -0
  44. data/test/test-accessor.rb +36 -0
  45. data/test/test-array.rb +146 -0
  46. data/test/test-column.rb +350 -0
  47. data/test/test-command-select.rb +181 -0
  48. data/test/test-context.rb +130 -0
  49. data/test/test-database-dumper.rb +259 -0
  50. data/test/test-database.rb +173 -0
  51. data/test/test-double-array-trie.rb +189 -0
  52. data/test/test-encoding.rb +33 -0
  53. data/test/test-exception.rb +230 -0
  54. data/test/test-expression-builder.rb +602 -0
  55. data/test/test-expression.rb +134 -0
  56. data/test/test-fix-size-column.rb +77 -0
  57. data/test/test-geo-point.rb +190 -0
  58. data/test/test-gqtp.rb +70 -0
  59. data/test/test-hash.rb +367 -0
  60. data/test/test-index-column.rb +180 -0
  61. data/test/test-index-cursor.rb +123 -0
  62. data/test/test-logger.rb +37 -0
  63. data/test/test-pagination.rb +249 -0
  64. data/test/test-patricia-trie.rb +440 -0
  65. data/test/test-plugin.rb +35 -0
  66. data/test/test-procedure.rb +37 -0
  67. data/test/test-query-log.rb +258 -0
  68. data/test/test-record.rb +577 -0
  69. data/test/test-remote.rb +63 -0
  70. data/test/test-schema-create-table.rb +267 -0
  71. data/test/test-schema-dumper.rb +235 -0
  72. data/test/test-schema-type.rb +208 -0
  73. data/test/test-schema-view.rb +90 -0
  74. data/test/test-schema.rb +886 -0
  75. data/test/test-snippet.rb +130 -0
  76. data/test/test-table-dumper.rb +353 -0
  77. data/test/test-table-offset-and-limit.rb +100 -0
  78. data/test/test-table-select-mecab.rb +80 -0
  79. data/test/test-table-select-normalize.rb +57 -0
  80. data/test/test-table-select-weight.rb +123 -0
  81. data/test/test-table-select.rb +191 -0
  82. data/test/test-table-traverse.rb +304 -0
  83. data/test/test-table.rb +711 -0
  84. data/test/test-type.rb +79 -0
  85. data/test/test-variable-size-column.rb +147 -0
  86. data/test/test-variable.rb +28 -0
  87. data/test/test-vector-column.rb +76 -0
  88. data/test/test-version.rb +61 -0
  89. data/test/test-view.rb +72 -0
  90. metadata +330 -202
@@ -30,10 +30,9 @@ VALUE rb_mGrnEncodingSupport;
30
30
  */
31
31
 
32
32
  /*
33
- * call-seq:
34
- * object.encoding -> エンコーディング
35
- *
36
33
  * オブジェクトのエンコーディングを返す。
34
+ * @overload encoding
35
+ * @return [Groonga::Encoding] オブジェクトのエンコーディング
37
36
  */
38
37
  static VALUE
39
38
  rb_grn_encoding_support_get_encoding (VALUE self)
@@ -183,13 +183,19 @@ rb_grn_encoding_to_ruby_encoding (grn_encoding encoding)
183
183
 
184
184
  return rb_encoding;
185
185
  }
186
+
187
+ VALUE
188
+ rb_grn_encoding_to_ruby_encoding_object (grn_encoding encoding)
189
+ {
190
+ rb_encoding *rb_encoding = rb_grn_encoding_to_ruby_encoding(encoding);
191
+ return rb_enc_from_encoding(rb_encoding);
192
+ }
186
193
  #endif
187
194
 
188
195
  /*
189
- * call-seq:
190
- * Groonga::Encoding.default -> エンコーディング
191
- *
192
196
  * デフォルトのエンコーディングを返す。
197
+ * @overload default
198
+ * @return [Groonga::Encoding] デフォルトのエンコーディング
193
199
  */
194
200
  static VALUE
195
201
  rb_grn_encoding_s_get_default (VALUE self)
@@ -198,11 +204,10 @@ rb_grn_encoding_s_get_default (VALUE self)
198
204
  }
199
205
 
200
206
  /*
201
- * call-seq:
202
- * Groonga::Encoding.default(encoding)
203
- *
204
- * デフォルトのエンコーディングを設定する。エンコーディング
205
- * の指定方法はGroonga::Encodingを参照。
207
+ * デフォルトのエンコーディングを設定する。
208
+ * @overload default=(encoding)
209
+ * @param [Groonga::Encoding] encoding 指定するエンコーディング。
210
+ * エンコーディングの指定方法はGroonga::Encodingを参照。
206
211
  */
207
212
  static VALUE
208
213
  rb_grn_encoding_s_set_default (VALUE self, VALUE rb_encoding)
@@ -605,7 +605,7 @@ rb_grn_init_exception (VALUE mGrn)
605
605
  * groongaレベルでは破棄されているが、Rubyレベルでは生き
606
606
  * ているオブジェクトにアクセスすると発生する。
607
607
  *
608
- * @deprecated since 1.2.3. Use Groonga::Closed instead.
608
+ * @deprecated Use {Closed} instead since 1.2.3.
609
609
  */
610
610
  rb_define_const(mGrn, "ObjectClosed", rb_eGrnClosed);
611
611
 
@@ -107,20 +107,17 @@ rb_grn_expression_initialize (int argc, VALUE *argv, VALUE self)
107
107
  }
108
108
 
109
109
  /*
110
- * call-seq:
111
- * expression.define_variable(options={}) -> Groonga::Variable
112
- *
113
110
  * _expression_ で使用可能な変数を作成する。
114
111
  *
115
- * _options_ に指定可能な値は以下の通り。
116
- * @param options [::Hash] The name and value
117
- * pairs. Omitted names are initialized as the default value.
118
- * @option options :name (false)
119
- *
120
- * 変数の名前。省略した場合は名前を付けない。
121
- * @option options :domain
112
+ * @overload define_variable(options={})
113
+ * @param [::Hash] options The name and value
114
+ * pairs. Omitted names are initialized as the default value.
115
+ * @option options :name (false)
116
+ * 変数の名前。省略した場合は名前を付けない。
117
+ * @option options :domain
118
+ * テーブルを指定すると、そのテーブル用のレコードとして初期化する。
119
+ * @return [Groonga::Variable]
122
120
  *
123
- * テーブルを指定すると、そのテーブル用のレコードとして初期化する。
124
121
  */
125
122
  static VALUE
126
123
  rb_grn_expression_define_variable (int argc, VALUE *argv, VALUE self)
@@ -160,12 +157,14 @@ rb_grn_expression_define_variable (int argc, VALUE *argv, VALUE self)
160
157
  }
161
158
 
162
159
  /*
163
- * call-seq:
164
- * expression.append_object(object,
165
- * operation=Groonga::Operator::PUSH,
166
- * n_arguments=1) -> self
167
- *
168
160
  * _object_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
161
+ *
162
+ * @overload append_object(object, operation=Groonga::Operator::PUSH, n_arguments=1)
163
+ * @param [Object] object 追加するオブジェクト
164
+ * @param [Groonga::Operator::XXX] operation 追加する _operation_
165
+ * @param [Integer] n_arguments _operation_ の取る引数
166
+ * @return [Self] self
167
+ *
169
168
  */
170
169
  static VALUE
171
170
  rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
@@ -196,12 +195,13 @@ rb_grn_expression_append_object (int argc, VALUE *argv, VALUE self)
196
195
  }
197
196
 
198
197
  /*
199
- * call-seq:
200
- * expression.append_constant(constant,
201
- * operation=Groonga::Operator::PUSH,
202
- * n_arguments=1) -> self
203
- *
204
198
  * _constant_ を追加し、 _n_arguments_ 個の引数を取る _operation_ を追加する。
199
+ *
200
+ * @overload append_constant(constant, operation=Groonga::Operator::PUSH, n_arguments=1)
201
+ * @param [Object] constant 追加する _constant_
202
+ * @param [Groonga::Operator::XXX] operation 追加する _operation_
203
+ * @param [Integer] n_arguments _operation_ の取る引数
204
+ * @return [Self] self
205
205
  */
206
206
  static VALUE
207
207
  rb_grn_expression_append_constant (int argc, VALUE *argv, VALUE self)
@@ -261,87 +261,71 @@ rb_grn_expression_append_operation (VALUE self, VALUE rb_operation,
261
261
  }
262
262
 
263
263
  /*
264
- * call-seq:
265
- * expression.parse(query, options={})
266
- *
267
264
  * 文字列 _query_ をパースする。
268
- *
269
- * _options_ に指定可能な値は以下の通り。
270
- * @param options [::Hash] The name and value
271
- * pairs. Omitted names are initialized as the default value.
272
- * @option options :default_column The default_column
273
- *
274
- * "column_name:hoge"ではなく"hoge"のようにcolumn_nameが指
275
- * 定されない条件の検索対象となるカラムを指定する。
276
- * @option options :default_operator (Groonga::Operator::AND)
277
- *
278
- * The default_operator
279
- * "+"や"OR"で繋がれず、ただ列挙された複数の条件があった時、
280
- * _expression_ 全体として各レコードをヒットとみなすかの論理
281
- * 条件を指定する。省略した場合はGroonga::Operator::AND。
282
- * [Groonga::Operator::OR]
283
- * レコードはいずれかの条件にマッチすればいい。
284
- * [Groonga::Operator::AND]
285
- * レコードは全ての条件にマッチしなければならない。
286
- * [Groonga::Operator::BUT]
287
- * 最初の条件にレコードはマッチし、残りの条件にレコードは
288
- * マッチしてはならない。
289
- * @option options :default_mode (Groonga::Operator::MATCH) The default_mode
290
- *
291
- * 検索時のモードを指定する。省略した場合は
292
- * Groonga::Operator::MATCH。(FIXME: モードによってどう
293
- * いう動作になるかを書く。)
294
- *
295
- * @option options :syntax (:query) The syntax
296
- *
297
- * _query_ の構文を指定する。指定可能な値は以下の通り。省略
298
- * した場合は +:query+ 。
299
- *
300
- * [+nil+]
301
- * +:query+と同様。
302
- * [+:query+]
303
- * 「文字列1 OR 文字列2」で「"文字列1"あるいは"文字列2"
304
- * にマッチという検索エンジンで利用できるような構文を使
305
- * う。
265
+ * @overload parse(query, options={})
266
+ * @param [String] query パースする文字列
267
+ * @param [::Hash] options The name and value
268
+ * pairs. Omitted names are initialized as the default value.
269
+ * @option options :default_column
270
+ * "column_name:hoge"ではなく"hoge"のようにcolumn_nameが指
271
+ * 定されない条件の検索対象となるカラムを指定する。
272
+ * @option options :default_operator (Groonga::Operator::AND)
273
+ * "+"や"OR"で繋がれず、ただ列挙された複数の条件があった時、
274
+ * _expression_ 全体として各レコードをヒットとみなすかの論理
275
+ * 条件を指定する。省略した場合はGroonga::Operator::AND。
276
+ *
277
+ * - Groonga::Operator::OR :=
278
+ * レコードはいずれかの条件にマッチすればいい。 =:
279
+ * - Groonga::Operator::AND :=
280
+ * レコードは全ての条件にマッチしなければならない。 =:
281
+ * - Groonga::Operator::BUT :=
282
+ * 最初の条件にレコードはマッチし、残りの条件にレコードは
283
+ * マッチしてはならない。 =:
284
+ *
285
+ * @option options :default_mode (Groonga::Operator::MATCH)
286
+ * 検索時のモードを指定する。省略した場合はGroonga::Operator::MATCH
287
+ * (FIXME: モードによってどういう動作になるかを書く。)
288
+ * @option options :syntax (:query)
289
+ * _query_ の構文を指定する。指定可能な値は以下の通り。省略
290
+ * した場合は +:query+ 。
291
+ *
292
+ * - +:query+ :=
293
+ * 「文字列1 OR 文字列2」で「"文字列1"あるいは"文字列2"
294
+ * にマッチという検索エンジンで利用できるような構文を使
295
+ * う。
296
+ * 参考: grn式のquery形式(link:text/expression_rdoc.html) =:
297
+ * - +nil+ :=
298
+ * +:query+と同様 =:
299
+ * - +:script+ :=
300
+ * 「[カラム名] == [値]」というようにECMAScript風の構文を使う。
301
+ * 参考: grn式のscript形式(link:text/expression_rdoc.html) =:
302
+ * @option options :allow_pragma
303
+ * _query_ の構文に query を用いているとき( +:syntax+
304
+ * オプション参照)、「*E-1」というようにクエリの先頭で
305
+ * pragmaを利用できるようにする。script構文を用いている
306
+ * ときはこのオプションを利用できない。
307
+ *
308
+ * デフォルトではプラグマを利用できる。
306
309
  *
307
310
  * 参考: grn式のquery形式(link:text/expression_rdoc.html)
308
- * [+:script+]
309
- * 「[カラム名] == [値]」というようにECMAScript風の構文
310
- * を使う。
311
+ * @option options :allow_column
312
+ * _query_ の構文にqueryを用いているとき( +:syntax+ オプショ
313
+ * ン参照)、「カラム名:値」というようにカラム名を指定した
314
+ * 条件式を利用できるようにする。script構文を用いていると
315
+ * きはこのオプションを利用できない。
311
316
  *
312
- * 参考: grn式のscript形式(link:text/expression_rdoc.html)
317
+ * デフォルトではカラム名を指定した条件式を利用できる。
313
318
  *
314
- * @option options :allow_pragma The allow_pragma
315
- * _query_ の構文に query を用いているとき( +:syntax+
316
- * オプション参照)、「*E-1」というようにクエリの先頭で
317
- * pragmaを利用できるようにする。script構文を用いている
318
- * ときはこのオプションを利用できない。
319
- *
320
- * デフォルトではプラグマを利用できる。
321
- *
322
- * 参考: grn式のquery形式(link:text/expression_rdoc.html)
323
- *
324
- * @option options :allow_column The allow_column
325
- *
326
- * _query_ の構文にqueryを用いているとき(+:syntax+オプショ
327
- * ン参照)、「カラム名:値」というようにカラム名を指定した
328
- * 条件式を利用できるようにする。script構文を用いていると
329
- * きはこのオプションを利用できない。
330
- *
331
- * デフォルトではカラム名を指定した条件式を利用できる。
332
- *
333
- * 参考: grn式のquery形式(link:text/expression_rdoc.html)
334
- *
335
- * @option options :allow_update The allow_update
336
- *
337
- * _query_の構文にscriptを用いているとき( +:syntax+ オプショ
338
- * ン参照)、「カラム名 = 値」というように更新操作を利用で
339
- * きるようにする。query構文を用いているときはこのオプショ
340
- * ンを利用できない。
319
+ * 参考: grn式のquery形式(link:text/expression_rdoc.html)
320
+ * @option options :allow_update
321
+ * _query_ の構文にscriptを用いているとき( +:syntax+ オプショ
322
+ * ン参照)、「カラム名 = 値」というように更新操作を利用で
323
+ * きるようにする。query構文を用いているときはこのオプショ
324
+ * ンを利用できない。
341
325
  *
342
- * デフォルトでは更新操作を利用できる。
326
+ * デフォルトでは更新操作を利用できる。
343
327
  *
344
- * 参考: grn式のscript形式(link:text/expression_rdoc.html)
328
+ * 参考: grn式のscript形式(link:text/expression_rdoc.html)
345
329
  */
346
330
  static VALUE
347
331
  rb_grn_expression_parse (int argc, VALUE *argv, VALUE self)
@@ -578,20 +562,17 @@ rb_grn_expression_inspect (VALUE self)
578
562
  }
579
563
 
580
564
  /*
581
- * call-seq:
582
- * expression.snippet(tags, options) -> Groonga::Snippet
583
- *
584
- * _expression_ からGroonga::Snippetを生成する。 _tags_ には
565
+ * _expression_ から {Groonga::Snippet} を生成する。 _tags_ には
585
566
  * キーワードの前後に挿入するタグの配列を以下のような形式で指定
586
567
  * する。
587
568
  *
588
569
  * <pre>
589
570
  * !!!ruby
590
- * [
591
- * ["キーワード前に挿入する文字列1", "キーワード後に挿入する文字列1"],
592
- * ["キーワード前に挿入する文字列2", "キーワード後に挿入する文字列2"],
593
- * # ...,
594
- * ]
571
+ * [
572
+ * ["キーワード前に挿入する文字列1", "キーワード後に挿入する文字列1"],
573
+ * ["キーワード前に挿入する文字列2", "キーワード後に挿入する文字列2"],
574
+ * # ...,
575
+ * ]
595
576
  * </pre>
596
577
  *
597
578
  * もし、1つのスニペットの中に _tags_ で指定したタグより多くの
@@ -600,37 +581,33 @@ rb_grn_expression_inspect (VALUE self)
600
581
  *
601
582
  * <pre>
602
583
  * !!!ruby
603
- * expression.parse("Ruby groonga 検索")
604
- * tags = [["<tag1>", "</tag1>"], ["<tag2>", "</tag2>"]]
605
- * snippet = expression.snippet(tags)
606
- * p snippet.execute("Rubyでgroonga使って全文検索、高速検索。")
607
- * # => ["<tag1>Ruby</tag1>で<tag2>groonga</tag2>"
608
- * # => "使って全文<tag1>検索</tag1>、高速<tag2>検索</tag2>。"]
584
+ * expression.parse("Ruby groonga 検索")
585
+ * tags = [["<tag1>", "</tag1>"], ["<tag2>", "</tag2>"]]
586
+ * snippet = expression.snippet(tags)
587
+ * p snippet.execute("Rubyでgroonga使って全文検索、高速検索。")
588
+ * # => ["<tag1>Ruby</tag1>で<tag2>groonga</tag2>"
589
+ * # => "使って全文<tag1>検索</tag1>、高速<tag2>検索</tag2>。"]
609
590
  * </pre>
610
591
  *
611
- * _options_ に指定可能な値は以下の通り。
612
- * @param options [::Hash] The name and value
613
- * pairs. Omitted names are initialized as the default value.
614
- * @option options :normalize (false) The normalize
615
- *
616
- * キーワード文字列・スニペット元の文字列を正規化するかど
617
- * うか。省略した場合は +false+ で正規化しない。
618
- *
619
- * @option options :skip_leading_spaces (false) The skip_leading_spaces
620
- *
621
- * 先頭の空白を無視するかどうか。省略した場合は +false+ で無
622
- * 視しない。
623
- *
624
- * @option options :width (100) The width
625
- *
626
- * スニペット文字列の長さ。省略した場合は100文字。
627
- * @option options :max_results (3) The max_results
628
- *
629
- * 生成するスニペットの最大数。省略した場合は3。
630
- * @option options :html_escape (false) The html_escape
631
- *
632
- * スニペット内の +<+, +>+, +&+, +"+ をHTMLエスケープするか
633
- * どうか。省略した場合は +false+ で、HTMLエスケープしない。
592
+ * @overload snippet(tags, options)
593
+ * @param tags [Array<string>] キーワードの前後に挿入するタグの配列
594
+ * (詳細は上記を参照)
595
+ * @param options [::Hash] The name and value
596
+ * pairs. Omitted names are initialized as the default value.
597
+ * @option options :normalize (false)
598
+ * キーワード文字列・スニペット元の文字列を正規化するかど
599
+ * うか。省略した場合は +false+ で正規化しない。
600
+ * @option options :skip_leading_spaces (false)
601
+ * 先頭の空白を無視するかどうか。省略した場合は +false+ で無
602
+ * 視しない。
603
+ * @option options :width (100)
604
+ * スニペット文字列の長さ。省略した場合は100文字。
605
+ * @option options :max_results (3)
606
+ * 生成するスニペットの最大数。省略した場合は3。
607
+ * @option options :html_escape (false)
608
+ * スニペット内の +<+, +>+, +&+, +"+ をHTMLエスケープするか
609
+ * どうか。省略した場合は +false+ で、HTMLエスケープしない。
610
+ * @return [Groonga::Snippet]
634
611
  */
635
612
  static VALUE
636
613
  rb_grn_expression_snippet (int argc, VALUE *argv, VALUE self)
@@ -56,10 +56,11 @@ rb_grn_fix_size_column_array_reference (VALUE self, VALUE rb_id)
56
56
  }
57
57
 
58
58
  /*
59
- * call-seq:
60
- * column[id] = value
61
- *
62
59
  * _column_ の _id_ に対応する値を設定する。
60
+ *
61
+ * @overload []=(id, value)
62
+ * @param [Integer] id 設定する値に対応する _column_ の _id_
63
+ * @param [Groonga::Object] value 設定する値
63
64
  */
64
65
  static VALUE
65
66
  rb_grn_fix_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value)
@@ -77,7 +78,7 @@ rb_grn_fix_size_column_array_set (VALUE self, VALUE rb_id, VALUE rb_value)
77
78
  &value, &range_id, &range);
78
79
 
79
80
  id = NUM2UINT(rb_id);
80
- RVAL2GRNBULK_WITH_TYPE(rb_value, context, value, range_id, range);
81
+ RVAL2GRNVALUE(rb_value, context, value, range_id, range);
81
82
 
82
83
  rc = grn_obj_set_value(context, column, id, value, GRN_OBJ_SET);
83
84
  rb_grn_context_check(context, self);
@@ -0,0 +1,55 @@
1
+ /* -*- coding: utf-8; c-file-style: "ruby" -*- */
2
+ /*
3
+ Copyright (C) 2012 Kouhei Sutou <kou@clear-code.com>
4
+
5
+ This library is free software; you can redistribute it and/or
6
+ modify it under the terms of the GNU Lesser General Public
7
+ License version 2.1 as published by the Free Software Foundation.
8
+
9
+ This library is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
+ Lesser General Public License for more details.
13
+
14
+ You should have received a copy of the GNU Lesser General Public
15
+ License along with this library; if not, write to the Free Software
16
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17
+ */
18
+
19
+ #include "rb-grn.h"
20
+
21
+ VALUE rb_cGrnTokyoGeoPoint;
22
+ VALUE rb_cGrnWGS84GeoPoint;
23
+
24
+ VALUE
25
+ rb_grn_tokyo_geo_point_new (int latitude, int longitude)
26
+ {
27
+ return rb_grn_tokyo_geo_point_new_raw(INT2NUM(latitude), INT2NUM(longitude));
28
+ }
29
+
30
+ VALUE
31
+ rb_grn_wgs84_geo_point_new (int latitude, int longitude)
32
+ {
33
+ return rb_grn_wgs84_geo_point_new_raw(INT2NUM(latitude), INT2NUM(longitude));
34
+ }
35
+
36
+ VALUE
37
+ rb_grn_tokyo_geo_point_new_raw (VALUE latitude, VALUE longitude)
38
+ {
39
+ return rb_funcall(rb_cGrnTokyoGeoPoint, rb_intern("new"), 2,
40
+ latitude, longitude);
41
+ }
42
+
43
+ VALUE
44
+ rb_grn_wgs84_geo_point_new_raw (VALUE latitude, VALUE longitude)
45
+ {
46
+ return rb_funcall(rb_cGrnWGS84GeoPoint, rb_intern("new"), 2,
47
+ latitude, longitude);
48
+ }
49
+
50
+ void
51
+ rb_grn_init_geo_point (VALUE mGrn)
52
+ {
53
+ rb_cGrnTokyoGeoPoint = rb_const_get(mGrn, rb_intern("TokyoGeoPoint"));
54
+ rb_cGrnWGS84GeoPoint = rb_const_get(mGrn, rb_intern("WGS84GeoPoint"));
55
+ }
@@ -30,81 +30,10 @@ VALUE rb_cGrnHash;
30
30
  */
31
31
 
32
32
  /*
33
- * call-seq:
34
- * Groonga::Hash.create(options={}) -> Groonga::Hash
35
- * Groonga::Hash.create(options={}) {|table| ... }
36
- *
37
33
  * 各レコードをキーで管理するテーブルを生成する。ブロックを指
38
34
  * 定すると、そのブロックに生成したテーブルが渡され、ブロック
39
35
  * を抜けると自動的にテーブルが破棄される。
40
36
  *
41
- * _options_ に指定可能な値は以下の通り。
42
- * @param [::Hash] options The name and value
43
- * pairs. Omitted names are initialized as the default value
44
- * @option options [Groonga::Context] :context (Groonga::Context.default) The context
45
- *
46
- * テーブルが利用するGroonga::Context。省略すると
47
- * Groonga::Context.defaultを用いる。
48
- * @option options [Groonga::Context#[]] :name The name
49
- *
50
- * テーブルの名前。名前をつけると、Groonga::Context#[]に名
51
- * 前を指定してテーブルを取得することができる。省略すると
52
- * 無名テーブルになり、テーブルIDでのみ取得できる。
53
- *
54
- * @option options [Groonga::Context#[]] :path The path
55
- *
56
- * テーブルを保存するパス。パスを指定すると永続テーブルとな
57
- * り、プロセス終了後もレコードは保持される。次回起動時に
58
- * Groonga::Context#[]で保存されたレコードを利用することが
59
- * できる。省略すると一時テーブルになり、プロセスが終了する
60
- * とレコードは破棄される。
61
- *
62
- * @option options :persistent The persistent
63
- * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
64
- * 場合は自動的にパスが付加される。 +:context+ で指定した
65
- * Groonga::Contextに結びついているデータベースが一時デー
66
- * タベースの場合は例外が発生する。
67
- *
68
- * @option options :key_normalize The normalize
69
- * +true+ を指定するとキーを正規化する。
70
- *
71
- * @option options :key_type The key_type
72
- * キーの種類を示すオブジェクトを指定する。キーの種類には型
73
- * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
74
- * テーブル(Groonga::Array、Groonga::Hash、
75
- * Groonga::PatriciaTrieのどれか)を指定する。
76
- *
77
- * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
78
- * として使用する。ただし、キーの最大サイズは4096バイトで
79
- * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
80
- * は使用できない。
81
- *
82
- * テーブルを指定した場合はレコードIDをキーとして使用する。
83
- * 指定したテーブルのGroonga::Recordをキーとして使用するこ
84
- * ともでき、その場合は自動的にGroonga::Recordからレコード
85
- * IDを取得する。
86
- *
87
- * 省略した場合はShortText型をキーとして使用する。この場合、
88
- * 4096バイトまで使用可能である。
89
- *
90
- * @option options :value_type The value_type
91
- *
92
- * 値の型を指定する。省略すると値のための領域を確保しない。
93
- * 値を保存したい場合は必ず指定すること。
94
- *
95
- * 参考: Groonga::Type.new
96
- *
97
- * @option options [Groonga::IndexColumn] :default_tokenizer The default_tokenizer
98
- * Groonga::IndexColumnで使用するトークナイザを指定する。
99
- * デフォルトでは何も設定されていないので、テーブルに
100
- * Groonga::IndexColumnを定義する場合は
101
- * <tt>"TokenBigram"</tt>などを指定する必要がある。
102
- *
103
- * @option options [Groonga::Record#n_sub_records] :sub_records The sub_records
104
- * +true+ を指定すると#groupでグループ化したときに、
105
- * Groonga::Record#n_sub_recordsでグループに含まれるレコー
106
- * ドの件数を取得できる。
107
- *
108
37
  * @example
109
38
  * #無名一時テーブルを生成する。
110
39
  * Groonga::Hash.create
@@ -144,6 +73,119 @@ VALUE rb_cGrnHash;
144
73
  * :default_tokenizer => "TokenBigram")
145
74
  * terms.define_index_column("content", bookmarks,
146
75
  * :source => "Bookmarks.comment")
76
+ *
77
+ * @overload create(options={})
78
+ * @return [Groonga::Hash]
79
+ * @param [::Hash] options The name and value
80
+ * pairs. Omitted names are initialized as the default value
81
+ * @option options [Groonga::Context] :context (Groonga::Context.default)
82
+ * テーブルが利用するGroonga::Context。省略すると
83
+ * Groonga::Context.defaultを用いる。
84
+ * @option options [Groonga::Context#[]] :name
85
+ * テーブルの名前。名前をつけると、Groonga::Context#[]に名
86
+ * 前を指定してテーブルを取得することができる。省略すると
87
+ * 無名テーブルになり、テーブルIDでのみ取得できる。
88
+ * @option options [Groonga::Context#[]] :path
89
+ * テーブルを保存するパス。パスを指定すると永続テーブルとな
90
+ * り、プロセス終了後もレコードは保持される。次回起動時に
91
+ * Groonga::Context#[]で保存されたレコードを利用することが
92
+ * できる。省略すると一時テーブルになり、プロセスが終了する
93
+ * とレコードは破棄される。
94
+ * @option options :persistent
95
+ * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
96
+ * 場合は自動的にパスが付加される。 +:context+ で指定した
97
+ * Groonga::Contextに結びついているデータベースが一時デー
98
+ * タベースの場合は例外が発生する。
99
+ * @option options :key_normalize
100
+ * +true+ を指定するとキーを正規化する。
101
+ * @option options :key_type
102
+ * キーの種類を示すオブジェクトを指定する。キーの種類には型
103
+ * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
104
+ * テーブル(Groonga::Array、Groonga::Hash、
105
+ * Groonga::PatriciaTrieのどれか)を指定する。
106
+ *
107
+ * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
108
+ * として使用する。ただし、キーの最大サイズは4096バイトで
109
+ * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
110
+ * は使用できない。
111
+ *
112
+ * テーブルを指定した場合はレコードIDをキーとして使用する。
113
+ * 指定したテーブルのGroonga::Recordをキーとして使用するこ
114
+ * ともでき、その場合は自動的にGroonga::Recordからレコード
115
+ * IDを取得する。
116
+ *
117
+ * 省略した場合はShortText型をキーとして使用する。この場合、
118
+ * 4096バイトまで使用可能である。
119
+ * @option options :value_type
120
+ * 値の型を指定する。省略すると値のための領域を確保しない。
121
+ * 値を保存したい場合は必ず指定すること。
122
+ *
123
+ * 参考: Groonga::Type.new
124
+ * @option options [Groonga::IndexColumn] :default_tokenizer
125
+ * Groonga::IndexColumnで使用するトークナイザを指定する。
126
+ * デフォルトでは何も設定されていないので、テーブルに
127
+ * Groonga::IndexColumnを定義する場合は
128
+ * <tt>"TokenBigram"</tt>などを指定する必要がある。
129
+ * @option options [Groonga::Record#n_sub_records] :sub_records
130
+ * +true+ を指定すると#groupでグループ化したときに、
131
+ * Groonga::Record#n_sub_recordsでグループに含まれるレコー
132
+ * ドの件数を取得できる。
133
+ * @overload create(options={})
134
+ * @yield [table]
135
+ * @param [::Hash] options The name and value
136
+ * pairs. Omitted names are initialized as the default value
137
+ * @option options [Groonga::Context] :context (Groonga::Context.default)
138
+ * テーブルが利用するGroonga::Context。省略すると
139
+ * Groonga::Context.defaultを用いる。
140
+ * @option options [Groonga::Context#[]] :name
141
+ * テーブルの名前。名前をつけると、Groonga::Context#[]に名
142
+ * 前を指定してテーブルを取得することができる。省略すると
143
+ * 無名テーブルになり、テーブルIDでのみ取得できる。
144
+ * @option options [Groonga::Context#[]] :path
145
+ * テーブルを保存するパス。パスを指定すると永続テーブルとな
146
+ * り、プロセス終了後もレコードは保持される。次回起動時に
147
+ * Groonga::Context#[]で保存されたレコードを利用することが
148
+ * できる。省略すると一時テーブルになり、プロセスが終了する
149
+ * とレコードは破棄される。
150
+ * @option options :persistent
151
+ * +true+ を指定すると永続テーブルとなる。 +path+ を省略した
152
+ * 場合は自動的にパスが付加される。 +:context+ で指定した
153
+ * Groonga::Contextに結びついているデータベースが一時デー
154
+ * タベースの場合は例外が発生する。
155
+ * @option options :key_normalize
156
+ * +true+ を指定するとキーを正規化する。
157
+ * @option options :key_type
158
+ * キーの種類を示すオブジェクトを指定する。キーの種類には型
159
+ * 名("Int32"や"ShortText"など)またはGroonga::Typeまたは
160
+ * テーブル(Groonga::Array、Groonga::Hash、
161
+ * Groonga::PatriciaTrieのどれか)を指定する。
162
+ *
163
+ * Groonga::Typeを指定した場合は、その型が示す範囲の値をキー
164
+ * として使用する。ただし、キーの最大サイズは4096バイトで
165
+ * あるため、Groonga::Type::TEXTやGroonga::Type::LONG_TEXT
166
+ * は使用できない。
167
+ *
168
+ * テーブルを指定した場合はレコードIDをキーとして使用する。
169
+ * 指定したテーブルのGroonga::Recordをキーとして使用するこ
170
+ * ともでき、その場合は自動的にGroonga::Recordからレコード
171
+ * IDを取得する。
172
+ *
173
+ * 省略した場合はShortText型をキーとして使用する。この場合、
174
+ * 4096バイトまで使用可能である。
175
+ * @option options :value_type
176
+ * 値の型を指定する。省略すると値のための領域を確保しない。
177
+ * 値を保存したい場合は必ず指定すること。
178
+ *
179
+ * 参考: Groonga::Type.new
180
+ * @option options [Groonga::IndexColumn] :default_tokenizer
181
+ * Groonga::IndexColumnで使用するトークナイザを指定する。
182
+ * デフォルトでは何も設定されていないので、テーブルに
183
+ * Groonga::IndexColumnを定義する場合は
184
+ * <tt>"TokenBigram"</tt>などを指定する必要がある。
185
+ * @option options [Groonga::Record#n_sub_records] :sub_records
186
+ * +true+ を指定すると#groupでグループ化したときに、
187
+ * Groonga::Record#n_sub_recordsでグループに含まれるレコー
188
+ * ドの件数を取得できる。
147
189
  */
148
190
  static VALUE
149
191
  rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
@@ -220,9 +262,6 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
220
262
  }
221
263
 
222
264
  /*
223
- * call-seq:
224
- * hash.search(key, options=nil) -> Groonga::Hash
225
- *
226
265
  * _key_ にマッチするレコードのIDがキーに入っている
227
266
  * Groonga::Hashを返す。マッチするレコードがない場合は空の
228
267
  * Groonga::Hashが返る。
@@ -231,14 +270,6 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
231
270
  * チしたレコードIDがキーのレコードを追加することができる。
232
271
  * +:result+ にテーブルを指定した場合は、そのテーブルが返る。
233
272
  *
234
- * _options_ に指定可能な値は以下の通り。
235
- * @param [::Hash] options The name and value
236
- * pairs. Omitted names are initialized as the default value
237
- *
238
- * @option options :result The result
239
- *
240
- * 結果を格納するテーブル。
241
- *
242
273
  * @example 複数のキーで検索し、結果を1つのテーブルに集める。
243
274
  * result = nil
244
275
  * keys = ["morita", "gunyara-kun", "yu"]
@@ -249,6 +280,13 @@ rb_grn_hash_s_create (int argc, VALUE *argv, VALUE klass)
249
280
  * user = record.key
250
281
  * p user.key # -> "morita"または"gunyara-kun"または"yu"
251
282
  * end
283
+ *
284
+ * @overload search(key, options=nil)
285
+ * @param [::Hash] options The name and value
286
+ * pairs. Omitted names are initialized as the default value
287
+ * @option options :result
288
+ * 結果を格納するテーブル。
289
+ * @return [Groonga::Hash]
252
290
  */
253
291
  static VALUE
254
292
  rb_grn_hash_search (int argc, VALUE *argv, VALUE self)