Kouhei Sutou
null+****@clear*****
Fri Mar 3 09:28:09 JST 2017
Kouhei Sutou 2017-03-03 09:28:09 +0900 (Fri, 03 Mar 2017) New Revision: 0b9648bd1e23a40ccc91d88d20669a81b1b32e79 https://github.com/ranguba/groonga-client-model/commit/0b9648bd1e23a40ccc91d88d20669a81b1b32e79 Message: Support tokenizer Modified files: lib/groonga_client_model/migration.rb test/unit/test_migration.rb Modified: lib/groonga_client_model/migration.rb (+24 -1) =================================================================== --- lib/groonga_client_model/migration.rb 2017-03-03 09:22:38 +0900 (8d9355c) +++ lib/groonga_client_model/migration.rb 2017-03-03 09:28:09 +0900 (602ef50) @@ -51,7 +51,11 @@ module GroongaClientModel end end - def create_table(name, type: nil, key_type: nil) + def create_table(name, + type: nil, + key_type: nil, + tokenizer: nil, + default_tokenizer: nil) return remove_table_raw(name) if @reverting type = normalize_table_type(type || :array) @@ -59,13 +63,19 @@ module GroongaClientModel key_type ||= "ShortText" end key_type = normalize_type(key_type) + if type != "TABLE_NO_KEY" and key_type == "ShortText" + tokenizer ||= default_tokenizer + tokenizer = normalize_tokenizer(tokenizer) + end options = {type: type} options[:key_type] = key_type if key_type + options[:tokenizer] = tokenizer if tokenizer report(__method__, [name, options]) do @client.request(:table_create). parameter(:name, name). flags_parameter(:flags, [type]). parameter(:key_type, key_type). + parameter(:default_tokenizer, tokenizer). response end @@ -191,6 +201,19 @@ module GroongaClientModel end end + def normalize_tokenizer(tokenizer) + case tokenizer.to_s + when /\A(?:token_?)?bigram\z/i + "TokenBigram" + when /\A(?:token_?)?delimit\z/i + "TokenDelimit" + when /\A(?:token_?)?mecab\z/i + "TokenMecab" + else + tokenizer + end + end + def remove_table_raw(name) report(:remove_table, [name]) do @client.request(:table_remove). Modified: test/unit/test_migration.rb (+23 -0) =================================================================== --- test/unit/test_migration.rb 2017-03-03 09:22:38 +0900 (b0df361) +++ test/unit/test_migration.rb 2017-03-03 09:28:09 +0900 (e67b25f) @@ -108,6 +108,29 @@ table_create terms TABLE_PAT_KEY ShortText end end end + + test("tokenizer") do + expected_up_report = <<-REPORT +-- create_table(:terms, {:type=>"TABLE_PAT_KEY", :key_type=>"ShortText", :tokenizer=>"TokenBigram"}) + -> 0.0s + REPORT + expected_down_report = <<-REPORT +-- remove_table(:terms) + -> 0.0s + REPORT + expected_dump = <<-DUMP.chomp +table_create terms TABLE_PAT_KEY ShortText --default_tokenizer TokenBigram + DUMP + assert_migrate(expected_up_report, + expected_down_report, + expected_dump) do |migration| + migration.instance_eval do + create_table(:terms, + :type => :patricia_trie, + :tokenizer => :bigram) + end + end + end end sub_test_case("columns") do -------------- next part -------------- HTML����������������������������...Download