SlideShare a Scribd company logo
MySQL対応全文検索システム
Mroonga(むるんが)
作成者:小越 秀
作成日:2014年9月29日
Mroongaとは
• インストールしたら、後は普通のMySQLとして
使える日本語に対応した唯一の全文検索シ
ステム
• 全文検索エンジンにTritonnの後継プロダクト
Groonga(ぐるんが)を使用
• MySQLのプラグインとして動作する
(MySQL5.1以降のプラガブルストレージエン
ジンを使用し、MySQLのバイナリに手を加え
ず動的にロードして利用可能)
• http://mroonga.org/ja/
Mroongaの特徴
• 更新内容をすぐに検索可能
• 更新中に検索性能を落とさない(更新時の排他表ロックがない)
• 高速な位置情報検索
• 日本語対応(collationの設定でひらがな、カタカナ、全角、半角の
違いを吸収できる)
• 形態素解析、N-gram、空白区切りなどのパーサーがある
• ラッパーモードを使用することで、MyISAMやInnoDBなどのストレー
ジエンジンに全文検索機能だけを追加できる
• 毎月アップデートがリリースされていて、活動が活発(最新リリース
は2014年9月29日)
• OSSで開発されているため、特定の企業の動向に依存しにくい
(https://github.com/mroonga)
全文検索システム
プロダクト名 全文検索エンジン 備考
Tritonn Senna
MySQL5.0まで対応
ストレージエンジンは
MyISAMのみ対応
Mroonga Groonga
Tritonnの後継プロダクト
MySQL5.1以降に対応
GroongaにMySQLストレー
ジエンジンを実装したもの
ストレージエンジンは
InnoDBにも対応
Mroongaを使わない場合
1. アプリ側で前処理(トークナイズ処理)をして
MyISAM/InnoDBの全文検索機能を使用する
2. Solr/Sphinxなどの別の全文検索システムを
使用する
一手間余計にかかって開発が面倒。運用も
MySQLと全文検索システムの2つを見なくては
ならない。
Mroongaのモード
1. ストレージモード(トランザクション非対応)
2. ラッパーモード(トランザクション対応。
MyISAMやInnoDBに全文検索機能だけを追
加するモード。MySQLのプラガブルストレー
ジエンジンを使用し、既存のストレージエン
ジンを変更しない。)
サポートしているプラットフォーム
• Linux x86_64(Intel64/AMD64)
サポートしているOS
• CentOS 5, 6, 7
追加でインストールするもの
• Mecab : 形態素解析で必要
• Groonga
• Mroonga
• Groongaノーマライザー
インストール方法は全て日本語で提供されて
いる。
インストール方法
% sudo yum install centos-release-SCL
% sudo rpm -ivh
http://packages.groonga.org/centos/groonga-
release-1.1.0-1.noarch.rpm
% sudo yum makecache
% sudo yum install -y mysql55-mysql-server
% sudo yum install -y mysql55-mroonga
% sudo scl enable mysql55 "mysqladmin -u root
password 'new-password’”
% sudo yum install -y groonga-normalizer-mysql
% sudo yum install -y groonga-tokenizer-mecab
使い方1
mysql> CREATE TABLE contents (
-> id INT PRIMARY KEY AUTO_INCREMENT,
-> title VARCHAR(255),
-> kana VARCHAR(255),
-> FULLTEXT INDEX (kana) COMMENT 'parser "TokenBigram"'
-> ) ENGINE = mroonga COMMENT = 'engine "innodb"' DEFAULT CHARSET utf8mb4
COLLATE=utf8mb4_unicode_ci;
mysql> INSERT INTO contents (title,kana) VALUES ("牛肉","ぎゅうにく");
mysql> INSERT INTO contents (title,kana) VALUES ("豚肉","ぶたにく");
mysql> INSERT INTO contents (title,kana) VALUES ("牛乳","ぎゅうにゅう");
mysql> INSERT INTO contents (title,kana) VALUES ("筍","たけのこ");
mysql> INSERT INTO contents (title,kana) VALUES ("数の子","かずのこ");
mysql> select * from contents;
+----+--------+--------------------+
| id | title | kana |
+----+--------+--------------------+
| 1 | 牛肉 | ぎゅうにく |
| 2 | 豚肉 | ぶたにく |
| 3 | 牛乳 | ぎゅうにゅう |
+----+--------+--------------------+
コメントでパーサを指定する
ENGINEはmroongaをCOMMENT
でMySQLのエンジンを指定する。
COMMENTを指定しなかった場
合は、 ストレージモードでテー
ブルが作成される。
使い方2
mysql> SELECT * FROM contents WHERE MATCH(kana) AGAINST("ぎゅう");
+----+--------+--------------------+
| id | title | kana |
+----+--------+--------------------+
| 1 | 牛肉 | ぎゅうにく |
| 3 | 牛乳 | ぎゅうにゅう |
+----+--------+--------------------+
2 rows in set (0.02 sec)
mysql>
mysql> SELECT * FROM contents WHERE MATCH(kana) AGAINST("ニク");
+----+--------+-----------------+
| id | title | kana |
+----+--------+-----------------+
| 1 | 牛肉 | ぎゅうにく |
| 2 | 豚肉 | ぶたにく |
+----+--------+-----------------+
2 rows in set (0.02 sec)
ひらがな、カタカナが同一視されているのはMySQLのCOLLATEの設定が効いているため.。

More Related Content

PPTX
続・Freeプランで緩く監視させてもらってる話など
Koichi Ota
 
PDF
UniTask入門
torisoup
 
PDF
UniRx完全に理解した
torisoup
 
PPTX
AWS入門!!
Wataru NOGUCHI
 
PDF
Winodws azure紹介
fumios
 
PDF
UniRx の1歩目
infinite_loop
 
PPTX
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
Wataru NOGUCHI
 
PDF
Windows Azure CloudService で Java 使ってみたアレコレ
snicker_jp
 
続・Freeプランで緩く監視させてもらってる話など
Koichi Ota
 
UniTask入門
torisoup
 
UniRx完全に理解した
torisoup
 
AWS入門!!
Wataru NOGUCHI
 
Winodws azure紹介
fumios
 
UniRx の1歩目
infinite_loop
 
ネットワークシミュレータで手軽にネットワークのお勉強(GNS3編)
Wataru NOGUCHI
 
Windows Azure CloudService で Java 使ってみたアレコレ
snicker_jp
 

What's hot (8)

PDF
情報システム部がSplunk を使うとどうなるか?
snicker_jp
 
PDF
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
snicker_jp
 
PDF
初めてOssを読んでみた(nuke)
友里 高島
 
PDF
Mastdonインスタンス立ててみた in Azure #ssmjp
Masahiro NAKAYAMA
 
PPTX
2 12椛澤「tokyo tyrant」
Yoshihiro Kabasawa
 
PDF
オープンソースの来し方行く末@OSC 2016 Okinawa
Open Source Software Association of Japan
 
PDF
オープンソースの来し方行く末@OSC 2016 Hokkaido
Open Source Software Association of Japan
 
ODP
Next-L Enju 開発ワークショップ #10
Kosuke Tanabe
 
情報システム部がSplunk を使うとどうなるか?
snicker_jp
 
Splunk_NiteX 「ノンテクエンジニアでも、デキる!ログ解析」
snicker_jp
 
初めてOssを読んでみた(nuke)
友里 高島
 
Mastdonインスタンス立ててみた in Azure #ssmjp
Masahiro NAKAYAMA
 
2 12椛澤「tokyo tyrant」
Yoshihiro Kabasawa
 
オープンソースの来し方行く末@OSC 2016 Okinawa
Open Source Software Association of Japan
 
オープンソースの来し方行く末@OSC 2016 Hokkaido
Open Source Software Association of Japan
 
Next-L Enju 開発ワークショップ #10
Kosuke Tanabe
 
Ad

Viewers also liked (17)

PDF
Mysql+Mroongaで全文検索
yoyamasaki
 
PPTX
mroongaで全文検索をちょっぱやにしてみた
Yuya TAMANO
 
PPTX
Learning CakePHP from Source Code
Hideshi Ogoshi
 
PPTX
Falcon Full Text Search Engine
Hideshi Ogoshi
 
PDF
全文検索エンジンMroonga_エンジニア勉強会20140418
エンジニア勉強会 エスキュービズム
 
PDF
Elastic searchとは_エンジニア勉強会20140212
エンジニア勉強会 エスキュービズム
 
PDF
How to create test data
Hideshi Ogoshi
 
PDF
Mroongaを使ったときの MySQLの制限との戦い
Naoya Murakami
 
PDF
Silex入門
Takuya Sato
 
PDF
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
 
PDF
Functional programming
Hideshi Ogoshi
 
PPTX
Introduction of Monaca
Hideshi Ogoshi
 
PDF
サーバーレスアーキテクチャのすすめ(公開版)
Keisuke Kadoyama
 
PDF
Embulk, an open-source plugin-based parallel bulk data loader
Sadayuki Furuhashi
 
PPTX
ここまで来た!2017年 Web VRでできること
Jun Ito
 
PPTX
PHPerだってMicroservicesしたい!
Shinichi Takahashi
 
PDF
PHPの今とこれから2016
Rui Hirokawa
 
Mysql+Mroongaで全文検索
yoyamasaki
 
mroongaで全文検索をちょっぱやにしてみた
Yuya TAMANO
 
Learning CakePHP from Source Code
Hideshi Ogoshi
 
Falcon Full Text Search Engine
Hideshi Ogoshi
 
全文検索エンジンMroonga_エンジニア勉強会20140418
エンジニア勉強会 エスキュービズム
 
Elastic searchとは_エンジニア勉強会20140212
エンジニア勉強会 エスキュービズム
 
How to create test data
Hideshi Ogoshi
 
Mroongaを使ったときの MySQLの制限との戦い
Naoya Murakami
 
Silex入門
Takuya Sato
 
いろいろ考えると日本語の全文検索もMySQLがいいね!
Kouhei Sutou
 
Functional programming
Hideshi Ogoshi
 
Introduction of Monaca
Hideshi Ogoshi
 
サーバーレスアーキテクチャのすすめ(公開版)
Keisuke Kadoyama
 
Embulk, an open-source plugin-based parallel bulk data loader
Sadayuki Furuhashi
 
ここまで来た!2017年 Web VRでできること
Jun Ito
 
PHPerだってMicroservicesしたい!
Shinichi Takahashi
 
PHPの今とこれから2016
Rui Hirokawa
 
Ad

Similar to MySQL対応全文検索システムMroonga(むるんが) (20)

PDF
Mroonga 20121129
Kentoku
 
PDF
Introducing mroonga 20111129
Kentoku
 
PDF
MroongaとPGroonga
Kouhei Sutou
 
PDF
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
Kouhei Sutou
 
PDF
Mroonga 20131129
Kentoku
 
PDF
Mroonga・PGroonga導入方法
Kouhei Sutou
 
PDF
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
Kentaro Yoshida
 
PDF
Mroonga開発者が来たぞ!
Kouhei Sutou
 
PDF
Mroonga Meetup 2014/06/29
kenhys
 
PDF
初心者向けMroonga・PGroonga情報
Kouhei Sutou
 
PDF
Mroonga!
Kouhei Sutou
 
PDF
Mroonga de fts
yoku0825
 
PDF
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Kentaro Yoshida
 
PDF
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
Kouhei Sutou
 
PDF
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Yahoo!デベロッパーネットワーク
 
PDF
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Kentaro Yoshida
 
PDF
Groonga族2015
Kouhei Sutou
 
PDF
[data analytics showcase] B14: 文字情報の分析基盤 Mroonga by 株式会社インサイトテクノロジー 小幡 一郎
Insight Technology, Inc.
 
PDF
MariaDBとMroongaで作る全言語対応超高速全文検索システム
Kouhei Sutou
 
PDF
Mroonga 20141129
Kentoku
 
Mroonga 20121129
Kentoku
 
Introducing mroonga 20111129
Kentoku
 
MroongaとPGroonga
Kouhei Sutou
 
MySQL・PostgreSQL上で動かす全文検索エンジン「Groonga」セミナー
Kouhei Sutou
 
Mroonga 20131129
Kentoku
 
Mroonga・PGroonga導入方法
Kouhei Sutou
 
MySQL 5.6への完全移行を実現したTritonnからMroongaへの移行体験記
Kentaro Yoshida
 
Mroonga開発者が来たぞ!
Kouhei Sutou
 
Mroonga Meetup 2014/06/29
kenhys
 
初心者向けMroonga・PGroonga情報
Kouhei Sutou
 
Mroonga!
Kouhei Sutou
 
Mroonga de fts
yoku0825
 
MySQL Casual Talks Vol.4 「MySQL-5.6で始める全文検索 〜InnoDB FTS編〜」
Kentaro Yoshida
 
MySQLとPostgreSQLと日本語全文検索 - Azure DatabaseでMroonga・PGroongaを使いたいですよね!?
Kouhei Sutou
 
Mroongaを社内クラウド的なMySQLプラットフォームに標準搭載している話 #groonga
Yahoo!デベロッパーネットワーク
 
Tritonn (MySQL5.0.87+Senna)からの mroonga (MySQL5.6) 移行体験記
Kentaro Yoshida
 
Groonga族2015
Kouhei Sutou
 
[data analytics showcase] B14: 文字情報の分析基盤 Mroonga by 株式会社インサイトテクノロジー 小幡 一郎
Insight Technology, Inc.
 
MariaDBとMroongaで作る全言語対応超高速全文検索システム
Kouhei Sutou
 
Mroonga 20141129
Kentoku
 

MySQL対応全文検索システムMroonga(むるんが)