Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CROSS 2015 全文検索群雄割拠

3,806 views

Published on

2015.1.29 CROSS 2015 @大さん橋ホール

Published in: Technology

CROSS 2015 全文検索群雄割拠

  1. 1. 全文検索エンジン 群雄割拠 〜あなたが使うべきはどれだ!〜 CROSS 2015 2015.1.29
  2. 2. Agenda 1.セッション概要 2.スピーカ紹介 3.全文検索を駆け足でおさらい 4.各全文検索エンジンの紹介と 質疑&議論 5.全体質疑(時間があれば)
  3. 3. Agenda 1.セッション概要← 2.スピーカ紹介 3.全文検索を駆け足でおさらい 4.各全文検索エンジンの紹介と 質疑&議論 5.全体質疑(時間があれば)
  4. 4. 本セッションの狙い
  5. 5. 例えば5, 6年前…
  6. 6. 「全文検索を使い隊!」
  7. 7. Apache Solr or Senna
  8. 8. 現在
  9. 9. Apache Solr or Groonga(senna) or Elasticsearch or CloudSearch or …
  10. 10. ( ³ω³)ファッ!?
  11. 11. どれ使えばいいの? どこがどう違うの?
  12. 12. はっきりさせようぜ!!
  13. 13. そういう訳で、 各全文検索エンジンの 中の人や、ヘビーユーザに 集まってもらいました
  14. 14. • Elasticsearch • Elasticsearch 大谷さん • Apache Solr • クックパッド 兼山さん • Amazon CloudSearch • ChatWork 藤原さん • Groonga(Mroonga,Rroonga,Nroonga) • クリアコード 須藤さん
  15. 15. それぞれの特徴を 語ってもらいます
  16. 16. これでスッキリ! …するかも
  17. 17. 本セッションは 質疑、議論重視 (ガチ)
  18. 18. バシバシ質問 おなしゃす (ガチ)
  19. 19. 尚、本セッションの スライドは近日中に すべてどこかに上がります ハッシュタグで告知します
  20. 20. Agenda 1.セッション概要 2.スピーカ紹介← 3.全文検索を駆け足でおさらい 4.各全文検索エンジンの紹介と 質疑&議論 5.全体質疑(時間があれば)
  21. 21. Copyright Elasticsearch 2014.Copying,publishing and/or distributing without written permission is strictly prohibited Jun Ohtani • Me, Jun Ohtani / Technical Adovocate lucene-gosenコ ミ ッ タ ー ElasticSearch Server日本語版の翻訳 elasticsearch-extended-analysisの開発 http://blog.johtani.info 好き な飲み物: プレ ミ アムモルツ • Elasticsearch, founded in 2012 Products: Elasticsearch, Logstash, Kibana, Marvel, Shield Professional services: Support & development subscriptions
  22. 22. cookpad 兼山元太 日々の仕事: ・ 検索の満足度を上げる ・ 検索のバッ ク エンド の開発 ・ 辞書の作成/管理 ・ レシピのメ タ データ の作成/管理 ・ 他チームの検索関連のお手伝い 夢は世界中で使われる道具を作るこ と
  23. 23. やまかつ (@yamakatu) • 本名は秘密(うそ • ヤフー株式会社 ヤフオクカンパニー • 検索、統計、機械学習しつつ、メイン は育児 • ぶっちゃけ、Groonga族とCloudSearch はまともに使ったことない(キリ
  24. 24. Agenda 1.セッション概要 2.スピーカ紹介 3.全文検索を駆け足でおさらい ← 4.各全文検索エンジンの紹介と 質疑&議論 5.全体質疑(時間があれば)
  25. 25. この後がマニアックなので その前に駆け足でおさらい
  26. 26. 全文検索エンジン is 何?
  27. 27. 1.全文検索機能 2.周辺機能
  28. 28. 1.全文検索機能← 2.周辺機能
  29. 29. 全文検索機能の おさらい
  30. 30. 入力:キーワード 出力:そのキーワード を含むドキュメント
  31. 31. How?
  32. 32. 転置インデックス Inverted index と形態素解析とN-Gram
  33. 33. Why 転置インデックス?
  34. 34. RDBの 一般的インデックス アルゴリズム B+Tree
  35. 35. RDBの 一般的インデックス アルゴリズム B+Tree じゃムリ
  36. 36. RDBでインデックスを 貼らずに Select (略) where id = 4 1 4 9 10 11 12 13 15 16 20 25 full scan(ex. 11 times) ぜんぶで11件
  37. 37. B+Tree (ex. 4 times) B+Treeでインデクシング Select (略) where id = 4
  38. 38. 4 times < 11 times データ量が増加すると、 差は指数的に増加
  39. 39. B+Tree〜 速い〜 最高〜
  40. 40. しかし、B+Treeで 全文検索はむりぽ
  41. 41. Why?
  42. 42. 「くろす」で 全文検索したい場合 Select 略 where text like “%くろす%”
  43. 43. 「くろす」で 全文検索したい場合 Select 略 where text like “%くろす%” つまり部分一致
  44. 44. B+Treeでテキストの部分一 致を実現しようとしても… 各文字列の中にキーワードが含まれている かどうかはfull scanしてみないとわからな い
  45. 45. そこで 転置インデックス
  46. 46. 転置インデックス(簡略) 文書番号 文書 1 今年のCROSSは横浜 2 横浜行くの久しぶり 3 とりあえずモルツ もと文書
  47. 47. 転置インデックス(簡略) 文書番号 文書 1 今年のCROSSは横浜 2 横浜行くの久しぶり 3 とりあえずモルツ 単語 出現文書 横浜 1, 2 の 1, 2 CROSS 1 … … もと文書 転置 インデックス
  48. 48. 転置インデックス(簡略) 文書番号 文書 1 今年のCROSSは横浜 2 横浜行くの久しぶり 3 とりあえずモルツ 単語 出現文書 横浜 1, 2 の 1, 2 CROSS 1 … … もと文書 転置 インデックス 「CROSS」で検索
  49. 49. 転置インデックス(簡略) 文書番号 文書 1 今年のCROSSは横浜 2 横浜行くの久しぶり 3 とりあえずモルツ 単語 出現文書 横浜 1, 2 の 1, 2 CROSS 1 … … もと文書 転置 インデックス 「CROSS」で検索
  50. 50. 転置インデックス(簡略) 文書番号 文書 1 今年のCROSSは横浜 2 横浜行くの久しぶり 3 とりあえずモルツ 単語 出現文書 横浜 1, 2 の 1, 2 CROSS 1 … … もと文書 転置 インデックス 「CROSS」で検索 出現文書:1
  51. 51. 転置インデックスを用いて 全文検索を実現
  52. 52. 補足 1. 最近はRDBでも転置インデック スが実装されてます MySQL(innoDB, MyISAM): FullTextSearch PostgreSQL: GIST Index, GIN Index Oracle:Oracle Text
  53. 53. 補足 2. B+treeでも 前方一致検であれば有効 select 略 where text like “くろす%”
  54. 54. 1.全文検索 2.周辺機能←
  55. 55. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  56. 56. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  57. 57. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  58. 58. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  59. 59. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  60. 60. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  61. 61. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  62. 62. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション
  63. 63. • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション 周辺機能のおさらい ノード1 シャード1台
  64. 64. • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション 周辺機能のおさらい ノード1 シャード1台 ノード2 シャード2 2台 ノード1 シャード1 検索クエリへの応答速度向上 インデクシングの高速化
  65. 65. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション ノード1 シャード1台
  66. 66. 周辺機能のおさらい • ハイライト • スニペット • ソート • ページング • サジェスト • もしかして • 絞込(カテゴリ) • シャーディング • レプリケーション ノード1 シャード1台 ノード2 (slave) 2台 ノード1 (master) 検索負荷の分散 シャードシャード
  67. 67. 1.全文検索 2.周辺機能
  68. 68. Agenda 1.セッション概要 2.スピーカ紹介 3.全文検索を駆け足でおさらい 4.各全文検索エンジンの紹介と 質疑&議論← 5.全体質疑(時間があれば)
  69. 69. • Elasticsearch • Elasticsearch 大谷さん • Apache Solr • クックパッド 兼山さん • Amazon CloudSearch • ChatWork 藤原さん • Groonga(Mroonga,Rroonga,Nroonga) • クリアコード 須藤さん
  70. 70. 大事なことなので 2回言います
  71. 71. 本セッションは 質疑、議論重視 (ガチ)
  72. 72. バシバシ質問 おなしゃす (ガチ)
  73. 73. Twitterでもハッシュタグ (#cross2015_c)付きで つぶやいていただければ 質問拾います (会場からの質問を優先しますので 時間切れしたら、ごめんなさい)

×