views4GCPのストレージサービスについてまとめてみた。Exp:76990---ただいま鋭意作成中です---TweetShareHatena注意この記事は2015年5月22日に更新されたもので、内容が古い可能性がありますのでご注意ください。APIの機能が増えましたので、その新機能を少し使ってみたいと思います。Search」という機能です。Search」機能は2015年5月22日時点でBeta版です。公式ドキュメントは下記ページにあります。Search」は、サイトによっては、「ファセットナビゲーション」や「ファセットブラウジング」、「ドリルダウン検索」と呼ばれたりします。下記の画像は某通販サイトのカテゴリー「本」に関する「ファセットナビゲーション」です。カテゴリー「本」に関して、ジャンルやフォーマットの種類と件数がひと目で分かり、とても使いやすいかと思います。取得できたDocumentそのものカーソル情報でした。Documentの件数は取得できるものの、複数のフィールドに何の値が何件あるのかまで分かりません。各値毎に検索をして件数を出す必要があり、上記Amazonの例だと、カテゴリやフォーマット等の数分だけクエリを流す必要がありました。それを簡単にカテゴリ別の件数がわかるようになると言うものです。登録してみる今回の「使ってみた」では次のようなDocumentを合計50件登録してみます。検索時には、A、B、O、ABの4つの血液型のそれぞれの件数を出したいと思います。検索時には、0?9歳、10?19歳、20?29歳、30?39歳、40?49歳、50歳以上の6つに分けた時のそれぞれの件数を出したいと思います。Documentの登録方法は過去に説明した実装とほとんど同じです。Searchする項目と値を登録する。Searchとして登録できる型はATOM型とNUMBER型の2種類だけです。index.put(builder);※Documentの以前説明した登録処理の部分の説明は割愛します。過去の記事を読んでください。Search対象のフィールド名とその値を指定すればOKです。設定できるFacetの種類は、ATOMとNumberの2つだけとなっております。Searchができる準備が整いました。今回登録した血液型、年齢の各条件の件数はそれぞれ以下のようになっています。次は、実際に検索してみましょう。Searchする場合は、以下のように指定します。下記では「bloodType」というFacetの名前に対して、A,B,O,ABがそれぞれ何件あるのか集計を実行します。Searchする場合は、以下のように指定します。FacetRange.withEndは指定した引数の値未満が対象。FacetRange.withStartは指定した引数の値以上が対象。FacetRange.withStartEndは第一引数の値以上、第二引数の値未満が対象。下記では「age」というFacetの名前に対して、集計を実行します。Searchの集計処理の設定を行ないます。Searchの結果をFacet単位で取得することができます。FacetRequest.newBuilder().setNameに設定した値が出力されます。FacetRequest.newBuilder().addRangeで設定した集計条件が出力されます。FacetResultValue.getCountでは、集計件数が出力されます。}}実際の出力結果は以下のようになりました。count=10それぞれの件数は登録したものと同じですね。FacetRequest.newBuilder().addRangeのgetLabelの値ですが、開始カッコは「[」ですが、閉じカッコが「)」になってますね......これは表示の不具合なのでしょうか?上限、下限を設定していないという意味なのでしょうが、「Infinity」という表現に一瞬「ん?」となってしまいました。Search」はまだBeta版ですので、これから修正はいろいろと入ると思います。Search」の設定をしたDocumentとして再登録をしなければならないので少し手間ですね。BY」が使用できるようになったと考えたほうがわかりやすいかもしれません。Search」のような機能が追加されるのは嬉しいですね。正式リリースが待ち遠しい限りです。Search」の実装について説明はここまでです。読んで下さり、ありがとうございました。APIを活用したクラウドシステム開発の専門集団です。お仕事の依頼、開発者の募集を常に行っておりますので、興味のある方はお問い合わせください。