cloudsearchによる全文検索 - cm:道 2014/08/01

34

Click here to load reader

Upload: shuji-watanabe

Post on 01-Dec-2014

837 views

Category:

Technology


9 download

DESCRIPTION

Classmethod主催 Developersui Meetup CM:道での発表資料。

TRANSCRIPT

Page 1: CloudSearchによる全文検索 - CM:道 2014/08/01

CloudSearch による 全文検索 2014.08.01 CM: 道 クラスメソッド 渡辺修司

Page 2: CloudSearchによる全文検索 - CM:道 2014/08/01

自己紹介

Page 3: CloudSearchによる全文検索 - CM:道 2014/08/01

渡辺 修司✓2013年8月入社 ✓前職まではJava系の開発など ✓java-ja, JJUG CCC ✓JUnit実践入門 ✓メンバーズポータル ✓フロントエンド(Ember.js) ✓開発系のAWS案件

Page 4: CloudSearchによる全文検索 - CM:道 2014/08/01

クラスメソッドメンバーズ

Page 5: CloudSearchによる全文検索 - CM:道 2014/08/01

Amazon !CloudSearch

Page 6: CloudSearchによる全文検索 - CM:道 2014/08/01

全文検索とは?✓特定の単語などを指定し、コンテンツ(テキスト)にその単語が含まれるかを検索すること ✓Google(検索エンジン) ✓Amazonの商品検索 ✓社内ドキュメントの検索

Page 7: CloudSearchによる全文検索 - CM:道 2014/08/01

RDBのlike検索✓インデックスが効かない ✓負荷が大きくクエリーが重い ✓前方一致のみとするパターンも有 ✓データ量が増えるとより重くなる ✓語彙は考慮されない ✓ファーストと1stは別単語 ✓RDBに全文検索用アドオンで対応も可

Page 8: CloudSearchによる全文検索 - CM:道 2014/08/01

全文検索エンジン✓テキストを適切な単語に分解し、専用のインデックスを構築する ✓Namazu ✓Apache Lucene / Solr ✓Senna ✓Amazon CloudSearch

Page 9: CloudSearchによる全文検索 - CM:道 2014/08/01

全文検索エンジンの仕組み1.テキストの形態素解析 2.出現単語の解析 3.インデックスへの反映

Page 10: CloudSearchによる全文検索 - CM:道 2014/08/01

形態素解析✓言語の文法などを考慮し、文章を適切なパーツ(形態素)に分割する技術クラスメソッドメンバーズはお客様のAmazon Web Services(AWS)利用を総合的に支援するサービスです。

クラス | メソッド | メンバーズ | は | お客様 | の | Amazon | Web | Services |( | AWS | ) | 利用 | を | 総合的 | に | 支援 | する | サービス | です | 。

Page 11: CloudSearchによる全文検索 - CM:道 2014/08/01

出現単語の解析クラス 1

メソッド 1

メンバーズ 1

は 1

お客様 1

の 1

Amazon 1

Web 1

Services 1

AWS 1

を 1

総合的 1

に 1

支援 1

する 1

サービス 1

です 1

✓出現回数 ✓助詞などを除外 ✓ユーザ辞書 ✓同じ意味の単語 ✓重要な単語 ✓除外したい単語

[Group] Amazon Web Services Amazon Web Service AWS

クラスメソッド

Page 12: CloudSearchによる全文検索 - CM:道 2014/08/01

Amazon CloudSearchの特徴✓Apache Solrベースの全文検索エンジン ✓フルマネージド ✓オートスケーリング ✓多言語対応(日本語含) ✓インデックスのカスタマイズ ✓強調表示 ✓サジェスチョン

Page 13: CloudSearchによる全文検索 - CM:道 2014/08/01

ドメイン✓全文検索を行う基本単位 ✓登録したテキストがすべて対象 ✓単位が異なる場合はドメインを分ける ✓商品説明と販売会社のテキスト

✓スケーリングオプション(後で) ✓インスタンスタイプ ✓レプリケーション数

Page 14: CloudSearchによる全文検索 - CM:道 2014/08/01

インデックス✓データの構造と検索特性を定義

Name Type Search Analysis Schema

title text ✓ Japanese

author text ✓ Japanese

categories literal-array ✓contents text ✓ Japanese

postDate date

Page 15: CloudSearchによる全文検索 - CM:道 2014/08/01

データのインポート✓JSON / XMLをアップロード<batch> <add id='105538'> <field name='title'>オンプレWindows環境のAWSへのバックアップ方法いろいろ 2014年7月版</field> <field name='link'>http://dev.classmethod.jp/cloud/backup_onpremises_windows/</field> <field name='pub_date'>2014-07-21T14:00:21Z</field> <field name='content'>&lt;h2&gt;はじめに&lt;/h2&gt; // 中略 </field> <field name='categories'>AWS</field> <field name='categories'>クラウド</field> </add> <delete id='109999'> </delete> </batch>

Page 16: CloudSearchによる全文検索 - CM:道 2014/08/01

オートスケール✓オートスケール ✓インスタンスタイプ ✓レプリケーション数 ✓自動でスケールするがラグがある ✓スパイクには対応できない ✓スケーリングオプションの設定

Page 17: CloudSearchによる全文検索 - CM:道 2014/08/01

インスタンスタイプ✓small, large, xlarge, 2xlarge ✓オートスケールで縮退時のインスタンス ✓検索速度向上 ✓アップロード容量向上

Page 18: CloudSearchによる全文検索 - CM:道 2014/08/01

レプリケーション数✓インスタンス数 ✓検索キャパシティ向上 ✓アップロードキャパシティ向上 ✓同一AZに配備

Page 19: CloudSearchによる全文検索 - CM:道 2014/08/01

Multi AZオプション✓AZをまたいでインスタンスを作成 ✓AZ分断障害に対応 ✓2倍のインスタンスになるので注意

Page 20: CloudSearchによる全文検索 - CM:道 2014/08/01

スケーリングオプション✓データアップロードキャパシティ ✓インスタンスタイプ、レプリ数 ✓クエリー速度 ✓インスタンスタイプ ✓クエリーのキャパシティ ✓レプリ数 ✓耐障害性 → Multi AZオプション

Page 21: CloudSearchによる全文検索 - CM:道 2014/08/01

CloudSearchの利用✓ドキュメントのアップロード ✓インデックスの再構築 ✓検索API

Page 22: CloudSearchによる全文検索 - CM:道 2014/08/01

ドキュメントのアップロード✓バッチファイルを作成 ✓JSON or XML ✓HTMLやdocなども対応 ✓インデックスとフィールドを対応付ける ✓ローカルファイル、S3、DynamoDB

Page 23: CloudSearchによる全文検索 - CM:道 2014/08/01

CloudSearch CLI✓コマンドラインツール(要Java7+)cs-import-documents --format xml --source https://s3-us-west-2.amazonaws.com/developersio-entries-data/* --domain-name developersio-cloudsearch

S3等からのアップロードを推奨

Page 24: CloudSearchによる全文検索 - CM:道 2014/08/01

ヒント✓CloudSearchは停止できない ✓ドメインを削除したら再構築が必要 ✓再構築時にはドキュメントをアップロードしなおす必要有 ✓S3に置くことでバックアップも兼ねる

Page 25: CloudSearchによる全文検索 - CM:道 2014/08/01

インデックスの再構築✓シノニム(同義語)を更新した ✓無視する単語を更新した ✓インデックス定義を更新した ✓インデックスの自動反映(無料) ✓ドキュメントの追加・削除時 ✓内部のチューニング

Page 26: CloudSearchによる全文検索 - CM:道 2014/08/01

検索要 Web APIの利用✓エンドポイント ✓クエリ ✓シンプルクエリ、luceneなど ✓スコア ✓ハイライト ✓サジェスチョン

Page 27: CloudSearchによる全文検索 - CM:道 2014/08/01

検索精度の向上✓同義語(シノニム) ✓除外ワード

Page 28: CloudSearchによる全文検索 - CM:道 2014/08/01

同義語(シノニム)✓同義語の単語を定義 ✓クラスメソッド、クラスメソットクラメソ、クラメゾ、Classmethod

✓typoも考慮 ✓スコアに影響

Page 29: CloudSearchによる全文検索 - CM:道 2014/08/01

除外ワード✓システムとして影響が低い単語 ✓する ✓サービス ✓インデックスが小さくなる可能性 ✓スコアなど精度向上

Page 30: CloudSearchによる全文検索 - CM:道 2014/08/01

CloudSearchの料金✓インスタンス ✓ドキュメントのアップロード ✓インデックス構築 ✓アウトバウンド通信料

Page 31: CloudSearchによる全文検索 - CM:道 2014/08/01

インスタンスによる課金✓スケーリングオプションの設定 ✓最小のインスタンスタイプ/数 ✓負荷に応じてオートスケール ✓どの程度でスケールすんの?

✓search.t1.small ✓$0.13/hour (約1万円/月) ✓EC2と異なりストップできない

Page 32: CloudSearchによる全文検索 - CM:道 2014/08/01

アップロードによる課金✓1,000件毎に$0.1 ✓バッチサイズは5MBまで

Page 33: CloudSearchによる全文検索 - CM:道 2014/08/01

インデックス再構築の課金✓保存ドキュメント1GBにつき約$1 ✓自動構築されるインデックスは無料 ✓アップロード時 ✓オートスケールなどの内部処理

Page 34: CloudSearchによる全文検索 - CM:道 2014/08/01

まとめ✓すべてお任せの全文検索サービス ✓DBスキーマ風にインデックスを定義 ✓日本語にも対応 ✓ドキュメントはバッチでアップロード ✓検索精度を調整可能 ✓検索はWeb API ✓最小構成で、約1万円/月