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

3,670 views

Published on

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

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,670
On SlideShare
0
From Embeds
0
Number of Embeds
361
Actions
Shares
0
Downloads
9
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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

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

×