hirano_verf****@mail*****
hirano_verf****@mail*****
2012年 11月 22日 (木) 16:09:00 JST
お世話になっております。平野と申します。 Time型のカラムに対してrroongaから日付範囲指定で検索を行っています。 より高速に検索するためにインデックスを作成したいと思っているのですが、作成することは可能でしょうか。 また、可能であれば方法を教えていただけないでしょうか。 よろしくお願いいたします。 下記が検証に使用しているソースとなります。 [環境] CentOS 5.5(x86_64) ruby 1.8.7(patchlevel 330) groonga 1.2.8 rroonga 1.3.0 ==================================== require "rubygems" require "groonga" db_path = '/tmp/test.db' table_name = 'shop_list' Groonga::Context.default_options = {:encoding => :utf8} Groonga::Database.open(db_path) do |db| # テーブル作成 Groonga::Schema.create_table(table_name, :type => :hash, :key_type => "ShortText") do |t| t.short_text("shop_name") t.time("open_date") t.time("close_date") end # データセット Groonga[table_name].add('shop_001', :shop_name => 'kyoto', :open_date => 0, :close_date => 1325343599) # 〜2011/12/31 Groonga[table_name].add('shop_002', :shop_name => 'nagoya', :open_date => 0, :close_date => 1356965999) # 〜2012/12/31 Groonga[table_name].add('shop_003', :shop_name => 'hakata', :open_date => 1356966000, :close_date => 1388501999) # 2013/01/01〜2013/12/31 # 現在営業中の店舗を検索 records = Groonga[table_name].select do |record| ( record[:open_date] <= Time.now.to_i ) & ( record[:close_date] >= Time.now.to_i ) end end ====================================