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.

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

850 views

Published on

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

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

  1. 1. MySQL対応全文検索システム Mroonga(むるんが) 作成者:小越 秀 作成日:2014年9月29日
  2. 2. Mroongaとは • インストールしたら、後は普通のMySQLとして 使える日本語に対応した唯一の全文検索シ ステム • 全文検索エンジンにTritonnの後継プロダクト Groonga(ぐるんが)を使用 • MySQLのプラグインとして動作する (MySQL5.1以降のプラガブルストレージエン ジンを使用し、MySQLのバイナリに手を加え ず動的にロードして利用可能) • http://mroonga.org/ja/
  3. 3. Mroongaの特徴 • 更新内容をすぐに検索可能 • 更新中に検索性能を落とさない(更新時の排他表ロックがない) • 高速な位置情報検索 • 日本語対応(collationの設定でひらがな、カタカナ、全角、半角の 違いを吸収できる) • 形態素解析、N-gram、空白区切りなどのパーサーがある • ラッパーモードを使用することで、MyISAMやInnoDBなどのストレー ジエンジンに全文検索機能だけを追加できる • 毎月アップデートがリリースされていて、活動が活発(最新リリース は2014年9月29日) • OSSで開発されているため、特定の企業の動向に依存しにくい (https://github.com/mroonga)
  4. 4. 全文検索システム プロダクト名 全文検索エンジン 備考 Tritonn Senna MySQL5.0まで対応 ストレージエンジンは MyISAMのみ対応 Mroonga Groonga Tritonnの後継プロダクト MySQL5.1以降に対応 GroongaにMySQLストレー ジエンジンを実装したもの ストレージエンジンは InnoDBにも対応
  5. 5. Mroongaを使わない場合 1. アプリ側で前処理(トークナイズ処理)をして MyISAM/InnoDBの全文検索機能を使用する 2. Solr/Sphinxなどの別の全文検索システムを 使用する 一手間余計にかかって開発が面倒。運用も MySQLと全文検索システムの2つを見なくては ならない。
  6. 6. Mroongaのモード 1. ストレージモード(トランザクション非対応) 2. ラッパーモード(トランザクション対応。 MyISAMやInnoDBに全文検索機能だけを追 加するモード。MySQLのプラガブルストレー ジエンジンを使用し、既存のストレージエン ジンを変更しない。)
  7. 7. サポートしているプラットフォーム • Linux x86_64(Intel64/AMD64)
  8. 8. サポートしているOS • CentOS 5, 6, 7
  9. 9. 追加でインストールするもの • Mecab : 形態素解析で必要 • Groonga • Mroonga • Groongaノーマライザー インストール方法は全て日本語で提供されて いる。
  10. 10. インストール方法 % 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
  11. 11. 使い方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を指定しなかった場 合は、 ストレージモードでテー ブルが作成される。
  12. 12. 使い方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の設定が効いているため.。

×