A9共催! AWSプロダクトシリーズ | よくわかる Amazon CloudSearch @アマゾン目黒オフィス
##Keynote – Rob Walters (CloudSearch GM)
- A9という社名はAlgorithmの頭文字とそれが9文字だということに掛けている
- Amazonの全リテールサイトの検索を担っている
- Visual Searchとかもやってるよ
- Amazon CloudSearch
- Full-managed
- 日本のuserはSMARTInSight, vuzz, chartwork等
- 日本のMarketの10%を担っている
- 「本日、日本語のカスタム辞書サポートがローンチされました」
- 事例
- THE TIMES: 300年に渡る新聞データをアーカイブし検索可能に
- SmugMug: 巨大写真DB。タグ検索。
- Amazon Smile(自動チャリティサービス): 1000万もの商品
- Goodreads:9億件の書籍検索
##Search Tech Deep Dive – 篠原英治(Amazon Data Services Japan SA)
- 転置インデックス、tf-idf、複数のクエリパーサをサポート
- 日本語の困難を解消(形態素解析、Stemming、片方向と両方向のSynonym、Stopword Removal)
- Automatic Scaling: ドキュメントの数、リクエストの数によって自動的にスケール
- 型: Literal, Double, Singned Integer, Text, Date
- RankingとRelevance(順位と適合性): tf-idf
- 5/29: パーティショニングの事前設定が可能に(初期投入のインデキシングの高速化)
- 8/14: IAMの連携強化
- 本日のローンチ:
- CloudTrail対応。S3にログが記録される。
- Bigram Indexing
- Customizing Japanese Tokenization("ググる"とかそういうの)
- 今月か来月にも期待できるupdateあるかも?
##CloudSearch use-case 15min x 3 ###田中佑樹 氏(ChatWork Engineer)
- ChatWorkご紹介。46万ユーザー。海外展開してるよ。USAに6人。ルクセンブルクにも。
- Mroonga単体構成->Mroonga分割構成->elasticsearch検討->CloudSearch!
- メッセージ量は現在4億件。三ヶ月で1億件溜まる。
- indexバッチの仕組み。SQSでメッセージ履歴をDynamoへ? その後にIndexへ差分バッチ。
- elasticsearchは良くも悪くもOSS
- DynamoDbLocal的なものはない
- 検証用にm1.small
- CloudWatchも対応していない
- 日本語のサポートがある!!!!
- aws-sdk-php
- Guzzleの知識が必須。
- サポートにsdkについて聞いても良い。
- POSTメソッドでsearchが対応していない。パラメタが多いと生API叩かざるをえない。
- ほぼメンテナンスフリー。検索速度は問題無い。
- 「◯◯が検索されない」って問い合わせが多い。今日のカスタマイズ辞書で対応できるね!
- まとめ
- 開発しにくさを上回る運用のしやすさ
- 日本語サポート
- 速度に問題はない
###加賀谷祐平 氏(nanapi Engineer) yuhei_kagaya
- サーバーサイド。CakePHP。Vim好き
- nanapi。月間2500万UU
- 2014年7月にオンプレからAWSへ。S3, Redis MySQL, CloudSearch
- Senna->mroonga->CloudSearch
- 規模は10万ドキュメント。m1.smallで。
- データの作り方。検索用、ソート用、表示用を一つのドキュメントにまとめている。
- 検索用:タイトル、本文、カテゴリ名の階層構造(1万9千カテゴリある)
- ソート用:PV、執筆日時
- 表示用:アウトライン、著者情報、画像URL
- MySQLに更新があったら検索データテーブルへ書き込み。callbackでCloudSearchへ。テーブルのは今でも管理画面で使っている。
- まとめ
- デフォルトのままでいい感じに検索できる
- 簡単に日本語全文検索システム
- とにかく楽
###伊東弘満 氏(schoo Infrastructure Unit Manager)
- schooは2011/10-。会員数は10万人。最大4000人の講義実績あり。
- サービスイン時には検索昨日なかった。。。
- 2014/8に検索機能リリース。それまで個別ページへのアクセスはほとんどはGoogleの検索から
- 当初はElasticsearchをEC2で自前で運用するつもりだった。
- 「Amazon CTO Night行ったけどCloudSearchかなり良さそうだったよ」「(elasticsearchで実装始めてるんだけど…)」
- 検索対象項目多いから絞った。
- まずindex設計。次にAPI設計。
- Redis
- 「直近の検索ワード」100件リスト。
- 「ランキング」SortedSet。ExpireTime 1 month
- SQSつかってindexing。画像変換とか。
- 教科書通りの使い方をしてます
##How to improve search - 兼山元太 氏(Cookpad Search Engineer)
- 弊社では使っていないよ!Solorだよ!
- Recipは1.7M、ユニークブラウザ44M
- 全体のうち82%のレシピが検索さてれ観られている
- appからcacheへの検索クエリavg:72Mbps、max:180Mbpsもある。。。
- search monitor
- クエリ毎の時間、曜日推移(検索数グラフ)
- 検索PV/UU, CTR
- blank resultも表示
- 改善改善!!!
- muninでレスポンスタイム日々確認
- 改善改善!!!
- UserとStaffからも問い合わせ出来るようになってる
- WebページにリンクがあってGoogleSpreadSheetに飛んでフィードバック出来るようになってる。今まで150意見くらい。
- 新しい料理が流行り始めた時に教えてくれたりする
- Log Analysis
- Click log is vital
- ♡Treasure Data Redshift
- HIT@3/HIT, NDCG, WTF@10とかの指標
- session編。成功を定義して、キーワード毎に集計。
- avg time, avg success rate, query pattern etc...
- カスタム辞書を使って改善(わらび餅!=わらび)「UU数少ないでしょう…」<ー簡単に変更できる仕組みが必要
- ヒエラルキカルシノニム。非対称シノニム。CloudSearchでも出来るよ!
- Reindex whle index everyday(!!!!!!)インデクシングを早くしておく。
- Query modification。前処理のスペースを作る。フィールドを限定したり。結構良い。
- Cloudsearh羨ましい。ランキングをサイド・バイ・サイドで観られるツール
- Exploit users log。関連検索!
- まとめ
- 問題を発見するツールを作る
- 改善する!