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

Back to archive index

Kouhei Sutou kou****@clear*****
2015年 9月 16日 (水) 22:49:45 JST


須藤です。

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 メーリングリストの案内
Back to archive index