[groonga-dev,01108] Re: Re: Time型のインデックスについて

アーカイブの一覧に戻る

hirano_verf****@mail***** hirano_verf****@mail*****
2012年 11月 22日 (木) 18:18:48 JST


平野です。
早速の返信ありがとうございます。

Int型カラムに対してのインデックス作成、完全一致検索(==)での高速化はできていたので、Time型の範囲指定も高速化できるだろうと試行錯誤していたところでした。

機能追加まで検討していただき感謝いたします。
リリース楽しみにしております。


2012/11/22 (Thu) 16:37, "Kouhei Sutou" <kou****@clear*****> wrote:
> 須藤です。
> 
> In <04714432-61e6-3f00-bc6a-d7c3afad9a5f @ api104>
>   "[groonga-dev,01103] Time型のインデックスについて" on Thu, 22 Nov 2012 16:09:00 +0900,
>   hirano_verf****@mail***** wrote:
> 
> > Time型のカラムに対してrroongaから日付範囲指定で検索を行っています。
> > より高速に検索するためにインデックスを作成したいと思っているのですが、作成することは可能でしょうか。
> > また、可能であれば方法を教えていただけないでしょうか。
> 
> インデックスを作成することは可能なのですが、そのインデックス
> を使って高速に検索するということはできません。
> が!今月末のリリースまでに、インデックスを使って高速に検索で
> きるようにしておこうと思います。
> 
> できるようになったら、以下のようなコードでインデックスを使っ
> て高速に検索できるようになります。
> 
> 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::Schema.create_table("Times", :type => :patricia_trie, :key_type => "Time") do |t|
> 		t.index(table_name, "open_date")
> 		t.index(table_name, "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
> 
> -- 
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
> 
> groongaサポート:
>   http://groonga.org/ja/support/
> パッチ採用はじめました:
>   http://www.clear-code.com/recruitment/
> 
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
> 




groonga-dev メーリングリストの案内
アーカイブの一覧に戻る