Submit Search
Upload
Groongaの紹介と事例紹介
•
7 likes
•
6,148 views
Naoya Murakami
Follow
Groongaの紹介と事例紹介 全文検索エンジンGroongaユーザ勉強会@神戸
Read less
Read more
Report
Share
Report
Share
1 of 49
Download now
Download to read offline
Recommended
Groongaの今後への期待
Groongaの今後への期待
Naoya Murakami
Rroongaの全文検索性能 Ruby kansai-20140531-ruby-kansai-20140531
Rroongaの全文検索性能 Ruby kansai-20140531-ruby-kansai-20140531
Naoya Murakami
Java script info in english
Java script info in english
Takahiro Kawahara
201802 WordBench Nagoya
201802 WordBench Nagoya
takashi ishihara
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った
小川 昌吾
2ヶ月で売上約15万を実現したアパレル系webアプリ
2ヶ月で売上約15万を実現したアパレル系webアプリ
Masaru Gushiken
Rails 速度改善結果レポート
Rails 速度改善結果レポート
Masaru Gushiken
SendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + Redash
Mitsuhiro Yamashita
Recommended
Groongaの今後への期待
Groongaの今後への期待
Naoya Murakami
Rroongaの全文検索性能 Ruby kansai-20140531-ruby-kansai-20140531
Rroongaの全文検索性能 Ruby kansai-20140531-ruby-kansai-20140531
Naoya Murakami
Java script info in english
Java script info in english
Takahiro Kawahara
201802 WordBench Nagoya
201802 WordBench Nagoya
takashi ishihara
Java屋からPHPerになって1年くらい経った
Java屋からPHPerになって1年くらい経った
小川 昌吾
2ヶ月で売上約15万を実現したアパレル系webアプリ
2ヶ月で売上約15万を実現したアパレル系webアプリ
Masaru Gushiken
Rails 速度改善結果レポート
Rails 速度改善結果レポート
Masaru Gushiken
SendGrid Night in Osaka #2 LT SendGrid + Redash
SendGrid Night in Osaka #2 LT SendGrid + Redash
Mitsuhiro Yamashita
Google trends to_irc
Google trends to_irc
rarere
検索数1万回以上でスマホ検索率80%以上のキーワード特長
検索数1万回以上でスマホ検索率80%以上のキーワード特長
新潟コンサルタント横田秀珠
MT LT 20100205
MT LT 20100205
Taku AMANO
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索
Kouhei Sutou
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
Kouhei Sutou
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
Yasuki Ichishima
ソーシャルブックマークサービスのSEO力
ソーシャルブックマークサービスのSEO力
Hiroumi Mitani
More Related Content
What's hot
Google trends to_irc
Google trends to_irc
rarere
検索数1万回以上でスマホ検索率80%以上のキーワード特長
検索数1万回以上でスマホ検索率80%以上のキーワード特長
新潟コンサルタント横田秀珠
MT LT 20100205
MT LT 20100205
Taku AMANO
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
Kohashi Daisuke
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索
Kouhei Sutou
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
Kouhei Sutou
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
Yasuki Ichishima
ソーシャルブックマークサービスのSEO力
ソーシャルブックマークサービスのSEO力
Hiroumi Mitani
What's hot
(8)
Google trends to_irc
Google trends to_irc
検索数1万回以上でスマホ検索率80%以上のキーワード特長
検索数1万回以上でスマホ検索率80%以上のキーワード特長
MT LT 20100205
MT LT 20100205
今からでも遅くない! 2から始めるangular js
今からでも遅くない! 2から始めるangular js
GroongaでRedmineを高速全文検索
GroongaでRedmineを高速全文検索
全文検索でRedmineをさらに活用!
全文検索でRedmineをさらに活用!
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
_gaTracker 第4回ミーティング『not providedをどうとらえるか』 いちしま泰樹
ソーシャルブックマークサービスのSEO力
ソーシャルブックマークサービスのSEO力
Groongaの紹介と事例紹介
1.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaの紹介 事例紹介 Naoya�(@naoa̲y) 全⽂検索エンジンGroonga勉強会@神⼾ 2014/06/27
2.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 今⽇の流れ みんなで自⼰紹介✓ Groongaについて紹介✓ 事例紹介✓ Groongaの今後への期待✓
3.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 自⼰紹介 Naoya�(@naoa̲y) 大学は情報系✓ 新卒で3年半ほど⾦融系のユーザSI でインフラSE ✓ 現在は3年半ほどITと無縁の仕事✓ Groonga/Mroonga暦は2年ちょっ と ✓ ✓
4.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 今⽇の流れ みんなで自⼰紹介✓ Groongaについて紹介✓ 事例紹介✓ Groongaの今後への期待✓
5.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 今⽇の流れ できるだけ具体的なコマンド等 を⾒せていきます ✓ せっかく⼩規模なので途中で遮 ってもいいのでどんどん質問し てください。 ✓
6.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga族の概要 ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
7.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��������������������������������������������������������������������������������������������
8.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaって? C⾔語で書かれた超⾼速な 全⽂検索ライブラリ/サーバ ✓ カラム指向のデータストア ⾼速な集計処理✓ ✓ 即時更新 新鮮な情報をすぐに検索可能に✓ ✓
9.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaって? 専用のRDBほど複雑な表現は 難しいがほぼRDBに近いイメ ージでテーブル設計ができる ✓ 転置索引を使った⾼速全⽂検索 ⽂字列をトークンに分割し、トーク ンが⼀致する⽂書IDを検索すること により大幅に演算量を減らす ✓ ✓
10.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaの全⽂検索の流れ ⼊⼒⽂を正規化 例:This�is�a�pen.�→�this�is�a� pen. ✓ ✓ ⼊⼒⽂をトークンに分割 例:今⽇は⾬�→�今⽇/は/⾬✓ ✓ 転置索引を更新/検索 分割したトークンとトークンの⽂書 IDと⽂書IDにおける出現位置情報を 記憶/検索 ✓ ✓
11.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaの全⽂検索の流れ Groongaではライブラリとし て利用してもこれらの作業を勝 ⼿にやってくれる ✓ たぶんApache�Luceneはひと つひとつやらないといけない (たぶん) ✓
12.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�CLI ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
13.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�CLI CLI�コマンドラインインターフ ェース 対話的にちょっとしたデータを確認 したいときやクエリの組み⽴てに便 利 ✓ 最近のNoSQL系はほとんどJSONイ ンターフェース ✓ 息を吐くようにスクリプトでJSON かける⼈なら無くてもいいだろうけ ど、そうではないのでCLIがあるの は凄い便利 ✓ ✓
14.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�HTTP ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
15.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�HTTP GroongaのHTTPはnginx組み 込みと独自実装の2つ ✓ nginxの豊富な機能を使う場合 はgroonga-httpd ✓ 単純に使うだけならgroonga コマンドをhttpモードで起動 サービスとして導⼊したい場合は groonga-server-httpをインストー ル ✓ ✓
16.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�GQTP ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
17.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groonga�GQTP コマンドと同じようにしてリモ ートのサーバと直接会話できる ✓ groongaコマンドをgqtpモー ド起動 サービスとして導⼊したい場合は groonga-server-gqtpをインスト ール ✓ ✓ 今後非推奨になる✓
18.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaライブラリ ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
19.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaライブラリ サーバを⽴てずにGroongaを 組み込んでアプリを作る場合は これ ✓ 結構難しい。が、コマンドを直 接投げたり受けたりするモード があるのでそれを使うだけなら 簡単 ✓ 難しいことしないならLucene よりはるかに簡単?かも ✓
20.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 C⾔語でのクエリAPI ��������������������������������������������������������������������� ���������������������������������������������������������������������������������� �������������������� ������������ ������������ ������������������������������ ����������� ���������������������� ����������������������������� ������������������������������������� �������������������������������������������������������������� ������������������������������������������������������� ������������������ ����������
21.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Mroonga ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
22.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Mroongaって? Groongaをライブラリとして 利用して全⽂検索機能が組み込 まれたMySQLのストレージエ ンジン ✓ SQLで簡単に全⽂検索が可能✓ MariaDBにもバンドル予 定 ? ✓
23.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Mroongaって? SQLでGroongaのコマンドよ りも柔軟なデータ操作ができる ※全⽂検索以外はMySQLの層でデ ータ操作するので同じ操作でも Groongaよりも遅くなることも ✓ ✓ 関数やツールなどMySQLの豊 富な資産が利用できる phpMyAdmin、レプリケーショ ン、バックアップ�etc ✓ ✓
24.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Rroonga ���������� ���� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ���� ��� ��� ��������������������������������������������������������������������������������������������
25.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Rroongaって? Rubyらしい記法でGroongaラ イブラリを利用できる ✓ gemで⼀発インストール ※Windows以外は数⼗分必要✓ ✓ RubyとGroongaが動けば使え る クロスプラットフォーム(Win/ Linux/Mac) ✓ ✓
26.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Rroongaって? ライブラリとして利用できるの で他にサーバが不要(≒SQLite) ✓ Rubyなのでメモリ管理や⽂字 列操作、データの操作が抜群に 楽 ✓ データベースAPIレベルが使え るので組み込みコマンド以上の 複雑な操作をRubyで実現可能 ✓
27.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 どれを使うべき? サーバ経由でGroongaを使っ て⾼速な全⽂検索をしたい Groonga�HTTP/GQTP�Mroonga✓ ✓ 既存のMySQLのツールや複雑 なSQLを扱いたい(速度差に注 意) Mroonga✓ ✓
28.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 どれを使うべき? Rubyで全⽂検索アプリケーシ ョンを作りたい Rroonga�✓ ✓ 他の⾔語で全⽂検索アプリケー ションを作りたい Groonga�GObject http://qiita.com/groonga/ items/71b145b37d77bd160bf2 ✓ ✓
29.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 どれを使うべき? サーバ経由もしくはクライアン トでGroongaの⼒を100%使 いたい Groonga✓ ✓ 超大規模なデータベースで全⽂ 検索したい Droonga、Mroonga�&�Spider✓ ✓
30.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaってどのくらい速 い? 検索性能は⽂書やトークナイズ の仕⽅にかなり左右される ✓ ⽇本語の⽂書でBigram(2⽂字 ごと)なら数⼗GiB超でも余裕 ✓ ⽇本語の⽂書でTrigram(3⽂字 ごと)なら100GiB超でも余裕 ✓ MeCabは単語間の検索性能に 偏りが出やすい ✓
31.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaってどのくらい速 い? 英語のみの⽂書でBigramにす ると10GiB、20GiBでかなり苦 しい ✓ 英語の⽂書をNgramにするな らTokenTrigramのSplitBy系 が欲しいところ ✓
32.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaの拡張性 以下をC⾔語のプラグインで拡 張することができる トークナイザ✓ ノーマライザ✓ コマンド✓ 関数✓ ✓ ただし情報は少なくC⾔語なの で単なる⽂字列操作も大変 ✓
33.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaの紹介 終わり✓ 質問があれば受け付ける✓ ここで休憩�&�雑談✓
34.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 今⽇の流れ みんなで自⼰紹介✓ Groongaについて紹介✓ 事例紹介✓ Groongaの今後への期待✓
35.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 事例紹介 特許の全⽂検索サービスを個⼈ で作りました。 http://patentfield.com✓ まだデザイン⾯とか使い⽅とか⼒を いれてないのでその辺は気にしない ✓ ✓
36.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 現状の公的サービス 700万件以上蓄積されているの に1000件以下に絞り込まない と表⽰できない ✓ ソートできない、検索結果から 絞込みできない ✓ 検索結果で番号とタイトルと出 願⼈以外表⽰できない ✓ DBがいくつも分かれていて検 索対象にできない項目が多数 ✓
37.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 システム概要 最大で1000万件、データサイ ズ400GiB超�トータルで1.5TB ぐらい ✓ カラム数は100ぐらい✓ Mroongaを利用✓ 複雑な絞込みやドリルダウンを 使いたいため全⽂検索は Groongaを利用 ✓
38.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 全⽂検索時 ���������� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ��� ������������������������
39.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 更新・メンテナンス時 ���������� キー管理 転置索引
データストア データベース機能 クエリー⾔語 ������� コマンド ��� ������ ������
40.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 Groongaで使った機能 全⽂検索✓ 重み付け✓ ドリルダウン✓ サジェスト✓ 近傍検索✓ 類似検索✓ スニペット✓
41.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 トークナイザによる検索性能 差 400GiBのデータベースを標準 のTokenBigramすると検索速 度がかなり劣化 ✓ TokenMecabを採用�しかし、 Mecabでは助詞等の頻出用語 を含むと性能が顕著に劣化 ✓ トークナイザプラグインで頻出 用語を除去することで回避 ✓
42.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 英語の複数形・過去形の取扱 英語でTokenBigramを使うと 単語ごとにトークナイズされる ✓ これでは複数形や過去形を検索 できない ✓ トークナイザプラグインでステ ミングを追加することで回避 ⼀定のルールで複数形や過去形っぽ い末尾を削除してくれる ✓ ✓
43.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 ノーマライザのカスタマイズ カタカナの⼩⽂字、大⽂字の扱 いがばらばら 例:フィルム⇔フイルム✓ ✓ 古いデータでは⻑⾳記号がハイ フンだったり 例:データベース⇔デ-タベ-ス✓ ✓ ノーマライザプラグインでこれ らを同⼀視 ✓
44.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 大量レコードのドリルダウン による性能劣化 全⽂検索結果で大量にレコード があるとドリルダウンはコスト が⾼い 100万件以上はドリルダウンしない ように組み込みselectコマンドをい じる ✓ C⾔語やRroongaでDB-APIを使う ことでも解消可能 ✓ ✓
45.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 複数カラム絞込みスニペット Groonga組み込みの snipet̲html関数はカラムを指 定するだけで便利 ✓ しかし、対象のカラム以外の検 索クエリも対象としてしまう ✓ ノーマライザの指定ができない✓ Mroongaと同等のスニペット 関数プラグインで作る ✓
46.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 感想 400GiB超のデータベースが1 台でさばけるとは思わなかった ✓ このサイズを1台で⾼速に検索 できるというのはすごく夢が広 がる ✓
47.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 感想 個⼈や少⼈数でも少し昔では考 えられなかった規模の全⽂検索 システムを作ることができる ✓ メーリングリストが親切なので プログラミング経験がほとんど なくても作れた ✓ 今後はRubyで全⽂検索デスク トップアプリを作りたい! ✓
48.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 事例紹介 終わり✓ 質問があれば受け付ける✓ ここで休憩�&�雑談✓
49.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2 お疲れ様 でした
Download now