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/