rroonga 4.0.5 → 4.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/benchmark/common.rb +4 -4
- data/benchmark/create-wikipedia-database.rb +5 -5
- data/benchmark/read-write-many-small-items.rb +8 -8
- data/benchmark/repeat-load.rb +4 -4
- data/benchmark/select.rb +9 -9
- data/benchmark/write-many-small-items.rb +8 -8
- data/doc/images/sample-schema.png +0 -0
- data/doc/text/install.textile +2 -2
- data/doc/text/news.textile +41 -0
- data/doc/text/tutorial.textile +4 -4
- data/example/bookmark.rb +6 -7
- data/example/index-html.rb +6 -6
- data/ext/groonga/extconf.rb +23 -1
- data/ext/groonga/rb-grn-column.c +3 -2
- data/ext/groonga/rb-grn-context.c +20 -3
- data/ext/groonga/rb-grn-double-array-trie.c +11 -2
- data/ext/groonga/rb-grn-exception.c +28 -10
- data/ext/groonga/rb-grn-expression.c +78 -0
- data/ext/groonga/rb-grn-hash.c +10 -0
- data/ext/groonga/rb-grn-logger.c +7 -3
- data/ext/groonga/rb-grn-object.c +3 -2
- data/ext/groonga/rb-grn-patricia-trie.c +23 -20
- data/ext/groonga/rb-grn-table-key-support.c +92 -1
- data/ext/groonga/rb-grn-table.c +60 -17
- data/ext/groonga/rb-grn-utils.c +51 -2
- data/ext/groonga/rb-grn-variable-size-column.c +11 -7
- data/ext/groonga/rb-grn.h +11 -1
- data/lib/groonga/dumper.rb +23 -1
- data/lib/groonga/patricia-trie.rb +1 -1
- data/lib/groonga/schema.rb +190 -205
- data/misc/grnop2ruby.rb +1 -1
- data/rroonga-build.rb +3 -3
- data/rroonga.gemspec +1 -0
- data/test/groonga-test-utils.rb +2 -2
- data/test/test-column.rb +19 -0
- data/test/test-context.rb +5 -1
- data/test/test-double-array-trie.rb +19 -0
- data/test/test-exception.rb +7 -2
- data/test/test-expression.rb +19 -0
- data/test/test-fix-size-column.rb +49 -36
- data/test/test-hash.rb +22 -0
- data/test/test-patricia-trie.rb +26 -7
- data/test/test-schema-dumper.rb +65 -1
- data/test/test-schema.rb +13 -2
- data/test/test-variable-size-column.rb +6 -5
- metadata +47 -46
@@ -33,7 +33,7 @@ module Groonga
|
|
33
33
|
# include ERB::Util
|
34
34
|
# Groonga::Context.default_options = {:encoding => "utf-8"}
|
35
35
|
# words = Groonga::PatriciaTrie.create(:key_type => "ShortText",
|
36
|
-
# :
|
36
|
+
# :normalizer => "NormalizerAuto")
|
37
37
|
# words.add('ガッ')
|
38
38
|
# words.add('MUTEKI')
|
39
39
|
#
|
data/lib/groonga/schema.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
#
|
3
3
|
# Copyright (C) 2009-2014 Kouhei Sutou <kou@clear-code.com>
|
4
|
+
# Copyright (C) 2014 Masafumi Yokoyama <myokoym@gmail.com>
|
4
5
|
#
|
5
6
|
# This library is free software; you can redistribute it and/or
|
6
7
|
# modify it under the terms of the GNU Lesser General Public
|
@@ -24,7 +25,7 @@ module Groonga
|
|
24
25
|
# {Groonga::Schema} を使うことにより簡単にテーブルやカラムを
|
25
26
|
# 追加・削除することができる。
|
26
27
|
#
|
27
|
-
# !
|
28
|
+
# ![Sample schema](https://raw.githubusercontent.com/ranguba/rroonga/master/doc/images/sample-schema.png)
|
28
29
|
#
|
29
30
|
# @example 上図のようなスキーマを定義する場合は以下のようになる。
|
30
31
|
# Groonga::Schema.define do |schema|
|
@@ -185,231 +186,195 @@ module Groonga
|
|
185
186
|
# クトがわたるので、そのオブジェクトを利用してテーブル
|
186
187
|
# の詳細を定義する。
|
187
188
|
#
|
189
|
+
# @!macro [new] schema.create_table.common.options
|
190
|
+
# @param [::Hash] options The name and value
|
191
|
+
# pairs. Omitted names are initialized as the default value.
|
192
|
+
#
|
193
|
+
# @option options [:array, :hash, :patricia_trie, :double_array_trie] :type The table type
|
194
|
+
#
|
195
|
+
# テーブルの型を指定する。
|
196
|
+
# `:array`, `:hash`, `:patricia_trie`,
|
197
|
+
# `:double_array_trie` のいずれかを指定する。
|
198
|
+
# (:key_typeの項も参照)
|
199
|
+
#
|
200
|
+
# @option options [Boolean] :force (false)
|
201
|
+
#
|
202
|
+
# `true`を指定すると既存の同名のテーブルが
|
203
|
+
# 存在していても、強制的にテーブルを作成する。
|
204
|
+
#
|
205
|
+
# @option options [Groonga::Context] :context (Groonga::Context.default) The context
|
206
|
+
#
|
207
|
+
# スキーマ定義時に使用する {Groonga::Context} を指定する。
|
208
|
+
#
|
209
|
+
# @option options :path The path
|
210
|
+
#
|
211
|
+
# テーブルを保存するパスを指定する。
|
212
|
+
# パスを指定すると永続テーブルになる。
|
213
|
+
#
|
214
|
+
# @option options :persistent (true) The persistent
|
215
|
+
#
|
216
|
+
# テーブルを永続テーブルとする。`:path`を省略した場合は
|
217
|
+
# パス名は自動的に作成される。デフォルトでは永続テーブルとなる。
|
218
|
+
#
|
219
|
+
# @option options :value_type (nil) The value_type
|
220
|
+
#
|
221
|
+
# 値の型を指定する。省略すると値のための領域を確保しない。
|
222
|
+
# 値を保存したい場合は必ず指定すること。
|
223
|
+
#
|
224
|
+
# @option options :sub_records The sub_records
|
225
|
+
#
|
226
|
+
# `true`を指定すると{Groonga::Table#group}で
|
227
|
+
# グループ化したときに、{Groonga::Record#n_sub_records}でグループに
|
228
|
+
# 含まれるレコードの件数を取得できる。
|
229
|
+
#
|
230
|
+
# @!macro [new] schema.create_table.key_support.options
|
231
|
+
# @option options :key_type The key_type
|
232
|
+
#
|
233
|
+
# キーの種類を示すオブジェクトを指定する。キーの種類には型名
|
234
|
+
# (`"Int32"`や`"ShortText"`など)または {Groonga::Type}また
|
235
|
+
# はテーブル( {Groonga::Array} 、 {Groonga::Hash} 、
|
236
|
+
# {Groonga::PatriciaTrie} 、 {Groonga::DoubleArrayTrie} のど
|
237
|
+
# れか)を指定する。 {Groonga::Type} を指定した場合は、その
|
238
|
+
# 型が示す範囲の値をキーとして使用する。ただし、キーの最大サ
|
239
|
+
# イズは4096バイトであるため、 {Groonga::Type::TEXT} や
|
240
|
+
# {Groonga::Type::LONG_TEXT} は使用できない。テーブルを指定
|
241
|
+
# した場合はレコードIDをキーとして使用する。指定したテーブル
|
242
|
+
# の {Groonga::Record} をキーとして使用することもでき、その
|
243
|
+
# 場合は自動的に {Groonga::Record} からレコードIDを取得する。
|
244
|
+
# 省略した場合は文字列をキーとして使用する。この場合、4096バ
|
245
|
+
# イトまで使用可能である。
|
246
|
+
#
|
247
|
+
# @option options :default_tokenizer The default_tokenizer
|
248
|
+
#
|
249
|
+
# {Groonga::IndexColumn} で
|
250
|
+
# 使用するトークナイザを指定する。デフォルトでは
|
251
|
+
# 何も設定されていないので、テーブルに
|
252
|
+
# {Groonga::IndexColumn} を定義する場合は `"TokenBigram"`
|
253
|
+
# などを指定する必要がある。
|
254
|
+
#
|
255
|
+
# @option options [::Array<String, Groonga::Procedure>, nil]
|
256
|
+
# :token_filters (nil) The token filters to be used
|
257
|
+
# in the table.
|
258
|
+
#
|
259
|
+
# Here is an example to set two token filters.
|
260
|
+
#
|
261
|
+
# ```ruby
|
262
|
+
# Groonga::Schema.define do |schema|
|
263
|
+
# schema.create_table("Terms",
|
264
|
+
# # ...
|
265
|
+
# :token_filters => [
|
266
|
+
# "TokenFilterStem",
|
267
|
+
# "TokenFilterStopWord",
|
268
|
+
# ]) do |table|
|
269
|
+
# # ...
|
270
|
+
# end
|
271
|
+
# end
|
272
|
+
# ```
|
273
|
+
#
|
274
|
+
# @option options :key_normalize (false) Keys are normalized
|
275
|
+
# if this value is `true`.
|
276
|
+
#
|
277
|
+
# @deprecated Use `:normalizer => "NormalizerAuto"` instead.
|
278
|
+
#
|
279
|
+
# @option options [String, Groonga::Procedure, nil] :normalizer
|
280
|
+
# The normalizer that is used by {Groonga::IndexColumn}. You
|
281
|
+
# can specify this by normalizer name as String such as
|
282
|
+
# `"NormalizerAuto"` or normalizer object.
|
283
|
+
#
|
188
284
|
# _options_ に指定可能な値は以下の通り。
|
285
|
+
#
|
189
286
|
# @overload create_table(name, options= {:type => :array}, &block)
|
287
|
+
#
|
288
|
+
# @!macro [new] schema.create_table.array.description
|
289
|
+
# Create a table that manages records by ID when you specify
|
290
|
+
# `:array` to `:type`.
|
291
|
+
#
|
292
|
+
# You can identify a record only by record ID. You can't use
|
293
|
+
# key because key doesn't exist in the table.
|
294
|
+
#
|
295
|
+
# See description of `TABLE_NO_KEY` at [Groonga documentation
|
296
|
+
# of tables](http://groonga.org/docs/reference/tables.html)
|
297
|
+
# for details.
|
298
|
+
#
|
190
299
|
# @!macro [new] schema.create_table.array.options
|
191
|
-
#
|
192
|
-
#
|
193
|
-
#
|
194
|
-
#
|
195
|
-
# +true+ を指定すると既存の同名のテーブルが
|
196
|
-
# 存在していても、強制的にテーブルを作成する。
|
197
|
-
# @option options :type (:array) The type
|
198
|
-
#
|
199
|
-
# テーブルの型を指定する。
|
200
|
-
# +:array+ , +:hash+ , +:patricia_trie+ ,
|
201
|
-
# +:double_array_trie+ のいずれかを指定する。
|
202
|
-
# (:key_typeの項も参照)
|
203
|
-
# @option options [Groonga::Context] :context (Groonga::Context.default) The context
|
204
|
-
#
|
205
|
-
# スキーマ定義時に使用する {Groonga::Context} を指定する。
|
206
|
-
# @option options :path The path
|
207
|
-
#
|
208
|
-
# テーブルを保存するパスを指定する。
|
209
|
-
# パスを指定すると永続テーブルになる。
|
210
|
-
# @option options :persistent (true) The persistent
|
211
|
-
#
|
212
|
-
# テーブルを永続テーブルとする。 +:path+ を省略した場合は
|
213
|
-
# パス名は自動的に作成される。デフォルトでは永続テーブルとなる。
|
214
|
-
# @option options :value_type (nil) The value_type
|
215
|
-
#
|
216
|
-
# 値の型を指定する。省略すると値のための領域を確保しない。
|
217
|
-
# 値を保存したい場合は必ず指定すること。
|
218
|
-
# @option options :sub_records The sub_records
|
219
|
-
#
|
220
|
-
# +true+ を指定すると {Groonga::Table#group} で
|
221
|
-
# グループ化したときに、 {Groonga::Record#n_sub_records} でグループに
|
222
|
-
# 含まれるレコードの件数を取得できる。
|
300
|
+
# @!macro schema.create_table.common.options
|
301
|
+
#
|
302
|
+
# @!macro schema.create_table.array.description
|
223
303
|
# @!macro schema.create_table.array.options
|
224
304
|
#
|
225
305
|
# @overload create_table(name, options= {:type => :hash}, &block)
|
226
|
-
# @!macro [new] schema.create_table.hash.options
|
227
|
-
# @param [::Hash] options The name and value
|
228
|
-
# pairs. Omitted names are initialized as the default value.
|
229
|
-
# @option options :force The force
|
230
|
-
#
|
231
|
-
# +true+ を指定すると既存の同名のテーブルが
|
232
|
-
# 存在していても、強制的にテーブルを作成する。
|
233
|
-
# @option options :type (:array) The type
|
234
|
-
#
|
235
|
-
# テーブルの型を指定する。
|
236
|
-
# +:array+ , +:hash+ , +:patricia_trie+ ,
|
237
|
-
# +:double_array_trie+ のいずれかを指定する。
|
238
|
-
# (:key_typeの項も参照)
|
239
|
-
# @option options [Groonga::Context] :context (Groonga::Context.default) The context
|
240
|
-
#
|
241
|
-
# スキーマ定義時に使用する {Groonga::Context} を指定する。
|
242
|
-
# @option options :path The path
|
243
|
-
#
|
244
|
-
# テーブルを保存するパスを指定する。
|
245
|
-
# パスを指定すると永続テーブルになる。
|
246
|
-
# @option options :persistent (true) The persistent
|
247
|
-
#
|
248
|
-
# テーブルを永続テーブルとする。 +:path+ を省略した場合は
|
249
|
-
# パス名は自動的に作成される。デフォルトでは永続テーブルとなる。
|
250
|
-
# @option options :value_type (nil) The value_type
|
251
|
-
#
|
252
|
-
# 値の型を指定する。省略すると値のための領域を確保しない。
|
253
|
-
# 値を保存したい場合は必ず指定すること。
|
254
|
-
# @option options :sub_records The sub_records
|
255
|
-
#
|
256
|
-
# +true+ を指定すると {Groonga::Table#group} で
|
257
|
-
# グループ化したときに、 {Groonga::Record#n_sub_records} でグループに
|
258
|
-
# 含まれるレコードの件数を取得できる。
|
259
|
-
# @option options :key_type The key_type
|
260
|
-
#
|
261
|
-
# キーの種類を示すオブジェクトを指定する。
|
262
|
-
# キーの種類には型名("Int32"や"ShortText"など)または {Groonga::Type}
|
263
|
-
# またはテーブル( {Groonga::Array} 、 {Groonga::Hash} 、
|
264
|
-
# {Groonga::PatriciaTrie} 、 {Groonga::DoubleArrayTrie} の
|
265
|
-
# どれか)を指定する。 {Groonga::Type} を指定した場合は、その型が示す範囲の
|
266
|
-
# 値をキーとして使用する。ただし、キーの最大サイズは4096バイトで
|
267
|
-
# あるため、 {Groonga::Type::TEXT} や {Groonga::Type::LONG_TEXT} は使用できない
|
268
|
-
# 。テーブルを指定した場合はレコードIDをキーとして使用する。
|
269
|
-
# 指定したテーブルの {Groonga::Record} をキーとして使用することもでき、
|
270
|
-
# その場合は自動的に {Groonga::Record} からレコードIDを取得する。
|
271
|
-
# 省略した場合は文字列をキーとして使用する。
|
272
|
-
# この場合、4096バイトまで使用可能である。
|
273
|
-
# @option options :default_tokenizer The default_tokenizer
|
274
|
-
#
|
275
|
-
# {Groonga::IndexColumn} で
|
276
|
-
# 使用するトークナイザを指定する。デフォルトでは
|
277
|
-
# 何も設定されていないので、テーブルに
|
278
|
-
# {Groonga::IndexColumn} を定義する場合は @"TokenBigram"@
|
279
|
-
# などを指定する必要がある。
|
280
|
-
#
|
281
|
-
# @option options :key_normalize (false) Keys are normalized
|
282
|
-
# if this value is @true@.
|
283
|
-
#
|
284
|
-
# @deprecated Use @:normalizer => "NormalizerAuto"@ instead.
|
285
|
-
#
|
286
|
-
# @option options [String, Groonga::Procedure, nil] :normalizer
|
287
|
-
# The normalizer that is used by {Groonga::IndexColumn}. You
|
288
|
-
# can specify this by normalizer name as String such as
|
289
|
-
# @"NormalizerAuto"@ or normalizer object.
|
290
|
-
# @!macro schema.create_table.hash.options
|
291
|
-
#
|
292
|
-
# @overload create_table(name, options= {:type => :patricia_trie}, &block)
|
293
|
-
# @!macro [new] schema.create_table.patricia_trie.options
|
294
|
-
# @param [::Hash] options The name and value
|
295
|
-
# pairs. Omitted names are initialized as the default value.
|
296
|
-
# @option options :force The force
|
297
306
|
#
|
298
|
-
#
|
299
|
-
#
|
300
|
-
#
|
307
|
+
# @!macro [new] schema.create_table.hash.description
|
308
|
+
# Create a table that manages record keys by hash table when
|
309
|
+
# you specify `:hash` to `:type`.
|
301
310
|
#
|
302
|
-
#
|
303
|
-
#
|
304
|
-
#
|
305
|
-
#
|
306
|
-
# @option options [Groonga::Context] :context (Groonga::Context.default) The context
|
311
|
+
# You can identify a record by key. The table is most fast
|
312
|
+
# table for finding a record by key. But the table doesn't
|
313
|
+
# support advanced key search features such as common prefix
|
314
|
+
# search and range search.
|
307
315
|
#
|
308
|
-
#
|
309
|
-
#
|
316
|
+
# See description of `TABLE_HASH_KEY` at [Groonga documentation
|
317
|
+
# of tables](http://groonga.org/docs/reference/tables.html)
|
318
|
+
# for details.
|
310
319
|
#
|
311
|
-
#
|
312
|
-
#
|
313
|
-
#
|
320
|
+
# @!macro [new] schema.create_table.hash.options
|
321
|
+
# @!macro schema.create_table.common.options
|
322
|
+
# @!macro schema.create_table.key_support.options
|
314
323
|
#
|
315
|
-
#
|
316
|
-
#
|
317
|
-
# @option options :value_type (nil) The value_type
|
324
|
+
# @!macro schema.create_table.hash.description
|
325
|
+
# @!macro schema.create_table.hash.options
|
318
326
|
#
|
319
|
-
#
|
320
|
-
# 値を保存したい場合は必ず指定すること。
|
321
|
-
# @option options :sub_records The sub_records
|
327
|
+
# @overload create_table(name, options= {:type => :patricia_trie}, &block)
|
322
328
|
#
|
323
|
-
#
|
324
|
-
#
|
325
|
-
#
|
329
|
+
# @!macro [new] schema.create_table.patricia_trie.description
|
330
|
+
# Create a table that manages record keys by patricia trie
|
331
|
+
# when you specify `:patricia_trie` to `:type`.
|
326
332
|
#
|
327
|
-
#
|
328
|
-
#
|
333
|
+
# You can identify a record by key. The table is most small
|
334
|
+
# table. The table supports advanced key search features such
|
335
|
+
# as prefix search and range search. The table is suitable for
|
336
|
+
# lexicon of full-text search and index of range search.
|
329
337
|
#
|
330
|
-
#
|
338
|
+
# See description of `TABLE_PAT_KEY` at [Groonga documentation
|
339
|
+
# of tables](http://groonga.org/docs/reference/tables.html)
|
340
|
+
# for details.
|
331
341
|
#
|
332
|
-
#
|
333
|
-
#
|
334
|
-
#
|
335
|
-
# @"NormalizerAuto"@ or normalizer object.
|
342
|
+
# @!macro [new] schema.create_table.patricia_trie.options
|
343
|
+
# @!macro schema.create_table.common.options
|
344
|
+
# @!macro schema.create_table.key_support.options
|
336
345
|
#
|
337
|
-
# @option options :key_with_sis
|
346
|
+
# @option options [Boolean] :key_with_sis (false)
|
338
347
|
#
|
339
348
|
# +true+ を指定するとキーの文字列の
|
340
349
|
# 全suffixが自動的に登録される。
|
350
|
+
#
|
351
|
+
# @!macro schema.create_table.patricia_trie.description
|
341
352
|
# @!macro schema.create_table.patricia_trie.options
|
353
|
+
#
|
342
354
|
# @overload create_table(name, options= {:type => :double_array_trie})
|
343
|
-
#
|
355
|
+
#
|
356
|
+
# @!macro [new] schema.create_table.double_array_trie.description
|
357
|
+
# Create a table that manages record keys by double array trie
|
358
|
+
# when you specify `:double_array_trie` to `:type`.
|
359
|
+
#
|
360
|
+
# You can identify a record by key. The table is fast table
|
361
|
+
# for finding a record by key. But the table is large. The
|
362
|
+
# table supports advanced key search features such as prefix
|
363
|
+
# search and range search.
|
364
|
+
#
|
365
|
+
# The table is the only table that supports renaming key. The
|
366
|
+
# table is used in Groonga database to manage object names
|
367
|
+
# such as `ShortText` and `TokenBigram`.
|
368
|
+
#
|
369
|
+
# See description of `TABLE_DAT_KEY` at [Groonga documentation
|
370
|
+
# of tables](http://groonga.org/docs/reference/tables.html)
|
371
|
+
# for details.
|
372
|
+
#
|
344
373
|
# @!macro [new] schema.create_table.double_array_trie.options
|
345
|
-
#
|
346
|
-
#
|
347
|
-
#
|
348
|
-
#
|
349
|
-
# +true+ を指定すると既存の同名のテーブルが
|
350
|
-
# 存在していても、強制的にテーブルを作成する。
|
351
|
-
# @option options [Groonga::Context] :context The context
|
352
|
-
#
|
353
|
-
# スキーマ定義時に使用する {Groonga::Context} を指定する。
|
354
|
-
# 省略した場合は {Groonga::Schema.new} で指定した
|
355
|
-
# {Groonga::Context} を使用する。 {Groonga::Schema.new} で指
|
356
|
-
# 定していない場合は {Groonga::Context.default} を使用する。
|
357
|
-
# @option options :path The path
|
358
|
-
#
|
359
|
-
# テーブルを保存するパスを指定する。パスを指定すると
|
360
|
-
# 永続テーブルになる。
|
361
|
-
# @option options :persistent (true) The persistent
|
362
|
-
#
|
363
|
-
# テーブルを永続テーブルとする。 +:path:+ を省略した場
|
364
|
-
# 合はパス名は自動的に作成される。デフォルトでは永続
|
365
|
-
# テーブルとなる。
|
366
|
-
# @option options :value_type The value_type
|
367
|
-
#
|
368
|
-
# 値の型を指定する。省略すると値のための領域を確保しない。
|
369
|
-
# 値を保存したい場合は必ず指定すること。
|
370
|
-
# 参考: {Groonga::Type.new}
|
371
|
-
# @option options :sub_records The sub_records
|
372
|
-
#
|
373
|
-
# +true+ を指定すると {Groonga::Table#group} でグループ化
|
374
|
-
# したときに、 {Groonga::Record#n_sub_records} でグループに
|
375
|
-
# 含まれるレコードの件数を取得できる。
|
376
|
-
#
|
377
|
-
# @option options :key_normalize (false) Keys are normalized
|
378
|
-
# if this value is @true@.
|
379
|
-
#
|
380
|
-
# @deprecated Use @:normalizer => "NormalizerAuto"@ instead.
|
381
|
-
#
|
382
|
-
# @option options :key_type The key_type
|
383
|
-
#
|
384
|
-
# キーの種類を示すオブジェクトを指定する。
|
385
|
-
# キーの種類には型名("Int32"や"ShortText"など)または
|
386
|
-
# {Groonga::Type} またはテーブル( {Groonga::Array} 、
|
387
|
-
# {Groonga::Hash} 、 {Groonga::PatriciaTrie} 、
|
388
|
-
# {Groonga::DoubleArrayTrie} のどれか)を指定する。
|
389
|
-
#
|
390
|
-
# {Groonga::Type} を指定した場合は、その型が示す範囲の
|
391
|
-
# 値をキーとして使用する。ただし、キーの最大サイズは
|
392
|
-
# 4096バイトであるため、 {Groonga::Type::TEXT} や
|
393
|
-
# {Groonga::Type::LONG_TEXT} は使用できない。
|
394
|
-
#
|
395
|
-
# テーブルを指定した場合はレコードIDをキーとして使用
|
396
|
-
# する。指定したテーブルの {Groonga::Record} をキーとし
|
397
|
-
# て使用することもでき、その場合は自動的に
|
398
|
-
# {Groonga::Record} からレコードIDを取得する。
|
399
|
-
#
|
400
|
-
# 省略した場合は文字列をキーとして使用する。この場合、
|
401
|
-
# 4096バイトまで使用可能である。
|
402
|
-
# @option options :default_tokenizer The default_tokenizer
|
403
|
-
#
|
404
|
-
# {Groonga::IndexColumn} で使用するトークナイザを指定する。
|
405
|
-
# デフォルトでは何も設定されていないので、テーブルに
|
406
|
-
# {Groonga::IndexColumn} を定義する場合は
|
407
|
-
# @"TokenBigram"@ などを指定する必要がある。
|
408
|
-
#
|
409
|
-
# @option options [String, Groonga::Procedure, nil] :normalizer
|
410
|
-
# The normalizer that is used by {Groonga::IndexColumn}. You
|
411
|
-
# can specify this by normalizer name as String such as
|
412
|
-
# @"NormalizerAuto"@ or normalizer object.
|
374
|
+
# @!macro schema.create_table.common.options
|
375
|
+
# @!macro schema.create_table.key_support.options
|
376
|
+
#
|
377
|
+
# @!macro schema.create_table.double_array_trie.description
|
413
378
|
# @!macro schema.create_table.double_array_trie.options
|
414
379
|
def create_table(name, options={}, &block)
|
415
380
|
define do |schema|
|
@@ -688,13 +653,16 @@ module Groonga
|
|
688
653
|
# とに注意すること。
|
689
654
|
#
|
690
655
|
# @overload create_table(name, options= {:type => :array}, &block)
|
656
|
+
# @!macro schema.create_table.array.description
|
691
657
|
# @!macro schema.create_table.array.options
|
692
658
|
# @overload create_table(name, options= {:type => :hash}, &block)
|
659
|
+
# @!macro schema.create_table.hash.description
|
693
660
|
# @!macro schema.create_table.hash.options
|
694
661
|
# @overload create_table(name, options= {:type => :patricia_trie}, &block)
|
662
|
+
# @!macro schema.create_table.patricia_trie.description
|
695
663
|
# @!macro schema.create_table.patricia_trie.options
|
696
664
|
# @overload create_table(name, options= {:type => :double_array_trie})
|
697
|
-
#
|
665
|
+
# @!macro schema.create_table.double_array_trie.description
|
698
666
|
# @!macro schema.create_table.double_array_trie.options
|
699
667
|
def create_table(name, options={})
|
700
668
|
definition = TableDefinition.new(name, @options.merge(options || {}))
|
@@ -881,7 +849,7 @@ module Groonga
|
|
881
849
|
# 値の圧縮方法を指定する。省略した場合は、圧縮しない。
|
882
850
|
#
|
883
851
|
# - :zlib := 値をzlib圧縮して格納する。
|
884
|
-
# - :
|
852
|
+
# - :lz4 := 値をLZ4圧縮して格納する。
|
885
853
|
def column(name, type, options={})
|
886
854
|
definition = self[name, ColumnDefinition]
|
887
855
|
if definition.nil?
|
@@ -1223,6 +1191,7 @@ module Groonga
|
|
1223
1191
|
:type, :path, :persistent,
|
1224
1192
|
:key_type, :value_type, :sub_records,
|
1225
1193
|
:default_tokenizer,
|
1194
|
+
:token_filters,
|
1226
1195
|
:key_normalize, :key_with_sis,
|
1227
1196
|
:named_path,
|
1228
1197
|
:normalizer]
|
@@ -1264,10 +1233,17 @@ module Groonga
|
|
1264
1233
|
:context => context,
|
1265
1234
|
:sub_records => @options[:sub_records],
|
1266
1235
|
}
|
1236
|
+
token_filters = @options[:token_filters]
|
1237
|
+
if token_filters
|
1238
|
+
token_filters = token_filters.collect do |token_filter|
|
1239
|
+
normalize_type(token_filter)
|
1240
|
+
end
|
1241
|
+
end
|
1267
1242
|
key_support_table_common = {
|
1268
1243
|
:key_type => normalize_key_type(@options[:key_type] || "ShortText"),
|
1269
1244
|
:key_normalize => @options[:key_normalize],
|
1270
1245
|
:default_tokenizer => normalize_type(@options[:default_tokenizer]),
|
1246
|
+
:token_filters => token_filters,
|
1271
1247
|
:normalizer => normalize_type(@options[:normalizer]),
|
1272
1248
|
}
|
1273
1249
|
|
@@ -1343,13 +1319,22 @@ module Groonga
|
|
1343
1319
|
when Groonga::Hash, Groonga::PatriciaTrie, Groonga::DoubleArrayTrie
|
1344
1320
|
key_type = normalize_key_type(options[:key_type])
|
1345
1321
|
return false unless table.domain == resolve_name(key_type)
|
1322
|
+
|
1346
1323
|
default_tokenizer = normalize_type(options[:default_tokenizer])
|
1347
1324
|
default_tokenizer = resolve_name(default_tokenizer)
|
1348
1325
|
return false unless table.default_tokenizer == default_tokenizer
|
1326
|
+
|
1327
|
+
token_filters = options[:token_filters] || []
|
1328
|
+
token_filters = token_filters.collect do |token_filter|
|
1329
|
+
resolve_name(normalize_type(token_filter))
|
1330
|
+
end
|
1331
|
+
return false unless table.token_filters == token_filters
|
1332
|
+
|
1349
1333
|
normalizer = normalize_type(options[:normalizer])
|
1350
1334
|
normalizer ||= default_normalizer_name if options[:key_normalize]
|
1351
1335
|
normalizer = resolve_name(normalizer)
|
1352
1336
|
return false unless table.normalizer == normalizer
|
1337
|
+
|
1353
1338
|
if table.is_a?(Groonga::PatriciaTrie)
|
1354
1339
|
key_with_sis = options[:key_with_sis]
|
1355
1340
|
key_with_sis = false if key_with_sis.nil?
|