Click here to load reader
Upload
shuji-watanabe
View
837
Download
9
Embed Size (px)
DESCRIPTION
Classmethod主催 Developersui Meetup CM:道での発表資料。
Citation preview
CloudSearch による 全文検索 2014.08.01 CM: 道 クラスメソッド 渡辺修司
自己紹介
渡辺 修司✓2013年8月入社 ✓前職まではJava系の開発など ✓java-ja, JJUG CCC ✓JUnit実践入門 ✓メンバーズポータル ✓フロントエンド(Ember.js) ✓開発系のAWS案件
クラスメソッドメンバーズ
Amazon !CloudSearch
全文検索とは?✓特定の単語などを指定し、コンテンツ(テキスト)にその単語が含まれるかを検索すること ✓Google(検索エンジン) ✓Amazonの商品検索 ✓社内ドキュメントの検索
RDBのlike検索✓インデックスが効かない ✓負荷が大きくクエリーが重い ✓前方一致のみとするパターンも有 ✓データ量が増えるとより重くなる ✓語彙は考慮されない ✓ファーストと1stは別単語 ✓RDBに全文検索用アドオンで対応も可
全文検索エンジン✓テキストを適切な単語に分解し、専用のインデックスを構築する ✓Namazu ✓Apache Lucene / Solr ✓Senna ✓Amazon CloudSearch
全文検索エンジンの仕組み1.テキストの形態素解析 2.出現単語の解析 3.インデックスへの反映
形態素解析✓言語の文法などを考慮し、文章を適切なパーツ(形態素)に分割する技術クラスメソッドメンバーズはお客様のAmazon Web Services(AWS)利用を総合的に支援するサービスです。
クラス | メソッド | メンバーズ | は | お客様 | の | Amazon | Web | Services |( | AWS | ) | 利用 | を | 総合的 | に | 支援 | する | サービス | です | 。
出現単語の解析クラス 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
クラスメソッド
Amazon CloudSearchの特徴✓Apache Solrベースの全文検索エンジン ✓フルマネージド ✓オートスケーリング ✓多言語対応(日本語含) ✓インデックスのカスタマイズ ✓強調表示 ✓サジェスチョン
ドメイン✓全文検索を行う基本単位 ✓登録したテキストがすべて対象 ✓単位が異なる場合はドメインを分ける ✓商品説明と販売会社のテキスト
✓スケーリングオプション(後で) ✓インスタンスタイプ ✓レプリケーション数
インデックス✓データの構造と検索特性を定義
Name Type Search Analysis Schema
title text ✓ Japanese
author text ✓ Japanese
categories literal-array ✓contents text ✓ Japanese
postDate date
データのインポート✓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'><h2>はじめに</h2> // 中略 </field> <field name='categories'>AWS</field> <field name='categories'>クラウド</field> </add> <delete id='109999'> </delete> </batch>
オートスケール✓オートスケール ✓インスタンスタイプ ✓レプリケーション数 ✓自動でスケールするがラグがある ✓スパイクには対応できない ✓スケーリングオプションの設定
インスタンスタイプ✓small, large, xlarge, 2xlarge ✓オートスケールで縮退時のインスタンス ✓検索速度向上 ✓アップロード容量向上
レプリケーション数✓インスタンス数 ✓検索キャパシティ向上 ✓アップロードキャパシティ向上 ✓同一AZに配備
Multi AZオプション✓AZをまたいでインスタンスを作成 ✓AZ分断障害に対応 ✓2倍のインスタンスになるので注意
スケーリングオプション✓データアップロードキャパシティ ✓インスタンスタイプ、レプリ数 ✓クエリー速度 ✓インスタンスタイプ ✓クエリーのキャパシティ ✓レプリ数 ✓耐障害性 → Multi AZオプション
CloudSearchの利用✓ドキュメントのアップロード ✓インデックスの再構築 ✓検索API
ドキュメントのアップロード✓バッチファイルを作成 ✓JSON or XML ✓HTMLやdocなども対応 ✓インデックスとフィールドを対応付ける ✓ローカルファイル、S3、DynamoDB
CloudSearch CLI✓コマンドラインツール(要Java7+)cs-import-documents --format xml --source https://s3-us-west-2.amazonaws.com/developersio-entries-data/* --domain-name developersio-cloudsearch
S3等からのアップロードを推奨
ヒント✓CloudSearchは停止できない ✓ドメインを削除したら再構築が必要 ✓再構築時にはドキュメントをアップロードしなおす必要有 ✓S3に置くことでバックアップも兼ねる
インデックスの再構築✓シノニム(同義語)を更新した ✓無視する単語を更新した ✓インデックス定義を更新した ✓インデックスの自動反映(無料) ✓ドキュメントの追加・削除時 ✓内部のチューニング
検索要 Web APIの利用✓エンドポイント ✓クエリ ✓シンプルクエリ、luceneなど ✓スコア ✓ハイライト ✓サジェスチョン
検索精度の向上✓同義語(シノニム) ✓除外ワード
同義語(シノニム)✓同義語の単語を定義 ✓クラスメソッド、クラスメソットクラメソ、クラメゾ、Classmethod
✓typoも考慮 ✓スコアに影響
除外ワード✓システムとして影響が低い単語 ✓する ✓サービス ✓インデックスが小さくなる可能性 ✓スコアなど精度向上
CloudSearchの料金✓インスタンス ✓ドキュメントのアップロード ✓インデックス構築 ✓アウトバウンド通信料
インスタンスによる課金✓スケーリングオプションの設定 ✓最小のインスタンスタイプ/数 ✓負荷に応じてオートスケール ✓どの程度でスケールすんの?
✓search.t1.small ✓$0.13/hour (約1万円/月) ✓EC2と異なりストップできない
アップロードによる課金✓1,000件毎に$0.1 ✓バッチサイズは5MBまで
インデックス再構築の課金✓保存ドキュメント1GBにつき約$1 ✓自動構築されるインデックスは無料 ✓アップロード時 ✓オートスケールなどの内部処理
まとめ✓すべてお任せの全文検索サービス ✓DBスキーマ風にインデックスを定義 ✓日本語にも対応 ✓ドキュメントはバッチでアップロード ✓検索精度を調整可能 ✓検索はWeb API ✓最小構成で、約1万円/月