Amazon CloudSearch
AWS  Black  Belt  Tech  Webinar  2014  (旧マイスターシリーズ)
アマゾンデータサービスジャパン株式会社
ソリューションアーキテクト  篠原  英治
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
Amazon  CloudSearchとは
•  フルマネージドなクラウド型検索索エンジン
•  検索索ソリューションが容易易に導⼊入可能
•  2014年年5⽉月現在  33  の⾔言語をサポート
•  豊富な検索索機能
–  ハイライト表⽰示
–  サジェスト(AutoComplete)
–  地理理空間検索索
CloudSearchの利利⽤用イメージ
•  ドメインの作成
CloudSearchの利利⽤用イメージ
•  データ投⼊入(東京メトロ南北北線の駅名&路路線)
CloudSearchの利利⽤用イメージ
•  フィールドの定義
CloudSearchの利利⽤用イメージ
•  “JR⼭山⼿手線”
CloudSearchの利利⽤用イメージ
•  “⿇麻布”  or  “⼀一丁⽬目”
Search  Engine
•  RDBMS
–  特定(specific)なものを探すのに向いている
–  例例)  100万レコードから特定の1件のデータを取得
•  Search  Engine
–  任意(arbitrary)のものを探すのに向いている
–  例例)  フリーワードでの検索索、カテゴリでの検索索
Amazon RDS
Amazon
CloudSearch
Search  Engine
•  ⼤大量量のドキュメントから特定の⽂文字列列を検索索
–  grepのように最初から1つ1つ探すのは⾮非常に時間がかかる
–  素早く引き当てられるようにあらかじめインデックスを作っておく
-‐‑‒  映画のタイトル
-‐‑‒  監督/出演者
-‐‑‒  映画の紹介⽂文
-‐‑‒  映画館の情報
Amazon RDS
検索索ドキュメントの構造
DynamoDB
-‐‑‒  ユーザービヘイビア情報
検索索ドキュメントの構造
Amazon S3
-‐‑‒  画像/動画
-‐‑‒  静的コンテンツ
検索索ドキュメントの構造
インデックスするドキュメントの構造
Field Value
id tt0371746
title Iron  Man
description When  wealthy  industrialist  Tony  Stark  is  forced  to  build  an  armored  suit  
after  a  life-‐‑‒threatening  incident,  he  ultimately  decides  to  use  its  technology  
to  fight  against  evil.
director John  Favreau
actors Robert  Downey  Jr.,  Gwyneth  Paltrow,  Terrence  Howard  ...
rating 7.9
release_̲date 2008-‐‑‒05-‐‑‒02T00:00:00Z
検索したい情報は、DynamoDBやRDSに保持すると共にCloudSearchにも入れる
検索する必要がない情報(例: S3の画像のパス)はCloudSearchには入れない
転置インデックス
•  どのキーワードがどのドキュメントに存在するか
あらかじめ索索引を作成しておく
Term Documents (Posting List)
Iron The Man in the Iron Mask
Iron Man
The Iron Giant
...
Man Rain Man
The Man in the Moon
The Third Man
Iron Man
...
Automatic  Scaling
•  ドキュメントのサイズ/数および検索索リクエスト数
によって⾃自動的にスケール
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
2014年年3⽉月  CloudSearch  Launch
•  多言語対応(日本語含む33言語)
•  各言語ごとのテキスト解析
•  Algorithmic Stemming
•  新しいデータタイプ
•  地理空間検索
•  サジェスト(AutoComplete)検索
•  ハイライト表示
•  Term boosting
•  強化された範囲検索	
•  検索フィルタ
•  インスタンスタイプのコントロール
•  Multi-AZ
•  IAM Integration
•  リージョン拡大(Tokyo, Sydney, Sao Paulo)
2014年年3⽉月  CloudSearch  Launch
Arabic,  
Armenian,  
Basque,  
Bulgarian,  
Catalan,  
Simplified  Chinese,  
Traditional  Chinese,  
Czech,  
Danish,  
Dutch,
English,  
Finnish,  
French,  
Galician,  
German,  
Greek,  
Hindi,  
Hungarian,  
Indonesian,  
Irish,  
Italian,  
Japanese,
Korean,  
Latvian,  
Norwegian,  
Persian,  
Portuguese,  
Romanian,  
Russian,  
Spanish,  
Swedish,  
Thai,  
Turkish
•  Support  for  33  languages
2014年年3⽉月  CloudSearch  Launch
•  Per-‐‑‒Field  Language  Control
※  2014年年3⽉月Launchにおける“Multiple  Languages”は⾼高度度な⾔言語判別    
    (Language  Detection)機能ではなくシンプルなトークナイズ
2014年年3⽉月  CloudSearch  Launch
•  Highlighting
/search&q=iron+man&highlight.plot={"format":"text"}!
"hit": [{!
"id": "tt1228705",!
"fields": {!
"title": "Iron Man 2”!
},!
"highlights": {!
"plot": "Tony Stark has declared himself !
*Iron* *Man* and installed world...!
} },... !
2014年年3⽉月  CloudSearch  Launch
•  Suggestions
/suggest?q=ir&suggester=title_sug
"suggest": {"query": "iro", "found": 5,!
"suggestions": [!
{“suggestion”: “Iron Man”,…"id": "tt0371746"},!
{"suggestion": "Iron Man 2”,…"id”:"tt1228705"},!
...!
2014年年3⽉月  CloudSearch  Launch
•  IAM  Integration
–  Access  Policy:  Search(検索索)とDocument(データ更更新)
{!
"Version":"2012-10-17",!
"Statement": [!
{ "Effect": "Allow",

"Action": ["cloudsearch:*"],

"Resource": "arn:aws:cloudsearch:us-east-1:111122223333:domain/imdb-movies" },!
{ "Effect": "Deny",!
"Action": ["cloudsearch:DeleteDomain"],!
"Resource": "arn:aws:cloudsearch:us-east-1:111122223333:domain/imdb-movies" }!
]!
}!
2014年年3⽉月  CloudSearch  Launch
•  Geo-‐‑‒Spatial  support
–  Latitude-‐‑‒Longitude  data  types
•  範囲/バウンディングボックス検索索
–  Distance  sort
•  球⾯面上の距離離(haversin)
•  near  me  等
2014年年3⽉月  CloudSearch  Launch
•  Enhanced  Availability
–  Multi  Availability-‐‑‒Zone
2014年年3⽉月  CloudSearch  Launch
•  Enhanced  Availability
–  あらかじめInstance  SizeとScaling  Optionsが指定可能
•  ⼤大量量データをインデクシングする場合
•  ⼤大量量の検索索リクエストを受付ける場合
2014年年3⽉月  CloudSearch  Launch
"When a Man Loves a Woman"!
"Wonder Woman"!
"The Woman in Black”!
...!
"The Lawnmower Man"!
"Dead Man"!
"Repo Man”!
...!
•  Term  Boosting
–  (or 'man' 'woman')&q.parser=structured!
–  (or (term boost=5 'man’) 'woman')&q.parser=structured!
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
CloudSearchへのデータ投⼊入
•  データの形式
Double
Date
Signed  Integer Text
Literal
CloudSearchへのデータ投⼊入
•  Field  Types
Type 説明
date yyyy-mm-ddT00:00:00Zの形式。timestamp含む
date-array 複数のdate
double double-precision 64-bit 浮動小数点数
double-array 複数のdouble
int 64-bit 符号付き整数
int-array 複数のint
latlon latitude(緯度)longitude(経度)ペア.
literal 完全一致用文字列
literal-array 複数のliteral
text 言語指定可能な全文検索用フィールド
text-array 複数のtext
CloudSearchへのデータ投⼊入
Processing
Script
Queuing Batching
Amazon  EC2
Amazon  EC2
Amazon  
CloudSearch
Amazon  SQS
Source
System
Search  Data  Format  (SDF)
CloudSearchへのデータ投⼊入
•  SDF(Search  Data  Format)への⾃自動変換機能
–  Comma  Separated  Value  (.csv)
–  Adobe  Portable  Document  Format  (.pdf)
–  HTML  (.htm,  .html)
–  Microsoft  Excel  (.xls,  .xlsx)
–  Microsoft  PowerPoint  (.ppt,  .pptx)
–  Microsoft  Word  (.doc,  .docx)
–  Text  Documents  (.txt)
CloudSearchへのデータ投⼊入
•  ローカル、S3、DynamoDBからUpload可能
CloudSearchへのデータ投⼊入(コンソールCSV)
生成したSDFフォーマットのファイルを
ダウンロードすることも出来る
1
2
3
CloudSearchへのデータ投⼊入(HTTP)
•  エンドポイント
–  http(s)://<  document  service  endpoint  >/2013-‐‑‒01-‐‑‒01/documents/batch
•  ヘッダ
–  Accept:  application/json  
–  Content-‐‑‒Type:  application/json  
–  Host:  doc-‐‑‒yamanote-‐‑‒xxx.ap-‐‑‒northeast-‐‑‒1.cloudsearch.amazonaws.com
•  コンテンツ
{“type”:“add”,“id”:“yamanote_̲4”,“fields”:{“id”:“003”,“name”:“渋⾕谷"}},  
{“type”:“add”,“id”:“yamanote_̲5”,“fields”:{“id”:“004”,“name”:“原宿"}},
{"type":"delete","id":"yamanote_̲20"}
CloudSearchへのデータ投⼊入(Reference  Architecture)
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
Japanese  Text  Processing
•  形態素解析(Morphological  Analysis)
–  ⾃自然⾔言語で書かれた⽂文を形態素の列列に分割し、それぞれの品詞を
判別する作業  (http://ja.wikipedia.org/wiki/形態素解析)
•  英語のようにスペースで区切切られている⾔言語と異異なり、
•  ⽇日本語は⽇日本語⽤用の構⽂文解析が必要
–  例例)  彼はエンジニアだ
•  彼(名詞-‐‑‒代名詞)/は(助詞-‐‑‒係助詞)/エンジニア(名詞-‐‑‒⼀一般)/だ(助動詞)
•  “エンジニア”を抽出してインデックスを作ることにより、
•  ”エンジニア”で検索索された際に、⾼高速なレスポンスの実現が可能
Japanese  Text  Processing
•  正規化(Normalize)
–  エンジニア(半⾓角カナ)で検索索された場合も、エンジニア(全⾓角カナ)で検
索索された場合も、どちらの場合もヒットして欲しい
–  CloudSearchでサポートされている機能
–  更更に突っ込んだ正規化に関しては要件に応じて下記のような実装
を⾃自分で⾏行行う事が望ましい場合もある
•  NFD(Canonical  Decomposition):  正規化形式D
•  NFC(Canonical  Composition):  正規化形式C
•  NFKD(Compatibility  Decomposition):  正規化形式KD
•  NFKC(Compatibility  Composition):  正規化形式KC
Japanese  Text  Processing
•  Stemming
–  飲んだ  →  飲ん(動詞-‐‑‒⾃自⽴立立,  baseForm:飲む)/だ(助動詞)  →  飲む
–  ステミング辞書への追加  (API/SDKでも追加可能)
Japanese  Text  Processing
•  Stopword  Removal
–  「の」、「は」、「か」といった意味の無い⾔言葉葉を除く
–  ステミング同様Stopword辞書への追加  (API/SDKでも追加可能)
Japanese  Text  Processing
•  Synonym  Addition
–  Synonym  =  同義語
•  「ベニス」「ベネチア」「ヴェネチア」
•  「昨年年」「去年年」
–  同じ意味なので検索索された場合にヒットさせる
–  Stopwords,  Stemming同様に追加可能
Japanese  Text  Processing
•  Synonym  Addition
–  シノニム辞書への追加  (API/SDKでも追加可能)
•  Alias
–  pupilで検索索してstudentのドキュメントがヒット
–  studentで検索索してpupilのドキュメントはヒットしない
•  Group
–  1st,  first,  oneどれで検索索しても
–  1st,  first,  oneの全てのドキュメントがヒット
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
Ranking  and  Relevance(順位と適合性)
•  ドキュメントにスコアを付けてソートする
–  TF-‐‑‒IDF  –  uniqueness  and  presence
•  TF:  term  frequency
–  ドキュメント内でそのキーワードがどれだけ出てくるか
•  IDF:  inverse  document  frequency
–  ドメイン内の全てのドキュメントの中で、
–  そのキーワードがどれだけユニークか
Ranking  and  Relevance(順位と適合性)
•  スコア(_̲score)によるソート
Ranking  and  Relevance(順位と適合性)
•  A/Bテスト
–  マネージメントコンソールで⽐比較しながら調整
Ranking  and  Relevance(順位と適合性)
•  ソート
–  重み付けによってスコア(_̲score)を調整
•  ドキュメントの価値(ユーザーによるレーティング  等)
•  ユーザー⾏行行動(どれだけ⾒見見られたか?  等)
•  フレッシュネス(新しいドキュメントの評価を上げる)
–  スコア以外のソートも可能
•  text/literalのフィールドで辞書順
•  int/doubleのフィールドで数字順
•  dateのフィールドで⽇日付順
Ranking  and  Relevance(順位と適合性)
•  Expressions
Arithmetic + - * / %
Bitwise | & ^ ~ << >> >>>
Boolean && || ! ?:
Comparison < <= == >= >
Mathematical functions abs ceil exp floor ln log2 log10 logn max min pow sqrt pow
Trigonometric functions acos acosh asin asinh atan atan2 atanh cos cosh sin sinh tanh tan
haversin distance function haversin(38.958687,-77.343149,latitude,longitude)
Ranking  and  Relevance(順位と適合性)
•  Query  Parser
–  Simple  Query  Parser
•  ベーシックなマッチング
–  Structured  Query  Parser
•  複雑なboolean検索索やウェイト付け
–  Lucene  Query  Parser
•  CloudSearchではパフォーマンスは保証されない
•  あいまい検索索,  正規表現  等
–  Dismax  Query  Parser
•  Lucene  Query  Parserを補うためにSolrで開発されたクエリパーサー
•  単語の出現位置の考慮  等
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  新バージョンは2013-‐‑‒01-‐‑‒01
–  Tokyoリージョン
•  作成できるドメインは新バージョンのみ
–  新規のお客様
•  どのリージョンであっても⾃自動的に新バージョンでのドメイン作成
–  旧バージョンのドメインをお持ちのお客様
•  旧バージョンのCloudSearch提供リージョンでのみ、旧バージョン
のドメインを作成可能
–  新バージョンのご利利⽤用を推奨
旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  新バージョンは2013-‐‑‒01-‐‑‒01
–  SDK、APIも変更更
•  例例)  AWS  SDK  for  Ruby
–  AWS  CLI  は  新バージョンのみサポート
•  AWS  Command  Line  Interface  1.3.6  からCloudSearchが利利⽤用可能
•  https://aws.amazon.com/releasenotes/CLI/8906204440930658
旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  移⾏行行に関するドキュメント(現状、英語のみ)
–  http://docs.aws.amazon.com/cloudsearch/latest/
developerguide/migrating.html
旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  注意点:  Metricsの取得
–  旧バージョンでは以下のMetricsが取得可能であった
•  Total  Searches
–  検索索されたキーワード上位を表⽰示
•  Searches  with  No  Results
–  検索索されたキーワードのうち0件ヒットだったものを表⽰示
–  シノニムに追加することで検索索の精度度向上が⾒見見込める
–  新バージョンでは上記のMetricsが表⽰示されない
•  より良良い分析結果の提供を計画中であるが、
•  現状はご⾃自⾝身で集計を⾏行行っていただくことを推奨
Agenda
•  Amazon  CloudSearchについて
•  2014年年3⽉月  CloudSearch  Launch
•  CloudSearchへのデータ投⼊入
•  Japanese  Text  Processing
•  Ranking  and  Relevance(順位と適合性)
•  旧バージョン(2011-‐‑‒02-‐‑‒01)からの移⾏行行
•  まとめ
•  Q&A
Amazon  CloudSearch
•  他のAWSマネージドサービス(S3,DynamoDB等)と同様の利利点
•  簡単なセットアップ/オペレーション(コンソール,  SDK,  CLI)
•  キャパシティに関する設計/実装が不不要(Auto  Scaling)
•  低リスクで素早く導⼊入可能(Multi  AZ)
•  2014年年3⽉月のLaunchで様々な機能追加
–  ⽇日本のお客様にとっては  ⽇日本語サポート/Tokyoリージョン
•  従量量課⾦金金制(無料料枠あり)  /  良良いコスト効率率率
–  Simple  Monthly  Calculator(http://calculator.s3.amazonaws.com/)で概算
を⾒見見積り可能
Amazon  CloudSearch
•  ⽇日本のお客様の利利⽤用も増加中
–  http://aws.amazon.com/jp/cloudsearch/testimonials/
•  Go  Global  in  minutes!
参考資料料
•  Amazon  CloudSearch  Developer  Guide
–  http://docs.aws.amazon.com/cloudsearch/latest/
developerguide/what-‐‑‒is-‐‑‒cloudsearch.html
•  Amazon  CloudSearch  FAQ
–  https://aws.amazon.com/jp/cloudsearch/faqs/
•  Amazon  CloudSearch  価格
–  https://aws.amazon.com/jp/cloudsearch/pricing/

AWS Black Belt Techシリーズ Amazon CloudSearch