狠狠撸

狠狠撸Share a Scribd company logo
全文検索エンジン
群雄割拠
?あなたが使うべきはどれだ!?
CROSS 2015
2015.1.29
Agenda
1.セッション概要
2.スピーカ紹介
3.全文検索を駆け足でおさらい
4.各全文検索エンジンの紹介と
質疑&議論
5.全体質疑(時間があれば)
Agenda
1.セッション概要←
2.スピーカ紹介
3.全文検索を駆け足でおさらい
4.各全文検索エンジンの紹介と
質疑&議論
5.全体質疑(時間があれば)
本セッションの狙い
例えば5, 6年前…
「全文検索を使い队!」
Apache Solr
or
Senna
现在
Apache Solr
or
Groonga(senna)
or
Elasticsearch
or
CloudSearch
or …
( ?ω?)???!?
どれ使えばいいの?
どこがどう違うの?
はっきりさせようぜ!!
そういう訳で、
各全文検索エンジンの
中の人や、ヘビーユーザに
集まってもらいました
? Elasticsearch
? Elasticsearch 大谷さん
? Apache Solr
? クックパッド 兼山さん
? Amazon CloudSearch
? ChatWork 藤原さん
? Groonga(Mroonga,Rroonga,Nroonga)
? クリアコード 須藤さん
それぞれの特徴を
語ってもらいます
これでスッキリ!
…するかも
本セッションは
質疑、議論重視
(ガチ)
バシバシ質問
おなしゃす
(ガチ)
尚、本セッションの
スライドは近日中に
すべてどこかに上がります
ハッシュタグで告知します
Agenda
1.セッション概要
2.スピーカ紹介←
3.全文検索を駆け足でおさらい
4.各全文検索エンジンの紹介と
質疑&議論
5.全体質疑(時間があれば)
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
cookpad 兼山元太
日々の仕事:
? 検索の満足度を上げる
? 検索のバッ ク エンド の開発
? 辞書の作成/管理
? レシピのメ タ データ の作成/管理
? 他チームの検索関連のお手伝い
夢は世界中で使われる道具を作るこ と
CROSS 2015 全文検索群雄割拠
CROSS 2015 全文検索群雄割拠
やまかつ (@yamakatu)
? 本名は秘密(うそ
? ヤフー株式会社 ヤフオクカンパニー
? 検索、統計、機械学習しつつ、メイン
は育児
? ぶっちゃけ、Groonga族とCloudSearch
はまともに使ったことない(キリ
Agenda
1.セッション概要
2.スピーカ紹介
3.全文検索を駆け足でおさらい
←
4.各全文検索エンジンの紹介と
質疑&議論
5.全体質疑(時間があれば)
この後がマニアックなので
その前に駆け足でおさらい
全文検索エンジン
is 何?
1.全文検索機能
2.周辺機能
1.全文検索機能←
2.周辺機能
全文検索機能の
おさらい
入力:キーワード
出力:そのキーワード
を含むドキュメント
How?
転置インデックス
Inverted index
と形態素解析とN-Gram
Why 転置インデックス?
RDBの
一般的インデックス
アルゴリズム
B+Tree
RDBの
一般的インデックス
アルゴリズム
B+Tree
じゃムリ
RDBでインデックスを
貼らずに
Select (略) where id = 4
1 4 9 10 11 12 13 15 16 20 25
full scan(ex. 11 times)
ぜんぶで11件
B+Tree
(ex. 4 times)
B+Treeでインデクシング
Select (略) where id = 4
4 times < 11 times
データ量が増加すると、
差は指数的に増加
B+Tree?
速い?
最高?
しかし、B+Treeで
全文検索はむりぽ
Why?
「くろす」で
全文検索したい場合
Select 略 where text
like “%くろす%”
「くろす」で
全文検索したい場合
Select 略 where text
like “%くろす%”
つまり部分一致
B+Treeでテキストの部分一
致を実現しようとしても…
各文字列の中にキーワードが含まれている
かどうかはfull scanしてみないとわからな
い
そこで
転置インデックス
転置インデックス(簡略)
文書番号 文書
1 今年のCROSSは横浜
2 横浜行くの久しぶり
3 とりあえずモルツ
もと文書
転置インデックス(簡略)
文書番号 文書
1 今年のCROSSは横浜
2 横浜行くの久しぶり
3 とりあえずモルツ
単語 出現文書
横浜 1, 2
の 1, 2
CROSS 1
… …
もと文書
転置
インデックス
転置インデックス(簡略)
文書番号 文書
1 今年のCROSSは横浜
2 横浜行くの久しぶり
3 とりあえずモルツ
単語 出現文書
横浜 1, 2
の 1, 2
CROSS 1
… …
もと文書
転置
インデックス
「CROSS」で検索
転置インデックス(簡略)
文書番号 文書
1 今年のCROSSは横浜
2 横浜行くの久しぶり
3 とりあえずモルツ
単語 出現文書
横浜 1, 2
の 1, 2
CROSS 1
… …
もと文書
転置
インデックス
「CROSS」で検索
転置インデックス(簡略)
文書番号 文書
1 今年のCROSSは横浜
2 横浜行くの久しぶり
3 とりあえずモルツ
単語 出現文書
横浜 1, 2
の 1, 2
CROSS 1
… …
もと文書
転置
インデックス
「CROSS」で検索 出現文書:1
転置インデックスを用いて
全文検索を実現
補足 1.
最近はRDBでも転置インデック
スが実装されてます
MySQL(innoDB, MyISAM):
FullTextSearch
PostgreSQL:
GIST Index, GIN Index
Oracle:Oracle Text
補足 2.
B+treeでも
前方一致検であれば有効
select 略 where text like “くろす%”
1.全文検索
2.周辺機能←
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
ノード1
シャード1台
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
周辺機能のおさらい
ノード1
シャード1台
ノード2
シャード2
2台
ノード1
シャード1
検索クエリへの応答速度向上
インデクシングの高速化
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
ノード1
シャード1台
周辺機能のおさらい
? ハイライト
? スニペット
? ソート
? ページング
? サジェスト
? もしかして
? 絞込(カテゴリ)
? シャーディング
? レプリケーション
ノード1
シャード1台
ノード2
(slave)
2台
ノード1
(master)
検索負荷の分散
シャードシャード
1.全文検索
2.周辺機能
Agenda
1.セッション概要
2.スピーカ紹介
3.全文検索を駆け足でおさらい
4.各全文検索エンジンの紹介と
質疑&議論←
5.全体質疑(時間があれば)
? Elasticsearch
? Elasticsearch 大谷さん
? Apache Solr
? クックパッド 兼山さん
? Amazon CloudSearch
? ChatWork 藤原さん
? Groonga(Mroonga,Rroonga,Nroonga)
? クリアコード 須藤さん
大事なことなので
2回言います
本セッションは
質疑、議論重視
(ガチ)
バシバシ質問
おなしゃす
(ガチ)
Twitterでもハッシュタグ
(#cross2015_c)付きで
つぶやいていただければ
質問拾います
(会場からの質問を優先しますので
時間切れしたら、ごめんなさい)

More Related Content

CROSS 2015 全文検索群雄割拠