Yutaro Shimamura
yu****@irx*****
2016年 2月 2日 (火) 13:26:32 JST
矢田さん > ここを column_create test time COLUMN_SCALAR Time としていただければ大丈夫なはずです. > データ型を idx_time から Time に変更しただけです. すいません、数値インデックスの作成方法を根本から間違えてました。。 この方法で問題なく作成し、関数を使うことが出来ました! 実は全文検索以外のインデックス作成方法がうまくみつからず、 http://redmine.groonga.org/issues/766 この方法を参考にしていました。 table_create test TABLE_HASH_KEY ShortText column_create test time COLUMN_SCALAR Time table_create idx_time TABLE_PAT_KEY Time column_create idx_time test_time COLUMN_INDEX test time 今後はこの方法でインデックスを作っていこうと思います。 ありがとうございました! 2016-02-02 3:12 GMT+01:00 Susumu Yata <yata****@razil*****>: > Groonga 5.1.2 を使ってます! > 矢田です. > >> この使い方をする場合、なにかテーブル作成時に実行しておくことや、filter条件の書き方を変える必要があるのでしょうか? > > テーブル test のカラム time の型がテーブル idx_time への参照になっていることが原因のようです. > >> column_create test time COLUMN_SCALAR idx_time > > ここを column_create test time COLUMN_SCALAR Time としていただければ大丈夫なはずです. > データ型を idx_time から Time に変更しただけです. > > 私の環境でも,上の方法で作成すると同様のエラーになりました. > >> select test --filter 'between(time,1234567890,"include",1234567892,"include")' > [[-22,1454378590.07384,0.00195026397705078,"between(): failed to cast > min: <1234567890> -> <idx_time>",[["between_cast","proc.c",4986]]],[]] > > 下の方法で作成すれば,問題なく実行できました. > >> select test --filter 'between(time,1234567890,"include",1234567892,"include")' > [[0,1454378637.96945,0.00219058990478516],[[[2],[["_id","UInt32"],["_key","ShortText"],["time","Time"]],[1,"test1",1234567890.12],[2,"test2",1234567891.12]]]] > > 以上,お試しいただけますでしょうか. > よろしくお願いします. > > > 2016年2月2日 4:37 Yutaro SHIMAMURA <yu****@irx*****>: >> >> groonga 5.0.9を使ってます! >> >> between関数を使うときに、対象のカラムがTime型/Int型だとうまく実行できない問題にぶつかりました。 >> >> table_create idx_time TABLE_PAT_KEY Time >> table_create test TABLE_HASH_KEY ShortText >> column_create test time COLUMN_SCALAR idx_time >> column_create idx_time test_time COLUMN_INDEX test time >> >> >> load --table test >> [ >> ["_key","time"], >> ["test1",1234567890.12], >> ["test2",1234567891.12], >> ["test3",1234567892.12] >> ] >> >> >> この内容でbetween関数を使って絞り込みを実行しようとしたところ、between関数内部でエラーになってしまい、実行できませんでした。 >> >>> select test --filter 'between(time,1234567890,"include",1234567892,"include")' >> [[-22,1454354516.15522,0.000474214553833008,"between(): failed to cast min: <1234567890> -> <idx_time>",[["between_cast","proc.c",5570]]],[]] >> >> 試しにidx_timeをUint64で作成して実行しましたが、同じエラーで失敗しました。 >> >> [[-22,1454354741.43699,0.000444650650024414,"between(): failed to cast min: <1> -> <idx_time>",[["between_cast","proc.c",5570]]],[]] >> >> >> この使い方をする場合、なにかテーブル作成時に実行しておくことや、filter条件の書き方を変える必要があるのでしょうか? >> _______________________________________________ >> groonga-dev mailing list >> groon****@lists***** >> http://lists.osdn.me/mailman/listinfo/groonga-dev > > > > -- > Susumu Yata <yata****@razil*****> > _______________________________________________ > groonga-dev mailing list > groon****@lists***** > http://lists.osdn.me/mailman/listinfo/groonga-dev