Amazon CloudSearchで日本語文書を検索する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Amazon CloudSearchが大幅アップデート

先日、CloudSearchが大幅アップデートされたということでニュースになっていました。日本語を含む多くの言語に対応し、自動補完、位置情報、フィールドタイプ、MultiAZ、IAM対応など盛りだくさんです。そこで、今回はCloudSearchの使い方や使いどころをご紹介します。

基本的な使い方

CloudSearchの使い方は3ステップです。ドメインの作成、文書のアップロード、そして検索です。順番に見て行きましょう。

ドメインの作成

管理コンソールからCloudSearchを選んでドメイン作成を選択してください

screenshot 2014-04-26 18.32.19

ドメイン名、インスタンスタイプ、レプリケーション数を決めます。まずはお試しとして最小構成を指定します。

screenshot 2014-04-26 18.33.26

次にドメイン内に定義するインデックスのフィールドを指定します。自分でゼロから定義することもできますが、文書をアップロードして自動的に構造を作る方法もあります。現在サポートされているフォーマットは、JSON、XML、CSV、PDF、HTML、Excel、PowerPoint、Word、Textです。拡張子が合っていないと認識してくれませんので気をつけてください。

screenshot 2014-04-26 18.35.09

お試しにPDFファイルをアップロードしてみましょう。「なんちゃって個人情報サービス」を使ってダミーとなる個人情報をCSV形式で生成して、自動的にインデックスを定義します。保存形式をUTF-8にしてください。CSVヘッダは英語にしてください。

screenshot 2014-04-26 18.55.22

加工したCSV

screenshot 2014-04-26 18.54.17

アップロードした後に自動的に分析されたインデックス例です。追加で、日付を指定したり、日本語を指定してください。

screenshot 2014-04-26 18.53.56

続けて、アクセス制限を書きます。今回は特に制限を入れていません。

screenshot_2014-04-26_18_57_43

成功です!

screenshot 2014-04-26 19.00.16

インデックスの作成が成功しましたが、ドメインを使えるまで10分ほど待つ必要があります。気長に待ちましょう。

screenshot 2014-04-26 19.00.53

文書のアップロード

作成したドメインに文書をアップロードしましょう。先ほどインデックス作成に使ったものと同じファイルをアップします。

screenshot 2014-04-26 19.08.29

文書の解析中。。。

screenshot 2014-04-26 19.08.50

ちゃんと読み込めそうです。

screenshot 2014-04-26 19.10.24

おっと、エラーに!!これは日付の形式がおかしいようですね。正しくしなければ。

screenshot 2014-04-26 19.11.24

CloudSearchの公式ドキュメントには IETF RFC3339形式にするようにと書いてあります。例)1967-01-31T23:20:50Z これはやっかいですねー。よし、テキストエディタで置換しましょう。ちなみに、UTF時間のみの入力しか受け付けてくれませんので1967-01-31T23:20:50+09:00Zのような記述は弾かれます。ElasticSearchなら受け付けてくれるようなので今後の機能追加に期待です。

まずは月をゼロ埋め

  • 検索:([0-9]{4})/([0-9]{1})/([0-9]{1,2})
  • 置換:$1/0$2/$3

次に日をゼロ埋め

  • 検索:([0-9]{4})/([0-9]{1,2})/([0-9]{1}),
  • 置換:$1/$2/0$3,

最後に形式を変換

  • 検索:([0-9]{4})/([0-9]{2})/([0-9]{2})
  • 置換:$1-$2-$3T00:00:00Z

完成ですw

  • これが  :1974/9/1
  • これになる:1974-09-01T00:00:00Z

それではリベンジです。いけました!

screenshot 2014-04-26 19.52.08

これで文書の登録が完了です。

ドメインの検索

それでは検索をしてみましょう。

screenshot 2014-04-26 19.53.56

おー、ちゃんと検索できています。しかも、カテゴリの件数を表示しつつ絞込みするファサット検索もできています。例えば、carrierをドコモにして、ageを68歳で絞り込むと、58件出てきました!!!

screenshot 2014-04-26 20.02.51

最後におきまりの検索です。「もも」を検索します。

screenshot 2014-04-26 20.37.08

いい感じに形態素解析しているようですね。

まとめ

CloudSearchを使って、日本語を含むドキュメントをアップロードし、日本語で検索してみました。ちゃんと形態素解析されているようで、単語を入力すると正しく表示してくれました。一方で、渡辺と渡邉など、検索キーワードの入力時に間違えやすいですし、サジェストなども欲しいところです。次回は、今回紹介しきれなかった他の機能や使い方を紹介したいと思います。

参考資料

Amazon CloudSearch Developer Guide (API Version 2013-01-01)