Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaの紹介
事例紹介
Naoya�(@naoa̲y)
全⽂検索エンジンGroonga勉強会@神⼾
2014/06/27
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
今⽇の流れ
みんなで自⼰紹介✓
Groongaについて紹介✓
事例紹介✓
Groongaの今後への期待✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
自⼰紹介
Naoya�(@naoa̲y)
大学は情報系✓
新卒で3年半ほど⾦融系のユーザSI
でインフラSE
✓
現在は3年半ほどITと無縁の仕事✓
Groonga/...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
今⽇の流れ
みんなで自⼰紹介✓
Groongaについて紹介✓
事例紹介✓
Groongaの今後への期待✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
今⽇の流れ
できるだけ具体的なコマンド等
を⾒せていきます
✓
せっかく⼩規模なので途中で遮
ってもいいのでどんどん質問し
てください。
✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga族の概要
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����
���
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaって?
C⾔語で書かれた超⾼速な
全⽂検索ライブラリ/サーバ
✓
カラム指向のデータストア
⾼速な集計処理✓
✓
即時更新
新鮮な情報をすぐに検索可能に...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaって?
専用のRDBほど複雑な表現は
難しいがほぼRDBに近いイメ
ージでテーブル設計ができる
✓
転置索引を使った⾼速全⽂検索
⽂字列をトークンに分割...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaの全⽂検索の流れ
⼊⼒⽂を正規化
例:This�is�a�pen.�→�this�is�a�
pen.
✓
✓
⼊⼒⽂をトークンに分割
例:今⽇は⾬�→...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaの全⽂検索の流れ
Groongaではライブラリとし
て利用してもこれらの作業を勝
⼿にやってくれる
✓
たぶんApache�Luceneはひと
つひとつ...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�CLI
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�CLI
CLI�コマンドラインインターフ
ェース
対話的にちょっとしたデータを確認
したいときやクエリの組み⽴てに便
利
✓
最近のNoSQL系はほと...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�HTTP
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�HTTP
GroongaのHTTPはnginx組み
込みと独自実装の2つ
✓
nginxの豊富な機能を使う場合
はgroonga-httpd
✓
単純...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�GQTP
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groonga�GQTP
コマンドと同じようにしてリモ
ートのサーバと直接会話できる
✓
groongaコマンドをgqtpモー
ド起動
サービスとして導⼊したい場合は...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaライブラリ
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaライブラリ
サーバを⽴てずにGroongaを
組み込んでアプリを作る場合は
これ
✓
結構難しい。が、コマンドを直
接投げたり受けたりするモード
がある...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
C⾔語でのクエリAPI
���������������������������������������������������������������������
�...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Mroonga
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����
���
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Mroongaって?
Groongaをライブラリとして
利用して全⽂検索機能が組み込
まれたMySQLのストレージエ
ンジン
✓
SQLで簡単に全⽂検索が可能✓
Ma...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Mroongaって?
SQLでGroongaのコマンドよ
りも柔軟なデータ操作ができる
※全⽂検索以外はMySQLの層でデ
ータ操作するので同じ操作でも
Groong...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Rroonga
����������
����
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
����
���
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Rroongaって?
Rubyらしい記法でGroongaラ
イブラリを利用できる
✓
gemで⼀発インストール
※Windows以外は数⼗分必要✓
✓
RubyとGr...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Rroongaって?
ライブラリとして利用できるの
で他にサーバが不要(≒SQLite)
✓
Rubyなのでメモリ管理や⽂字
列操作、データの操作が抜群に
楽
✓
デ...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
どれを使うべき?
サーバ経由でGroongaを使っ
て⾼速な全⽂検索をしたい
Groonga�HTTP/GQTP�Mroonga✓
✓
既存のMySQLのツールや複雑...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
どれを使うべき?
Rubyで全⽂検索アプリケーシ
ョンを作りたい
Rroonga�✓
✓
他の⾔語で全⽂検索アプリケー
ションを作りたい
Groonga�GObjec...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
どれを使うべき?
サーバ経由もしくはクライアン
トでGroongaの⼒を100%使
いたい
Groonga✓
✓
超大規模なデータベースで全⽂
検索したい
Droon...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaってどのくらい速
い?
検索性能は⽂書やトークナイズ
の仕⽅にかなり左右される
✓
⽇本語の⽂書でBigram(2⽂字
ごと)なら数⼗GiB超でも余裕
...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaってどのくらい速
い?
英語のみの⽂書でBigramにす
ると10GiB、20GiBでかなり苦
しい
✓
英語の⽂書をNgramにするな
らTokenT...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaの拡張性
以下をC⾔語のプラグインで拡
張することができる
トークナイザ✓
ノーマライザ✓
コマンド✓
関数✓
✓
ただし情報は少なくC⾔語なの
で単な...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaの紹介
終わり✓
質問があれば受け付ける✓
ここで休憩�&�雑談✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
今⽇の流れ
みんなで自⼰紹介✓
Groongaについて紹介✓
事例紹介✓
Groongaの今後への期待✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
事例紹介
特許の全⽂検索サービスを個⼈
で作りました。
http://patentfield.com✓
まだデザイン⾯とか使い⽅とか⼒を
いれてないのでその辺は気にしな...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
現状の公的サービス
700万件以上蓄積されているの
に1000件以下に絞り込まない
と表⽰できない
✓
ソートできない、検索結果から
絞込みできない
✓
検索結果で番...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
システム概要
最大で1000万件、データサイ
ズ400GiB超�トータルで1.5TB
ぐらい
✓
カラム数は100ぐらい✓
Mroongaを利用✓
複雑な絞込みやドリ...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
全⽂検索時
����������
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
���
������������...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
更新・メンテナンス時
����������
キー管理 転置索引 データストア
データベース機能
クエリー⾔語
�������
コマンド
���
������
����...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
Groongaで使った機能
全⽂検索✓
重み付け✓
ドリルダウン✓
サジェスト✓
近傍検索✓
類似検索✓
スニペット✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
トークナイザによる検索性能
差
400GiBのデータベースを標準
のTokenBigramすると検索速
度がかなり劣化
✓
TokenMecabを採用�しかし、
Me...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
英語の複数形・過去形の取扱
英語でTokenBigramを使うと
単語ごとにトークナイズされる
✓
これでは複数形や過去形を検索
できない
✓
トークナイザプラグイン...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
ノーマライザのカスタマイズ
カタカナの⼩⽂字、大⽂字の扱
いがばらばら
例:フィルム⇔フイルム✓
✓
古いデータでは⻑⾳記号がハイ
フンだったり
例:データベース⇔デ...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
大量レコードのドリルダウン
による性能劣化
全⽂検索結果で大量にレコード
があるとドリルダウンはコスト
が⾼い
100万件以上はドリルダウンしない
ように組み込みse...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
複数カラム絞込みスニペット
Groonga組み込みの
snipet̲html関数はカラムを指
定するだけで便利
✓
しかし、対象のカラム以外の検
索クエリも対象として...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
感想
400GiB超のデータベースが1
台でさばけるとは思わなかった
✓
このサイズを1台で⾼速に検索
できるというのはすごく夢が広
がる
✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
感想
個⼈や少⼈数でも少し昔では考
えられなかった規模の全⽂検索
システムを作ることができる
✓
メーリングリストが親切なので
プログラミング経験がほとんど
なくても...
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
事例紹介
終わり✓
質問があれば受け付ける✓
ここで休憩�&�雑談✓
Groongaの紹介事例紹介 Powered�by�Rabbit�2.1.2
お疲れ様
でした
Prochain SlideShare
Chargement dans…5
×

Groongaの紹介と事例紹介

Groongaの紹介と事例紹介 全文検索エンジンGroongaユーザ勉強会@神戸

  • Soyez le premier à commenter

Groongaの紹介と事例紹介

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

×