Amazon CloudSearch 日本語に対応

Amazon CloudSearch が日本語にも対応し大幅にアップデート!

Kunihiko Kido
5 min readApr 9, 2014

Amazon CloudSearch は、2012年4月に発表されて以来それほど大きなアップデートはありませんでしたが、今回日本語対応も含め大幅にアップデートしたようです。気になったアップデートを中心にご紹介します。

フィールドタイプの追加

date、double、integer、text、literal の単一または配列データを扱えるようになりました。これまで、数字は整数しか扱えなかったので、アプリケーション側でインデックスとクエリーを工夫する必要がありましたが、もうその心配はありません。

これらの型の配列も取り扱えるようになったと言うことなので、例えば旅行のツアー情報など、同じデータでも日付単位、価格単位にインデックスを作成しなければならなかったデータもインデックス数を減らして効率的にインデックスできてしまうのでは?と何気にインパクトのあるアップデートです。

位置情報(緯度経度)

以前からできたような気もしますが、ロケーション検索で使用できる緯度経度についてもインデックス化および検索できるようになったようです。境界ボックス(北東と南西を角を指定)内を検索したり、新しく追加されたhaversin機能を使って、2点間の大圏距離によってソートされた結果を取得したりすることもできるようになったようです。

他言語対応

日本語を含む33の異なる言語に対応。これはうれしいアップデートです。解析処理の設定はフィールド単位で行えるようなので、インデックスするスキーマの内容にあわせて最適なテキスト分析処理を指定することができるようです。また、複数の言語を含んだ一つのフィールドを処理するテキストプロセッサーもあるそうです。

日本語処理については、形態素解析なのかNグラムなのかマニュアルを見ても明記されていませんが、語幹処理も含まれているようなので、多分形態素解析?

日本語の場合、検索にヒットしない原因を突き止めるのが至難の業なので、指定した言語解析用のプロセッサーを使って、処理後の内容が確認できると良いのですが、そういった仕組みはまだ用意されていないようです。

強化された検索

CloudSearch に次の新しい検索機能が追加されました。

  • 近接検索 (Proximity Search)
  • 項目ブースト (Term Boosting)
  • 全てのフィールドタイプでの範囲検索(Range Searching)
  • 全一致のクエリ (Match-All Queries)
  • 複数の設定可能なクエリパーサー (シンプルで構造かされたLuceneおよびDisMax)
  • 部分検索結果 (Partial Search Results)

個人的には、2番目の項目ブーストが気になります。例えば以下のように記述できるので、これを使えばちょっとしたパーソナライズした検索結果も実装できそうです。

# title フィールドで 'star' にマッチしたドキュメントのスコアを増加する例
q=(and (range field=year [2013,}) (or (term field=title boost=2 'star') (term field=plot 'star'))

オートコンプリート、検索候補のサポート

CloudSearchは、フィールドのプレフィックス一致に基づいて、正確またはあいまいな検索語候補を生成することができるようになったようです。日本語については検証してみないとかな?

ハイライト

なぜこれが今までなかった?これで、用途が広がる?

強化された可用性

Multi-AZに対応。コンソールの「Turn Multi-AZ on」をオンにするだけの簡単さ。

IAMの統合

IAMを使って、細かなCloudSearch Configuration APIへのアクセス制御がかなり細かくできるようになったようです。

設定可能なインスタンスサイズとスケーリングオプション

いままで、スモールインスタンスから起動していましたが、初期のインスタンスサイズとインデックス複製因子を制御できるようになったようです。

東京リージョン

これらのアップデートと一緒に東京リージョンでも利用可能になりました。これで、日本語にも対応して、東京リージョンも利用可能になったので、日本で利用する際にも検索エンジンの高速で全文検索できる特徴を生かして利用できるようになってきたかな?

--

--