[groonga-dev,03511] Re: データのソートについて

Back to archive index

Hiroyuki Sato hiroy****@gmail*****
2015年 9月 17日 (木) 10:35:01 JST


須藤様

佐藤です。

ご連絡をありがとうございます。
なるほど、参照型の使い所がわかりました。

もしFoodテーブルのcategoryカラムがすでに文字列で入っていて
データを作り直す場合は次のようなことで移行するということですね。

1, データをダンプして、スキーマの部分だけ修正してロードしなおす。
2, column_copyを使ってカラムをコピーする

試してみたいと思います。ありがとうございました。




2015年9月16日(水) 22:50 Kouhei Sutou <kou****@clear*****>:

> 須藤です。
>
> In <CA+Tq****@mail*****>
>   "[groonga-dev,03507] データのソートについて" on Wed, 16 Sep 2015 06:41:09 +0000,
>   Hiroyuki Sato <hiroy****@gmail*****> wrote:
>
> > select時のソートについて教えて下さい。
> >
> > 表の方がわかりやすいのでgistに書きました。
> > https://gist.github.com/hiroyuki-sato/79c4ac1b80736956bbe5
> >
> > やりたいことは下記のようにデータを並べ替える条件を
> > 複数持つにはどうしたら良いか?ということです。
>
> Gistの方に書いている通り、種類ごとに順序を持たせることができ
> ます。種類をテーブル参照型にするところがポイントです。
>
> 具体例はこんな感じです。
>
> ----
> table_create Categories TABLE_HASH_KEY ShortText
> column_create Categories order1 COLUMN_SCALAR Int32
> column_create Categories order2 COLUMN_SCALAR Int32
> column_create Categories order3 COLUMN_SCALAR Int32
>
> load --table Categories
> [
> {"_key": "果物", "order1": 1, "order2": 2, "order3": 3},
> {"_key": "野菜", "order1": 2, "order2": 1, "order3": 2},
> {"_key": "魚",   "order1": 3, "order2": 3, "order3": 1}
> ]
>
> table_create Foods TABLE_HASH_KEY ShortText
> column_create Foods category COLUMN_SCALAR Categories
>
> load --table Foods
> [
> {"_key": "りんご",   "category": "果物"},
> {"_key": "バナナ",   "category": "果物"},
> {"_key": "もも",     "category": "果物"},
> {"_key": "キューリ", "category": "野菜"},
> {"_key": "キャベツ", "category": "野菜"},
> {"_key": "サンマ",   "category": "魚"},
> {"_key": "鯛",       "category": "魚"},
> {"_key": "イワシ",   "category": "魚"}
> ]
>
> select Foods --sortby category.order1
> # [
> #   [
> #     0,
> #     1442411204.23089,
> #     0.000399351119995117
> #   ],
> #   [
> #     [
> #       [
> #         8
> #       ],
> #       [
> #         [
> #           "_id",
> #           "UInt32"
> #         ],
> #         [
> #           "_key",
> #           "ShortText"
> #         ],
> #         [
> #           "category",
> #           "Categories"
> #         ]
> #       ],
> #       [
> #         1,
> #         "りんご",
> #         "果物"
> #       ],
> #       [
> #         2,
> #         "バナナ",
> #         "果物"
> #       ],
> #       [
> #         3,
> #         "もも",
> #         "果物"
> #       ],
> #       [
> #         4,
> #         "キューリ",
> #         "野菜"
> #       ],
> #       [
> #         5,
> #         "キャベツ",
> #         "野菜"
> #       ],
> #       [
> #         7,
> #         "鯛",
> #         "魚"
> #       ],
> #       [
> #         6,
> #         "サンマ",
> #         "魚"
> #       ],
> #       [
> #         8,
> #         "イワシ",
> #         "魚"
> #       ]
> #     ]
> #   ]
> # ]
> select Foods --sortby category.order2
> # [
> #   [
> #     0,
> #     1442411204.23131,
> #     0.000266313552856445
> #   ],
> #   [
> #     [
> #       [
> #         8
> #       ],
> #       [
> #         [
> #           "_id",
> #           "UInt32"
> #         ],
> #         [
> #           "_key",
> #           "ShortText"
> #         ],
> #         [
> #           "category",
> #           "Categories"
> #         ]
> #       ],
> #       [
> #         4,
> #         "キューリ",
> #         "野菜"
> #       ],
> #       [
> #         5,
> #         "キャベツ",
> #         "野菜"
> #       ],
> #       [
> #         1,
> #         "りんご",
> #         "果物"
> #       ],
> #       [
> #         2,
> #         "バナナ",
> #         "果物"
> #       ],
> #       [
> #         3,
> #         "もも",
> #         "果物"
> #       ],
> #       [
> #         6,
> #         "サンマ",
> #         "魚"
> #       ],
> #       [
> #         7,
> #         "鯛",
> #         "魚"
> #       ],
> #       [
> #         8,
> #         "イワシ",
> #         "魚"
> #       ]
> #     ]
> #   ]
> # ]
> select Foods --sortby category.order3
> # [
> #  [
> #    0,
> #    1442411204.23159,
> #    0.000393867492675781
> #  ],
> #  [
> #    [
> #      [
> #        8
> #      ],
> #      [
> #        [
> #          "_id",
> #          "UInt32"
> #        ],
> #        [
> #          "_key",
> #          "ShortText"
> #        ],
> #        [
> #          "category",
> #          "Categories"
> #        ]
> #      ],
> #      [
> #        8,
> #        "イワシ",
> #        "魚"
> #      ],
> #      [
> #        7,
> #        "鯛",
> #        "魚"
> #      ],
> #      [
> #        6,
> #        "サンマ",
> #        "魚"
> #      ],
> #      [
> #        5,
> #        "キャベツ",
> #        "野菜"
> #      ],
> #      [
> #        4,
> #        "キューリ",
> #        "野菜"
> #      ],
> #      [
> #        1,
> #        "りんご",
> #        "果物"
> #      ],
> #      [
> #        3,
> #        "もも",
> #        "果物"
> #      ],
> #      [
> #        2,
> #        "バナナ",
> #        "果物"
> #      ]
> #    ]
> #  ]
> # ]
> ----
>
>
> --
> 須藤 功平 <kou****@clear*****>
> 株式会社クリアコード <http://www.clear-code.com/>
>
> Groongaベースの全文検索システムを総合サポート:
>   http://groonga.org/ja/support/
> パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
>   http://www.clear-code.com/recruitment/
> コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
>   http://www.clear-code.com/services/code-reader/
>
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.osdn.me/mailman/listinfo/groonga-dev
>
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
Download 



groonga-dev メーリングリストの案内
Back to archive index