読者です 読者をやめる 読者になる 読者になる

よしだのブログ

サブタイトルはありません。

Amazon CloudSearch インプレッション

IT、プログラミング AWS、クラウド、IaaS 検索エンジン Amazon CloudSearch

f:id:yoshi0309:20140410001213p:plain

追記:5/11 ファセットをレンジで絞り込むことは可能です。確認不足でした。Amazon CloudSearch どうもすいませんでした。レンジファセットは可能です! - よしだのブログ

どうも! Amazon CloudSearch 関連のエントリを連投しています。これは、調査で作った wikipedia を検索した画面の一部です。

基本的な機能についてのインプレッションを書いていませんでした。今回は、Solr などと比較してどうか?という観点で書きたいと思います。なお、他の ASP の検索サービス等は全然触ったことが無いので、その観点での比較はありません。どちらかというと、オンプレミス VS クラウドの比較よりになるかと思います。

良い点

クラウドならではの利点がうまく生かされています。特に、文書の増加やクエリの増加に応じてスケールアウトしてくれるので、サーバーの追加作業が全く不要という点が大きいですね。オンプレミスのシステムでは難しいですよ。FAST や Autonomy IDOL のような製品は、サーバー数やドキュメント数、クエリ数(QPS)に応じて高額なライセンス料がかかるので、実際、不可能でした。また、Solr についてもサーバー数を変更すると、インデックスの再配布が必要だったりと、ダウンタイムを0にしようとすると相当な構成を組む必要があり、かなり大変な作業です。

また、UIが洗練されており使いはじめるのに時間がかからない点や、はじめからある程度チューニングされている点など*1、利用者は楽に使いはじめることができます。素晴らしい。

  • 自動でスケールする。インデックスの量やクエリ数に応じてスケールするので、管理が楽。
  • マルチAZのオプションがある。データセンターをまたがって構成できるので、耐障害性も高い。
  • スキーマの定義が UI ででき、とても簡単。また、サンプルデータが有れば、データを解析して自動で作ってくれる。
  • インデックスの追加から検索が可能になるまでの時間はかなり短い
  • 標準でサジェストがある。簡単に使いはじめることができる。若干精度に難が見受けられるが、よみがなやローマ字の状態でのサジェストができる。

イマイチな点

追記:5/11 ファセットをレンジで絞り込むことは可能です。確認不足でした。Amazon CloudSearch どうもすいませんでした。レンジファセットは可能です! - よしだのブログ

実機を触りつつ、ドキュメントをひと通り読んでみましたが、無い機能が結構多い印象です。特に数値/日付型のファセットのレンジと検索結果のグルーピングについては、経験上、地味によく使われる機能なので無いのは痛いと感じました。

以下は、CloudSearch のファセット。日付と数値、個別にファセットが作成され、個別に絞り込むことが出来ますが、例えば3013年のドキュメントのみに絞り込むことは出来ません。

f:id:yoshi0309:20140410002148p:plain

以下は、Amazon.co.jp の価格のファセット。こちらだと、価格の範囲で商品を絞り込むことが出来ます。Solr にも同様の機能があり、実現が可能です。

f:id:yoshi0309:20140410002359p:plain

また、導入してみようと思った時に大きな壁になるのは、データのクローリングかと思います。これも CloudSearch にはありませんので、バッチを作ったりする必要があります*2

クローラ、コネクタの汎用フレームワークである、Apache ManifoldCF に CloudSearch 用のコネクターを作成しています。出来上がれば、Web や DB などなどをクロールして、CloudSearch で検索できるようになります!乞うご期待。

  • ファセットに数値や日付のレンジでまとめる機能が無い。
  • 検索機能をグルーピングする機能がない。(field collapsing)
  • solr でいうところの daynamic field がない
  • 存在しないフィールドのデータをフィードするとエラーで必ず drop される。
  • フィールド名に使うことのできる文字の制約が厳しい
  • 日本語の精度は、まあまあと思われる*3
  • 各種カズタマイズはできないと思ったほうがいい、もちろん Document Processor 的なものも無い。
  • クローラは無いので、別途バッチ等を用意する必要がある。

まとめ

フラットなデータが大量にあって、とりあえず全文検索したい、というニーズにはマッチすると思います。また、金額的にも過去に手がけた案件のデータをもとに試算してみたところ、金額的にはとても安く運用することはできると思います。 一方で、機能的に不足しているところも多いので、例えば、ECでオンプレミスの検索エンジンを使っている全てのユーザーに置き換えを提案できるレベルでは無いと思います。特に、繰り返しになりますが、レンジファセットが無い点、グルーピングが出来ない点、はインパクトが大きいと思います。提案時点では使わないケースでも、将来的に追加したいと言われる可能性が高いと思いますし。ただ、裏では Solr を使っていることが明らかになっているので、今後追加されることも期待していいと思います。

機能的な制約はまだまだ多いですが、非常にポテンシャルの高いサービスだと思います!

*1:ステミングや読みがな展開などなど

*2:CLIでデータを投入することは出来ますが、自動化するにはデータの更新のチェックなど色々と気をつかうポイントが多いので、大変です

*3:「すもも」はちゃんとトークナイズされているようでした。