Amazon CloudSearch どうもすいませんでした。レンジファセットは可能です!
どうも!
今日は、謝らなければいけません。以前のエントリー Amazon CloudSearch インプレッション - よしだのブログ で、Amazon CloudSearch は数値や日付のレンジでのファセット検索ができない、と記載しましたが間違いであることがわかりました。。
訂正してお詫び申し上げます。
どうやるのか? パラメータは?
以下のパラメータを送信すると可能です。
facet.FIELD={option:value, option:value, ...}
このパラメータですが、ファセットの表示方法を指定することが出来ます。
- FIELD には、ファセットにしたいフィールド名を指定します。
- オプションとしては、sort / buckets / size が指定できます。
- sort オプションは、ファセットに表示される選択項目(バケット bucket といいます)の並び順を指定できます。buckets オプションとは同時に指定することができません。値には buckets もしくは count を指定することができます。buckets を選択するとバケットの名前順(昇順固定)、count を指定するとバケットに含まれる件数順に並びます。
- size オプションは、ファセットに表示されるバケットの数を指定することができます。
- buckets オプションは、ファセットで集約したい値や、値のレンジを指定することができます。
buckets については、例を見たほうが速いと思いますので、以下に転載します。
- ジャンルうちの、"Action" "Adventure" のみを表示したい
facet.genres={buckets:["Action","Adventure"]}
- 年代ごとにわけて表示するばあい (=レンジ!)
facet.year={buckets:["[1970,1979]","[1980,1989]", "[1990,1999]","[2000,2009]", "[2010,}"]}
- サイズごとにわけて表示する場合 (=レンジ!)
facet.size={buckets:["[1001,9999]","[0,1000]"]}
検索結果は以下のように表示されます。(jsonの場合)
"facets": { "size": { "buckets": [ { "value": "[1001,9999]", "count": 386 }, { "value": "[0,1000]", "count": 20 } ] } }
- 日付もOK
facet.mdate={buckets:["['2009-01-01T00:00:00Z','2009-12-31T23:59:59Z']"]}
"facets": { "mdate": { "buckets": [ { "value": "['2009-01-01T00:00:00Z','2009-12-31T23:59:59Z']", "count": 8 } ] } }
ちなみに、buckets を使うとオプションで指定した順番で表示されます。なので、sort は使えない、ということなんでしょうね。
以上、しつれいしまいた。