AWS Summit 2015 - Day1 - Amazon CloudSearch Deep Dive
- AWS 篠原さん
SnapDish事例
ランチセッション
- ランチといえば
- お弁当どうしよう
CloudSearchで検索を入れてる
そもそもどういうさーびす?
フルマネージドな検索エンジン
- 多言語対応 34言語
- ハイライト、サジェスト、地理など
AWSの中ではマイナー
Amazonで買い物すると。。。検索の下でA9というのが出る
- スタンフォードにA9.com
- そこで作ってる
どう使う?どういうもの?
南北線の検索をしたい
- 海外で発表したら、東京都地下鉄やばいという話になった
検索ドメインの作成
- 南北
- JSONで駅のコード、駅名などのデータファイルを作成(SDF)
- upload
- すると、勝手にスキーマ定義
- フィールド指定にDynamic Fieldも使える
プルダウンで選ぶだけで、日本語でのトークナイズができる
あとはもう、検索すれば出る
- OR検索とかも出来る
-
- 辞書のカスタマイズが可能
- きゃりーぱみゅぱみゅ、とか
- データファイルを作って、定期的に辞書に取り込んだり
- 辞書のカスタマイズが可能
シノニム・類義語
- これらもWebやCLIから登録できる
Bi-gram Index
- 言語をMultiple Languageにセットすれば使える
- 2文字ずつで切るとノイズが発生
- 東京都と京都
形態素解析とBi-gramを組み合わせて使う
- SourceField
- 両方でor検索的にして、形態素解析側を優先する
ソート順はTF-IDF
- ドキュメントにその言葉がいっぱい出てくるなら、高スコアにする
様々なexpression
- 結果の重みづけ、調整ができる
A/Bテスト機能
- 重み付けを変えた場合の結果を比較する機能
複数の方の組み合わせ
よみがなをベースとしたSuggestion
可用性、IAMによる管理
- AWS Security Blogにもいい例がある
Inside Amazon CloudSearch
フルマネージド
- Auto Pertitioning
- Auto Scaling
中身がどうなっているのか?
Indexing
- 中身はELBがいて、その裏にEC2が並んでる状態
- データを保存する場合に、どれかのノードに送られる
- そのノードが、ひとまずレスポンスを受け取った上で、DynamoにUpload。その後は非同期処理
- 定期的にS3/Dynamoにポーリングして、担当の処理があれば処理・Indexを作る
Query
- 受け付けるところまでは同じ
- 一般的なEC2の場合と同じAutoScalingが動いている
- クエリの量が増えると、それによって増える
AutoPertitioning
- データ容量の増加にどうやって対応してるか
最初はスケールアップ
- なので、ダウンタイムはないが切り替わり中はIndexingが反映されないことがある
1ノードでまかないきれなくなったら、スケールアウト
検索ドメインの変更など
- 同様にEMRで
初期のデータを投入する場合
大量のリクエストに備えて事前対応
導入事例
schoo
- 爆速で導入
- リリースまで1週間
nanapi
- デフォルトのまま使ってる
- それでもいい感じに検索できている
Chatwork
- 日本最大級の利用例
- 5億件以上のデータ
- 運用はほぼメンテナンスフリー
- CloudSearchにして速度はかなり改善した
更に知りたい方に
- DocValues
- CloudSearch SAのビデオ
- たとえば、普通のqとfq(filter query)の性能差とか