Class: Groonga::Schema

Inherits:
Object
  • Object
show all
Defined in:
lib/groonga/schema.rb

Overview

groongaのスキーマ(データ構造)を管理するクラス。

Schema を使うことにより簡単にテーブルやカラムを 追加・削除することができる。

!!

Examples:

上図のようなスキーマを定義する場合は以下のようになる。

Groonga::Schema.define do |schema|
  schema.create_table("Items") do |table|
    table.short_text("title")
  end

  schema.create_table("Users") do |table|
    table.short_text("name")
  end

  schema.create_table("comments") do |table|
    table.reference("item", "Items")
    table.reference("author", "Users")
    table.text("content")
    table.time("issued")
  end
end

Defined Under Namespace

Modules: Path Classes: ColumnCreationWithDifferentOptions, ColumnDefinition, ColumnNotExists, ColumnRemoveDefinition, ColumnRenameDefinition, Error, IndexColumnDefinition, TableCreationWithDifferentOptions, TableDefinition, TableNotExists, TableRemoveDefinition, TableRenameDefinition, UnguessableReferenceTable, UnknownIndexTarget, UnknownIndexTargetTable, UnknownOptions, UnknownTableType, ViewDefinition, ViewRemoveDefinition

Constant Summary collapse

NORMALIZE_TYPE_TABLE =
{
  "short_text" => "ShortText",
  "string" => "ShortText",
  "text" => "Text",
  "binary" => "LongText",
  "long_text" => "LongText",
  "int8" => "Int8",
  "integer8" => "Int8",
  "int16" => "Int16",
  "integer16" => "Int16",
  "int" => "Int32",
  "integer" => "Int32",
  "int32" => "Int32",
  "integer32" => "Int32",
  "decimal" => "Int64",
  "int64" => "Int64",
  "integer64" => "Int64",
  "uint8" => "UInt8",
  "unsigned_integer8" => "UInt8",
  "uint16" => "UInt16",
  "unsigned_integer16" => "UInt16",
  "uint" => "UInt32",
  "unsigned_integer" => "UInt32",
  "uint32" => "UInt32",
  "unsigned_integer32" => "UInt32",
  "uint64" => "UInt64",
  "unsigned_integer64" => "UInt64",
  "float" => "Float",
  "datetime" => "Time",
  "timestamp" => "Time",
  "time" => "Time",
  "date" => "Time",
  "boolean" => "Bool",
  "tokyo_geo_point" => "TokyoGeoPoint",
  "geo_point" => "WGS84GeoPoint",
  "wgs84_geo_point" => "WGS84GeoPoint",
  "delimit" => "TokenDelimit",
  "token_delimit" => "TokenDelimit",
  "unigram" => "TokenUnigram",
  "token_unigram" => "TokenUnigram",
  "bigram" => "TokenBigram",
  "token_bigram" => "TokenBigram",
  "bigram_split_symbol" => "TokenBigramSplitSymbol",
  "token_bigram_split_symbol" => "TokenBigramSplitSymbol",
  "bigram_split_symbol_alpha" => "TokenBigramSplitSymbolAlpha",
  "token_bigram_split_symbol_alpha" => "TokenBigramSplitSymbolAlpha",
  "bigram_split_symbol_alpha_digit" => "TokenBigramSplitSymbolAlphaDigit",
  "token_bigram_split_symbol_alpha_digit" =>
    "TokenBigramSplitSymbolAlphaDigit",
  "bigram_ignore_blank" => "TokenBigramIgnoreBlank",
  "token_bigram_ignore_blank" => "TokenBigramIgnoreBlank",
  "bigram_ignore_blank_split_symbol" =>
    "TokenBigramIgnoreBlankSplitSymbol",
  "token_bigram_ignore_blank_split_symbol" =>
    "TokenBigramIgnoreBlankSplitSymbol",
  "bigram_ignore_blank_split_symbol_alpha" =>
    "TokenBigramIgnoreBlankSplitSymbolAlpha",
  "token_bigram_ignore_blank_split_symbol_alpha" =>
    "TokenBigramIgnoreBlankSplitSymbolAlpha",
  "bigram_ignore_blank_split_symbol_alpha_digit" =>
    "TokenBigramIgnoreBlankSplitSymbolAlphaDigit",
  "token_bigram_ignore_blank_split_symbol_alpha_digit" =>
    "TokenBigramIgnoreBlankSplitSymbolAlphaDigit",
  "trigram" => "TokenTrigram",
  "token_trigram" => "TokenTrigram",
  "mecab" => "TokenMecab",
  "token_mecab"=> "TokenMecab",
}

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Schema

スキーマ定義を開始する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context スキーマ定義時に使用する Context を指定する。



729
730
731
732
733
# File 'lib/groonga/schema.rb', line 729

def initialize(options={})
  @options = (options || {}).dup
  @options[:context] ||= Groonga::Context.default
  @definitions = []
end

Class Method Details

.change_table(name, options = {}, &block) ⇒ Object

名前が name のテーブルを変更する。以下の省略形。

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.change_table(name, options) do |table|
  # ...
end

end </pre>

ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。



451
452
453
454
455
# File 'lib/groonga/schema.rb', line 451

def change_table(name, options={}, &block)
  define do |schema|
    schema.change_table(name, options, &block)
  end
end

.change_view(name, options = {}, &block) ⇒ Object

名前が name のビューを変更する。以下の省略形。

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.change_view(name, options) do |view|
  # ...
end

end </pre>

ブロックには ViewDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。



543
544
545
546
547
# File 'lib/groonga/schema.rb', line 543

def change_view(name, options={}, &block)
  define do |schema|
    schema.change_view(name, options, &block)
  end
end

.create_table(name, options = {:type => :array}, &block) ⇒ Object .create_table(name, options = {:type => :hash}, &block) ⇒ Object .create_table(name, options = {:type => :patricia_trie}, &block) ⇒ Object .create_table(name, options = {:type => :double_array_trie}) ⇒ Object

名前が name のテーブルを作成する。以下の省略形。

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.create_table(name, options) do |table|
  # ...
end

end </pre>

ブロックには TableDefinition オブジェ クトがわたるので、そのオブジェクトを利用してテーブル の詳細を定義する。

options に指定可能な値は以下の通り。

Overloads:

  • .create_table(name, options = {:type => :array}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :array})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

  • .create_table(name, options = {:type => :hash}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :hash})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_type (Object)

      The key_type

      キーの種類を示すオブジェクトを指定する。 キーの種類には型名(“Int32”や“ShortText”など)または Type またはテーブル( ArrayHashPatriciaTrieDoubleArrayTrie の どれか)を指定する。 Type を指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは4096バイトで あるため、 Type::TEXT や Type::LONG_TEXT は使用できない 。テーブルを指定した場合はレコードIDをキーとして使用する。 指定したテーブルの Record をキーとして使用することもでき、 その場合は自動的に Record からレコードIDを取得する。 省略した場合は文字列をキーとして使用する。 この場合、4096バイトまで使用可能である。

    • :default_tokenizer (Object)

      The default_tokenizer

      IndexColumn で 使用するトークナイザを指定する。デフォルトでは 何も設定されていないので、テーブルに IndexColumn を定義する場合は @“TokenBigram”@ などを指定する必要がある。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.

  • .create_table(name, options = {:type => :patricia_trie}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :patricia_trie})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.

    • :key_with_sis (Object)

      The key_with_sis

      true を指定するとキーの文字列の 全suffixが自動的に登録される。

  • .create_table(name, options = {:type => :double_array_trie}) ⇒ Object

    :typeに:double_array_trieを使用した場合

    Parameters:

    • options (::Hash) (defaults to: {:type => :double_array_trie})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :context (Groonga::Context)

      The context

      スキーマ定義時に使用する Context を指定する。 省略した場合は new で指定した Context を使用する。 new で指 定していない場合は Context.default を使用する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。パスを指定すると 永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path: を省略した場 合はパス名は自動的に作成される。デフォルトでは永続 テーブルとなる。

    • :value_type (Object)

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。 参考: Type.new

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group でグループ化 したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :key_type (Object)

      The key_type

      キーの種類を示すオブジェクトを指定する。 キーの種類には型名(“Int32”や“ShortText”など)または Type またはテーブル( ArrayHashPatriciaTrieDoubleArrayTrie のどれか)を指定する。

      Type を指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは 4096バイトであるため、 Type::TEXT や Type::LONG_TEXT は使用できない。

      テーブルを指定した場合はレコードIDをキーとして使用 する。指定したテーブルの Record をキーとし て使用することもでき、その場合は自動的に Record からレコードIDを取得する。

      省略した場合は文字列をキーとして使用する。この場合、 4096バイトまで使用可能である。

    • :default_tokenizer (Object)

      The default_tokenizer

      IndexColumn で使用するトークナイザを指定する。 デフォルトでは何も設定されていないので、テーブルに IndexColumn を定義する場合は @“TokenBigram”@ などを指定する必要がある。

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.



414
415
416
417
418
# File 'lib/groonga/schema.rb', line 414

def create_table(name, options={}, &block)
  define do |schema|
    schema.create_table(name, options, &block)
  end
end

.create_view(name, options = {}, &block) ⇒ Object

名前がnameのビューを作成する。以下の省略形。

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.create_view(name, options) do |view|
  # ...
end

end </pre> ブロックには ViewDefinition オブジェ クトがわたるので、そのオブジェクトを利用してビュー の詳細を定義する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :force (Object)

    The force

    true を指定すると既存の同名のビューが 存在していても、強制的にビューを作成する。

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。

  • :path (Object)

    The path

    ビューを保存するパスを指定する。 パスを指定すると永続ビューになる。

  • :persistent (Object) — default: true

    The persistent

    ビューを永続ビューとする。 :path: を省略した場 合はパス名は自動的に作成される。デフォルトでは永続 ビューとなる。



505
506
507
508
509
# File 'lib/groonga/schema.rb', line 505

def create_view(name, options={}, &block)
  define do |schema|
    schema.create_view(name, options, &block)
  end
end

.define(options = {}) {|schema| ... } ⇒ Object

スキーマを定義する。ブロックには Groonga::Schema オブ ジェクトがわたるので、そのオブジェクトを利用してスキー マを定義する。以下の省略形。

<pre> !!!ruby schema = Groonga::Scheme.new(options) # … schema.define </pre>

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :content (Groonga::Context) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。

Yields:

  • (schema)


167
168
169
170
171
# File 'lib/groonga/schema.rb', line 167

def define(options={})
  schema = new(options)
  yield(schema)
  schema.define
end

.dump(options = {}) ⇒ Object

スキーマの内容を文字列をRubyスクリプト形式またはgrn式 形式で返す。デフォルトはRubyスクリプト形式である。 Rubyスクリプト形式で返された値は restore することによりスキーマ内に組み 込むことができる。

dump.rb:

<pre> !!!ruby File.open(“/tmp/groonga-schema.rb”, “w”) do |schema|

dumped_text = Groonga::Schema.dump

end </pre>

restore.rb:

<pre> !!!ruby dumped_text = Groonga::Schema.dump Groonga::Database.create(:path => “/tmp/new-db.grn”) Groonga::Schema.restore(dumped_text) </pre>

grn式形式で返された値はgroongaコマンドで読み込むこと ができる。

dump.rb:

<pre> !!!ruby File.open(“/tmp/groonga-schema.grn”, “w”) do |schema|

dumped_text = Groonga::Schema.dump(:syntax => :command)

end </pre>

<pre> !!!text % groonga db/path < /tmp/groonga-schema.grn </pre>

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。

  • :syntax (Object)

    The syntax

    スキーマの文字列の形式を指定する。指定可能な値は以下の通り。 :ruby Rubyスクリプト形式。省略した場合、nil の場合も Rubyスクリプト形式になる。 :command groongaコマンド形式。groongaコマンドで読み込む ことができる。



631
632
633
634
635
# File 'lib/groonga/schema.rb', line 631

def dump(options={})
  schema = new(:context => options[:context],
               :syntax => options[:syntax])
  schema.dump
end

.normalize_type(type, options = {}) ⇒ Object



714
715
716
717
718
719
720
# File 'lib/groonga/schema.rb', line 714

def normalize_type(type, options={})
  return type if type.nil?
  return type if type.is_a?(Groonga::Object)
  type = type.to_s if type.is_a?(Symbol)
  return type if (options[:context] || Groonga::Context.default)[type]
  NORMALIZE_TYPE_TABLE[type] || type
end

.remove_column(table_name, column_name) ⇒ Object

以下と同様:

<pre> !!!ruby Groonga::Schema.change_table(table_name) do |table|

table.remove_column(column_name)

end </pre>



557
558
559
560
561
# File 'lib/groonga/schema.rb', line 557

def remove_column(table_name, column_name)
  change_table(table_name) do |table|
    table.remove_column(column_name)
  end
end

.remove_table(name, options = {}) ⇒ Object

名前が name のテーブルを削除する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    スキーマ定義時に使用する Context を指定する。



425
426
427
428
429
# File 'lib/groonga/schema.rb', line 425

def remove_table(name, options={})
  define do |schema|
    schema.remove_table(name, options)
  end
end

.remove_view(name, options = {}) ⇒ Object

名前が name のテーブルを削除する。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::context.default

    The context スキーマ定義時に使用する Context を指定する。



517
518
519
520
521
# File 'lib/groonga/schema.rb', line 517

def remove_view(name, options={})
  define do |schema|
    schema.remove_view(name, options)
  end
end

.rename_column(table_name, current_column_name, new_column_name) ⇒ Object

This is a syntax sugar of the following:

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.rename_column(table_name,
                     current_column_name, new_column_name)

end </pre>



572
573
574
575
576
# File 'lib/groonga/schema.rb', line 572

def rename_column(table_name, current_column_name, new_column_name)
  define do |schema|
    schema.rename_column(table_name, current_column_name, new_column_name)
  end
end

.rename_table(current_name, new_name, options = {}) ⇒ Object

(See Groonga::Schema#rename_table)

This is a syntax sugar of the following code:

<pre> !!!ruby Groonga::Schema.define do |schema|

schema.rename_table(current_name, new_name, options)

end </pre>



467
468
469
470
471
# File 'lib/groonga/schema.rb', line 467

def rename_table(current_name, new_name, options={})
  define do |schema|
    schema.rename_table(current_name, new_name, options)
  end
end

.restore(dumped_text, options = {}) ⇒ Object

dump で文字列化したスキーマを組み込む。



638
639
640
641
642
# File 'lib/groonga/schema.rb', line 638

def restore(dumped_text, options={})
  define(options) do |schema|
    schema.restore(dumped_text)
  end
end

Instance Method Details

#change_table(name, options = {}) {|definition| ... } ⇒ Object

名前が name のテーブルを変更する。

テーブルの変更は #define を呼び出すまでは実行されないこ とに注意すること。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。

Yields:

  • (definition)


806
807
808
809
810
811
# File 'lib/groonga/schema.rb', line 806

def change_table(name, options={})
  options = @options.merge(options || {}).merge(:change => true)
  definition = TableDefinition.new(name, options)
  yield(definition)
  @definitions << definition
end

#change_view(name, options = {}) {|definition| ... } ⇒ Object

名前が name のビューを変更する。

ビューの変更は #define を呼び出すまでは実行されないこ とに注意すること。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。

Yields:

  • (definition)


884
885
886
887
888
889
# File 'lib/groonga/schema.rb', line 884

def change_view(name, options={})
  options = @options.merge(options || {}).merge(:change => true)
  definition = ViewDefinition.new(name, options)
  yield(definition)
  @definitions << definition
end

#contextObject



920
921
922
# File 'lib/groonga/schema.rb', line 920

def context
  @options[:context] || Groonga::Context.default
end

#create_table(name, options = {:type => :array}, &block) ⇒ Object #create_table(name, options = {:type => :hash}, &block) ⇒ Object #create_table(name, options = {:type => :patricia_trie}, &block) ⇒ Object #create_table(name, options = {:type => :double_array_trie}) ⇒ Object

名前が name のテーブルを作成する。

テーブルの作成は #define を呼び出すまでは実行されないこ とに注意すること。

Overloads:

  • #create_table(name, options = {:type => :array}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :array})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

  • #create_table(name, options = {:type => :hash}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :hash})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_type (Object)

      The key_type

      キーの種類を示すオブジェクトを指定する。 キーの種類には型名(“Int32”や“ShortText”など)または Type またはテーブル( ArrayHashPatriciaTrieDoubleArrayTrie の どれか)を指定する。 Type を指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは4096バイトで あるため、 Type::TEXT や Type::LONG_TEXT は使用できない 。テーブルを指定した場合はレコードIDをキーとして使用する。 指定したテーブルの Record をキーとして使用することもでき、 その場合は自動的に Record からレコードIDを取得する。 省略した場合は文字列をキーとして使用する。 この場合、4096バイトまで使用可能である。

    • :default_tokenizer (Object)

      The default_tokenizer

      IndexColumn で 使用するトークナイザを指定する。デフォルトでは 何も設定されていないので、テーブルに IndexColumn を定義する場合は @“TokenBigram”@ などを指定する必要がある。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.

  • #create_table(name, options = {:type => :patricia_trie}, &block) ⇒ Object

    Parameters:

    • options (::Hash) (defaults to: {:type => :patricia_trie})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :type (Object) — default: :array

      The type

      テーブルの型を指定する。 :array , :hash , :patricia_trie , :double_array_trie のいずれかを指定する。 (:key_typeの項も参照)

    • :context (Groonga::Context) — default: Groonga::Context.default

      The context

      スキーマ定義時に使用する Context を指定する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。 パスを指定すると永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

    • :value_type (Object) — default: nil

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group で グループ化したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.

    • :key_with_sis (Object)

      The key_with_sis

      true を指定するとキーの文字列の 全suffixが自動的に登録される。

  • #create_table(name, options = {:type => :double_array_trie}) ⇒ Object

    :typeに:double_array_trieを使用した場合

    Parameters:

    • options (::Hash) (defaults to: {:type => :double_array_trie})

      The name and value pairs. Omitted names are initialized as the default value.

    Options Hash (options):

    • :force (Object)

      The force

      true を指定すると既存の同名のテーブルが 存在していても、強制的にテーブルを作成する。

    • :context (Groonga::Context)

      The context

      スキーマ定義時に使用する Context を指定する。 省略した場合は new で指定した Context を使用する。 new で指 定していない場合は Context.default を使用する。

    • :path (Object)

      The path

      テーブルを保存するパスを指定する。パスを指定すると 永続テーブルになる。

    • :persistent (Object) — default: true

      The persistent

      テーブルを永続テーブルとする。 :path: を省略した場 合はパス名は自動的に作成される。デフォルトでは永続 テーブルとなる。

    • :value_type (Object)

      The value_type

      値の型を指定する。省略すると値のための領域を確保しない。 値を保存したい場合は必ず指定すること。 参考: Type.new

    • :sub_records (Object)

      The sub_records

      true を指定すると Table#group でグループ化 したときに、 Record#n_sub_records でグループに 含まれるレコードの件数を取得できる。

    • :key_normalize (Object) — default: false

      Keys are normalized if this value is @true@.

      @deprecated Use @:normalizer => “NormalizerAuto”@ instead.

    • :key_type (Object)

      The key_type

      キーの種類を示すオブジェクトを指定する。 キーの種類には型名(“Int32”や“ShortText”など)または Type またはテーブル( ArrayHashPatriciaTrieDoubleArrayTrie のどれか)を指定する。

      Type を指定した場合は、その型が示す範囲の 値をキーとして使用する。ただし、キーの最大サイズは 4096バイトであるため、 Type::TEXT や Type::LONG_TEXT は使用できない。

      テーブルを指定した場合はレコードIDをキーとして使用 する。指定したテーブルの Record をキーとし て使用することもでき、その場合は自動的に Record からレコードIDを取得する。

      省略した場合は文字列をキーとして使用する。この場合、 4096バイトまで使用可能である。

    • :default_tokenizer (Object)

      The default_tokenizer

      IndexColumn で使用するトークナイザを指定する。 デフォルトでは何も設定されていないので、テーブルに IndexColumn を定義する場合は @“TokenBigram”@ などを指定する必要がある。

    • :normalizer (String, Groonga::Procedure, nil)

      The normalizer that is used by IndexColumn. You can specify this by normalizer name as String such as @“NormalizerAuto”@ or normalizer object.

Yields:

  • (definition)


775
776
777
778
779
# File 'lib/groonga/schema.rb', line 775

def create_table(name, options={})
  definition = TableDefinition.new(name, @options.merge(options || {}))
  yield(definition) if block_given?
  @definitions << definition
end

#create_view(name, options = {}) {|definition| ... } ⇒ Object

名前が name のビューを作成する。

ビューの作成は #define を呼び出すまでは実行されないこ とに注意すること。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :force (Object)

    The force

    true を指定すると既存の同名の ビューが存在していても、強制的にビューを作成する。

  • :context (Groonga::Context) — default: Groonga::Schema.new

    The context

    スキーマ定義時に使用する Context を指定する。 new で指定していない場合は Context.default を使用する。

  • :path (Object)

    The path

    テーブルを保存するパスを指定する。パスを指定すると 永続テーブルになる。

  • :persistent (Object) — default: true

    The persistent

    テーブルを永続テーブルとする。 :path: を省略した場合は パス名は自動的に作成される。デフォルトでは永続テーブルとなる。

Yields:

  • (definition)


852
853
854
855
856
# File 'lib/groonga/schema.rb', line 852

def create_view(name, options={})
  definition = ViewDefinition.new(name, @options.merge(options || {}))
  yield(definition)
  @definitions << definition
end

#defineObject

定義されたスキーマ定義を実際に実行する。



736
737
738
739
740
# File 'lib/groonga/schema.rb', line 736

def define
  @definitions.each do |definition|
    definition.define
  end
end

#dumpObject

スキーマの内容を文字列で返す。返された値は #restore することによりスキーマ内に組み込むことができる。



755
756
757
758
759
# File 'lib/groonga/schema.rb', line 755

def dump
  dumper = SchemaDumper.new(:context => @options[:context],
                            :syntax => @options[:syntax] || :ruby)
  dumper.dump
end

#remove_column(table_name, column_name) ⇒ Object

以下と同様:

<pre> !!!ruby schema.change_table(table_name) do |table|

table.remove_column(column_name)

end </pre>



899
900
901
902
903
# File 'lib/groonga/schema.rb', line 899

def remove_column(table_name, column_name)
  change_table(table_name) do |table|
    table.remove_column(column_name)
  end
end

#remove_table(name, options = {}) ⇒ Object

名前が name のテーブルを削除する。

テーブルの削除は# define を呼び出すまでは実行されないこ とに注意すること。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。



791
792
793
794
# File 'lib/groonga/schema.rb', line 791

def remove_table(name, options={})
  definition = TableRemoveDefinition.new(name, @options.merge(options || {}))
  @definitions << definition
end

#remove_view(name, options = {}) ⇒ Object

名前が name のビューを削除する。

ビューの削除は #define を呼び出すまでは実行されないことに 注意すること。

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Groonga::Context) — default: Groonga::Context.default

    The context

    スキーマ定義時に使用する Context を指定する。



869
870
871
872
# File 'lib/groonga/schema.rb', line 869

def remove_view(name, options={})
  definition = ViewRemoveDefinition.new(name, @options.merge(options || {}))
  @definitions << definition
end

#rename_column(table_name, current_column_name, new_column_name) ⇒ Object

It is a syntax sugar of the following:

<pre> !!!ruby schema.change_table(table_name) do |table|

table.rename_column(current_column_name, new_column_name)

end </pre>



913
914
915
916
917
# File 'lib/groonga/schema.rb', line 913

def rename_column(table_name, current_column_name, new_column_name)
  change_table(table_name) do |table|
    table.rename_column(current_column_name, new_column_name)
  end
end

#rename_table(current_name, new_name, options = {}) ⇒ Object

Renames current_name table to _new_name.

Note that table renaming will will not be performed until #define is called.

Parameters:

  • options (::Hash) (defaults to: {})

    The name and value pairs. Omitted names are initialized as the default value.

Options Hash (options):

  • :context (Object) — default: Groonga::Context.default

    The Context to be used in renaming.



822
823
824
825
826
# File 'lib/groonga/schema.rb', line 822

def rename_table(current_name, new_name, options={})
  options = @options.merge(options || {})
  definition = TableRenameDefinition.new(current_name, new_name, options)
  @definitions << definition
end

#restore(dumped_text) ⇒ Object Also known as: load

#dump で返されたスキーマの内容を読み込む。

読み込まれた内容は #define を呼び出すまでは実行されない ことに注意すること。



746
747
748
# File 'lib/groonga/schema.rb', line 746

def restore(dumped_text)
  instance_eval(dumped_text)
end