過去に私が言ったように、多くのウェブサイトやオンラインアプリケーションにおいて、検索は重要な役割を果たしています!
基本的なモデルはシンプルです。複数のページからなる本やカタログのような、ドキュメントセットやデータの塊を考えてみてください。 単純にインデックスを参照することにより、迅速かつ効率的に目的のページを見つけることができることはご存知の通りです。
検索は目的のデータを高速に見つけるために各ドキュメントをインデックス化することにより、それと同じことをしています。 検索ボックスに文字列を入力すると、サイトはその検索文字列にマッチするページの一覧を返します。普通はリストの上位に最も良くマッチしたページが表示されるようソートされます。
CloudSearch
2012年の4月に発表されたAmazon CloudSearchは、フルマネージドなサービスで、基本的な検索機能の構築、そのスケーリングや、可用性を高める対策などを気にすることなく、アプリケーションに検索機能を追加することにフォーカスすることができます。
本日、このCloudSearchに多くの主要な機能強化を行ったことを発表いたします。新しいインデックス作成および検索機能、合計33言語のサポート、IAM統合、インスタンスサイズとスケーリングの制御、可用性を高めるためのMulti-AZオプションなど、多くの機能を追加いたしました。 また、CloudSearchのコンソールも大幅な改良を加えています。
これらの機能については、この記事で追ってご紹介いたしますが、その前に、CloudSearchのような、マネージドサービスのコンセプトについて、見直してみたいと思います。
マネージドサービス AWSの辞書では、マネージドサービスはサービスの実行に関連する厄介な物事の面倒をすべて見ることを指します。 エラーが発生しやすい人間の介入と詳細なrunbooksに必要な活動は、 慎重に設計され、徹底的にテストされたワークフローに置き換えられ、包括的なモニタリングによって検証されます。
マネージドサービスは、プロビジョニング、スケーリング、障害検出および回復、オペレーティングシステムおよびサービスのアップデート、動作条件の変更を自動的に処理することができます。
マネージドサービスは世界規模で実行されるため、ワークフローはあらゆる実践環境でテストされ、迅速に成熟していきます。 ブルームーンが出現するのと同じくらい稀な条件が、企業のデータセンターで起こっても、すぐにテストされ、本番システムで問題が起こる前に対応されます。
さらに、マネージドサービスはハイレベルのAPIという形で公開されているので、サービスのオペレーターは、APIを介して呼び出すプログラムに対してはそのインターフェースを変更することなしに、裏側では、サービスの機能を改善したり、信頼性、拡張性、機能性、および耐久性を向上させるような、変更を自由に行うことができます。
CloudSearchの基本
マネージドサービスそのものについての話は、これくらいにして、ウェブサイトやドキュメントの検索においてこれが何を意味するのかを見ていきましょう。
CloudSearchは、全ての複雑さと全ての検索インフラを隠します。やるのは、CloudSearchに検索したいドキュメント一式を提供し、どのようにアプリケーションに検索を統合するかを決めることだけです。サービスの裏側では、CloudSearchは、受け取るドキュメントを保持するのに十分な容量のストレージと、インデックスと検索リクエストを処理するのに十分な計算処理能力を確保するために、必要に応じて、検索インスタンスをを追加したり削除したりします。
独自のインデックス作成、クエリ解析、クエリ処理、結果のハンドリング、といった処理を記述する必要はありません。ディスクスペースが足りなくなったり、処理能力が足りなくなることを心配する必要もありません。機能を追加するためにコードを書き直し続ける必要さえもなくなります。
CloudSearchを使えば、アプリケーションレイヤーに集中することができます。ドキュメントをアップロードすると、CloudSearchがそれらをインデックス化しますので、お客様が必要とするカスタマイズされた検索体験をすぐに構築し始めることができます。
CloudSearchは非常に簡単に使えます。Search Domainを作成および設定し、ドキュメントをアップロード、インデックス化し、検索を実行するだけです。これらの操作は全て、CloudSearchのコンソール、コマンドライン、CloudSearch APIsを介して行うことができます。
新機能
冒頭でお話したように、CloudSearchに非常にたくさんの新機能を追加しました。詳しく見ていきましょう:
フィールドタイプ - オリジナルのフィールドタイプに加えて、単一または複数(配列)のdate、double、integer、text、literalをインデックス化および検索することが出来るようになりました。位置情報(latlon)についてもインデックス化および検索することができます。:

他言語対応 - CloudSearchは日本語を含む33の異なる言語(アラビア語、アルメニア語、バスク語、ブルガリア語、カタロニア語、簡体字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、英語、フィンランド語、フランス語、ガリシア語、ドイツ語、ギリシャ語、ヒンディー語、ハンガリー語、インドネシア語、アイルランド語、イタリア語、日本語、韓国語、ラトビア語、ノルウェー語、ペルシャ語、ポルトガル語、ルーマニア語、ロシア語、スペイン語、スウェーデン語、タイ語、トルコ語)を語幹解釈とテキスト分析も含めて、処理できるようになりました。 別々のフィールドに1つ以上の異なる言語のドキュメントを送ることができますし、複数の言語を含んだ一つのフィールドを処理するテキストプロセッサーもあります。

強化された検索 - CloudSearchに次の新しい検索機能が追加されました。:
- 近接検索 (Proximity Search)
- 項目ブースト (Term Boosting)
- 全てのフィールドタイプでの範囲検索(Range Searching)
- 全一致のクエリ (Match-All Queries)
- 複数の設定可能なクエリパーサー (シンプルで構造かされたLuceneおよびDisMax)
- 部分検索結果 (Partial Search Results)
位置情報クエリ - 地理的な位置を表現するためにlatlon (緯度 / 経度)を使うことが出来ます。 境界ボックス(北東と南西を角を指定)内を検索したり、新しく追加されたhaversin機能を使って、2点間の大圏距離によってソートされた結果を取得したりすることもできます。
オートコンプリート、検索候補のサポート - CloudSearchは、フィールドのプレフィックス一致に基づいて、正確またはあいまいな検索語候補を生成することができます。:

ハイライト - CloudSearchは、マッチしたドキュメントのどの部分に検索項目が含まれているのかを示すために、検索結果と一緒に抜粋(プレーンテキストかHTML)を返すことができます。:

強化された可能性 - 可能性を高めるために、Multi-AZ構成でCloudSearchを実行することができるようになりました。 マネージドサービスとして、CloudSearchは必要に応じて、自動的に検索インスタンスを起動します。クエリーは、アベイラビリティーゾーンをまたいで、負荷分散されます。アップデートは両方のゾーンの検索インスタンスに送られます。

IAMの統合 - AWS Identity and Access Management (IAM)を使って、CloudSearch Configuration APIへのアクセスを制限することで、どのアカウントがドメインを作成および削除できるのか、アクセスポリシー、インデックスオプションなどを設定できるのか、といった細かいアクセス制御行うことが出来るようになりました。
設定可能なインスタンスサイズとスケーリングオプション - 初期のインスタンスサイズとインデックス複製因子を制御できるようになりました。2GB以上のソースデータを含むデータセットからスタートする場合は、m1.large以上のインスタンスを選択することをオススメします。:

CloudSearchの使い方
CloudSearchについてさらに詳しく学ぶために、Search Domainを作成し、このブログから1900の記事(2004年から現在まで)をアップロードしてみました。その際にやったことは次の通りです。
まずCloudSearchのコンソールを開き、aws-blog-postsというsearch domainを作成しました:

それから、サンプルHTMLドキュメントをアップロードし、インデックスを設定しました。CloudSearchは様々な異なるドキュメントタイプを理解し、解析することができますので、各タイプに適切なインデックスフィールドのセットを提案します。以下は今回のHTMLドキュメントを設定したものです。:

CloudSearch CLIツールをダウンロードし、インストールして、ブログ記事を含むディレクトリ上で、cs-import-documentsコマンドを実行しました。:

お腹が減っていたので、chocolateを検索してみました。:

高度な検索
CloudSearchはIMDBのサンプルデータセットを持っています。このデータセットはおよそ5,000の詳細な映画の情報を含んでいます。 CloudSearchの高度な検索機能を実験するために、別のsearch domainを作成し、Upload Documentsボタンを使って、映画のデータをインポートしてみました。(CloudSearchはAmazon S3およびDynamoDBからもデータをインポートすることができます。)
まずはStar Warsを検索してみました。:

スクリーンショットでご覧いただけるように、検索結果が自動的にファセットにグループ化され、ファセットは、検索を絞り込むために使用することができます。
CloudSearchは、算術式を使って、検索結果を並べ替え、リアルタイムに結果を表示するような強力なランク比較ツールもありますので、これを使って、最適な結果を表示できるよう、順位の変更のA/Bテストを行うことができます。:

お客様の声
最後にCloudSearchを歓迎する日本のお客様の声をご紹介いたします。
スマートインサイト株式会社は特殊な業界のアプリケーション用の検索アプリケーションを開発しています。代表取締役社長の町田潔様は次のように述べています。
「AmazonのCloudSearchは私たちの主力製品SMART/InSightにとって非常に重要なものと捉えています。使った分だけ課金されるPay as you goモデルをサーチサービスに使うことにより、私たちにとって複雑なサーチシステムを運用、管理する上での負荷を取り除き、最も重要なお客様に注力することができるようになります。SMART/InSightはAWS上のサーチ機能によりデータの種類、大きさ、置かれている場所を問わず、顧客が望んでいる形でそれらをビジュアライズさせることができるようになります。私たちはこれからもCloudSearchと共に活動してまいります。」
いますぐ検索をはじめましょう!
本日のリリースの一環として、アジアパシフィック(東京)、アジアパシフィック(シドニー)、南米(サンパウロ)リージョンで、CloudSearchが利用可能になっています。
-- Jeff;
PS - 今回の記事は非常に長いですが、それでも強力で、便利な機能の多くを省略しています。ご自身のアプリケーションでCloudSearchをご利用いただく前に、ぜひ、CloudSearchのドキュメントに一度目を通してみてください。
また、CloudSearchのウェビナー(英語)も実施いたします。このセッションでは、CloudSearchの概要、人気な利用事例の紹介、CloudSearchを自分の環境に設置する際に役立つベストプラクティスをお話したします。
この記事はAWSシニアエバンジェリスト Jeff BarrのAmazon Web Services Blogの記事、 Amazon CloudSearch - Even Better Searching for Less Than $100/Monthを 堀内康弘 (Facebook, Twitter)が翻訳したものです。