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.
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
お疲れ様
でした
Upcoming SlideShare
Loading in …5
×

Groongaの紹介と事例紹介

4,716 views

Published on

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

  • Be the first to comment

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 お疲れ様 でした

×