読者です 読者をやめる 読者になる 読者になる

よしだのブログ

サブタイトルはありません。

Amazon CloudSearch どうもすいませんでした。レンジファセットは可能です!

IT、プログラミング AWS、クラウド、IaaS 検索エンジン Amazon CloudSearch

f:id:yoshi0309:20140410002148p:plain

f:id:yoshi0309:20140410002359p:plain

どうも!

今日は、謝らなければいけません。以前のエントリー 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 は使えない、ということなんでしょうね。

以上、しつれいしまいた。