views4GCPのストレージサービスについてまとめてみた。Exp:76990---ただいま鋭意作成中です---TweetShareHatena注意この記事は2014年12月2日に更新されたもので、内容が古い可能性がありますのでご注意ください。限界値編みなさん、こんにちは。APIの概要を説明しました。検索に特化したServiceであることは分かっていただけたかと思います。登録・削除編」と題して説明します。APIのデータは、大きく分けてIndex、Document、Fieldの3要素で構成されています。Part1のおさらいになりますが、この3要素はDatastoreで言うところの、Kind、Entity、Propertyにそれぞれ相当します。IndexはDocumentの集まりで、DocumentはいくつかのFieldを持つことができます。Index、Field、Documentの作成にはそれぞれBuilderを使うので、実装者はオブジェクトの作成過程を極力意識すること無く、オブジェクトを作成することができます。それでは、まずはDocumentのBuilderを作成しましょう。IDを設定し、Builderを作ります。IDをString型で持たなければなりません。登録するIndexに既に同じIDのDocumentがある場合は、Documentは上書きされます。.setLocale(Locale.JAPANESE)とやってますが、これはおまじないのようなもので、この設定が無くても正常に日本語検索ができます。Document.BuilderにはsetRankメソッドがあり、検索結果で返るときのDocumentの順序を指定することができます。※指定が無い場合は、2011年1月1日からの秒数が入ります。新しいDocumentのRankが自動的に高くなり、ソート順を指定しない検索の場合は新しく登録したDocumentが上になります。次にDocument.BuilderにFieldの情報を追加します。FieldのBuilderを生成します。Field.Builderを使用して、フィールド名、値、検索型を指定して、設定します。DocumentのBuilderに情報を設定したField.Builderを追加します。Field.newBuilder();htmlFieldBuilder.setName("html").setHTML("<html><body><p>テスト太郎です。Field.newBuilder();numFieldBuilder.setName("age").setNumber(25);docBuilder.addField(numFieldBuilder);Field.Builder.setNameでフィールド名を設定し、setText(setAtom......)でそのフィールドの値を設定します。下記のコードのように同一フィールド名を複数のフィールドに設定するとこもできます。Field.newBuilder();listFieldBuilder2.setName("category").setAtom("アルバイト");docBuilder.addField(listFieldBuilder2);Field.Builder.setNameに同じフィールド名を設定し、Document.Builderに追加するだけです。このように設定しますと、フィールド名「category」で検索した場合、「学生」でも引っかかるし、「アルバイト」でも引っかかるようになります。※Number型とDate型以外のフィールド型の場合のみ、同一のフィールド名を設定できます。repeated.」が出ます。フィールドを設定したら、DocumentをIndexに登録します。IndexSpec.newBuilderしつつ、setNameでIndexの名前を指定し、IndexSpecを生成します。IndexSpecを使って、SearchServiceからIndexを作成します。IndexにDocumentを登録するindex.put(builder);Index.putにはList型でも渡せますが、一度に渡せる件数は200件までですので、Listで渡す場合は数の調整が必要になります。Engine]→[Search]のIndex一覧に「sample」が見えると思います。Index名「sample」をクリックすると、sampleに登録されたDocumentの一覧が表示されますので、登録したDocumentを確認してみましょう。1.1でsetIdしたID=00001のDocumentが見れるはずです。CATEGORYの項目に表示されている値は「アルバイト」だけで「学生」が見えません。同一名称のフィールドの値は最後に追加したモノだけが表示されるようです。Consoleと同様でcategoryの値は「アルバイト」しか見せませんが、Eclipseでのローカル実行であれば、Documentの詳細が見れますので、下記のように見えます。一覧の表示に関して言えば、文字数が多い場合などは途中までしか表示されません。先程1で作ったDocumentを削除してみましょう。登録と同じように最初はIndex名を指定して、Indexオブジェクトを作ります。index.delete(“00001”);Index.deleteはIndex.put同様、200件までのListを渡せます。IDを取って削除するという流れになるかと思います。Consoleを確認してみましょう。Documentはちゃんと消えていますね。ConsoleからDocumentの削除はできないようなので、削除処理のプログラムは地味に必要なプログラムかと思います。次回は、検索の実装について、注意点等を交えながら紹介したいと思います。