「Mroonga」の版間の差分
行8: | 行8: | ||
sudo yum remove mysql* | sudo yum remove mysql* | ||
− | ==mysql5.6インストール | + | ==mysql5.6インストール== |
cd /etc/yum.repos.d/ | cd /etc/yum.repos.d/ | ||
sudo wget http://wing-net.ddo.jp/wing/6/EL6.wing.repo | sudo wget http://wing-net.ddo.jp/wing/6/EL6.wing.repo |
2015年5月31日 (日) 11:18時点における版
mroongaをcentos6にmysql5.6のまま入れる方法
事前に、こちらも確認 linux/groongaインストール [ショートカット]
目次
- 1 既存mysql削除
- 2 mysql5.6インストール
- 3 mysql接続
- 4 normalizerインストール事前設定
- 5 mecabインストール
- 6 mecabが使えるか確認
- 7 groonga-tokenizer-mecabをインストール:
- 8 mroonga_commandのインストール
- 9 mysqlにmroongaエンジンインストール
- 10 mroongaインストール確認
- 11 mysql経由でmecabが使えるか確認
- 12 groonga-normalizer-mysqlをインストール:
- 13 normalizerのインストール確認
- 14 スキーマ更新
- 15 mysql再起動
- 16 検索テスト
- 17 スコア表示
- 18 複数ワードを含む文章の検索方法
- 19 パーサをmecabへ変更
- 20 log
- 21 Unknown storage engine 'mroonga'のエラー
- 22 NormalizerMySQLGeneralCIが使えないエラー
- 23 ERROR 1016 (HY000): offset out of range
- 24 ERROR 1016 (HY000): mroonga: failed to open table
- 25 crontabが使えなくなる?
- 26 renameでエラー
- 27 カラム名変更時の注意
- 28 参照
既存mysql削除
sudo yum list installed | grep mysql #削除mysql確認 sudo yum remove mysql*
mysql5.6インストール
cd /etc/yum.repos.d/ sudo wget http://wing-net.ddo.jp/wing/6/EL6.wing.repo sudo yum --enablerepo=wing install mysql56-server sudo service mysqld start sudo yum --enablerepo=wing install mysql56-mroonga
mysql接続
$ mysql -u[user] -p
- 起動エラー1
Installing MySQL system tables.../usr/libexec/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory $ sudo yum install libaio $ sudo yum install libaio-devel
- 起動エラー2
$ sudo tail /var/log/mysqld.log [ERROR] Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist $ sudo mysql_install_db --datadir=/var/lib/mysql --user=mysql
No package mysql56-server availableとなりインストールが失敗する場合
http://wing-repo.net/wing/6/x86_64/を確認して、mysql57-serverとかに変えてみる
normalizerインストール事前設定
$ sudo rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm $ sudo yum makecache
groonga-release-1.1.0-1.noarch.rpmのインストールに失敗する場合
$ rpm -ivh http://packages.groonga.org/centos/groonga-release-1.1.0-1.noarch.rpm ファイル /etc/pki/rpm-gpg/RPM-GPG-KEY-groonga (パッケージ groonga-release-1.1.0-1.noarch から) は、パッケージ groonga-repository-1.0.0-0.noarch からのファイルと競合しています。 $ rpm -qa | grep groonga groonga-repository-1.0.0-0.noarch $ sudo rpm -e groonga-repository-1.0.0-0.noarch
mecabインストール
sudo yum -y install mecab mecab-devel mecab-ipadic --disablerepo=* --enablerepo=groonga
mecabが使えるか確認
$ echo "東京都" | mecab 東京 名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー 都 名詞,接尾,地域,*,*,*,都,ト,ト
groonga-tokenizer-mecabをインストール:
sudo yum install -y groonga-tokenizer-mecab
mroonga_commandのインストール
mysql> CREATE FUNCTION mroonga_command RETURNS STRING SONAME 'ha_mroonga.so';
mysqlにmroongaエンジンインストール
mysql>INSTALL PLUGIN mroonga SONAME 'ha_mroonga.so';
mroongaインストール確認
mysql>show engines; | mroonga | YES | CJK-ready fulltext search, column store | NO | NO | NO |
mysql経由でmecabが使えるか確認
以下のようなエラーメッセージがでると使えてない
mysql> select mroonga_command("tokenize TokenMecab '東京都'"); ERROR 1026 (HY000): [tokenize] unknown tokenizer: <TokenMecab>
groonga-normalizer-mysqlをインストール:
sudo yum install groonga-normalizer-mysql sudo yum install groonga-normalizer-mysql-devel
normalizerのインストール確認
select mroonga_command('normalize NormalizerAuto 東京都'); select mroonga_command('normalize NormalizerMySQLGeneralCI 東京都'); select mroonga_command('normalize NormalizerMySQLUnicodeCI 東京都'); select mroonga_command('normalize NormalizerMySQLUnicodeCIExceptKanaCIKanaWithVoicedSoundMark 東京都');
- NormalizerMySQLGeneralCIエラー
useでdbを指定しないと上のリストの"NormalizerMySQLGeneralCI"以後は以下エラーとなる
ERROR 1026 (HY000): [normalize] nonexistent normalizer: <NormalizerMySQLGeneralCI>
スキーマ更新
mysql_upgrade -uroot -p
mysql再起動
sudo service mysqld restart
検索テスト
CREATE TABLE diaries ( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(255), FULLTEXT INDEX (content) ) ENGINE = mroonga DEFAULT CHARSET utf8; insert into diaries (content) values ("明日は晴れです"); insert into diaries (content) values ("明日は曇りです"); select * from diaries where match(content) against('晴れ'); | id | content | +----+-----------------------+ | 3 | 明日は晴れです |
スコア表示
select *,match(content) against('明日') AS score from diaries where match(content) against('明日') order by match(content) against('明日'); | id | content | score | +----+-----------------------+--------+ | 3 | 明日は晴れです | 262145 | | 4 | 明日は曇りです | 262145 |
複数ワードを含む文章の検索方法
×select * from diaries where match(content) against('php開発'); ○select * from diaries where match(content) against('php') AND match(content) against('開発');
mecabであらかじめ検索ワードを分かち書きをして、ANDでつなげて検索する
パーサをmecabへ変更
mysql5.5ではmy.cnfを変更することでパーサを変更はできない。
[mysqld] mroonga_default_parser=TokenMecab
以下のようにindexにコメントをつけなければならない。
ALTER TABLE diaries DROP INDEX idx_name1; ALTER TABLE diaries ADD FULLTEXT INDEX idx_name1(name) COMMENT 'parser "TokenMecab"'
create tableではこのように
CREATE TABLE ~ FULLTEXT KEY `idx_name` (`name`) COMMENT 'parser "TokenMecab"'
normalizerも同時に指定する方法
CREATE TABLE ~ FULLTEXT KEY `idx_name` (`name`) COMMENT 'parser "TokenMecab", normalizer "NormalizerAuto"'
==バックアップとリストア ストレージモード(書き込みロック)
mysqldump --database project1 --default-character-set=utf8 --lock-all-tables > project1.sql
ラッパーモード(オンラインバックアップ可能)
mysqldump --database project1 --default-character-set=utf8 --single-transaction > project1.sql
リストアはmysql同様
mysql -uuser1 < project.sql
log
$ sudo tail -f /var/lib/mysql/groonga.log $ sudo tail -f /var/log/message | grep mroonga
Unknown storage engine 'mroonga'のエラー
$ /etc/rc.d/init.d/mysqld startでスタートしていれば $ /etc/rc.d/init.d/mysqld stopとし
$ service mysqld start #再度startする
NormalizerMySQLGeneralCIが使えないエラー
ERROR 138 (HY000): NormalizerMySQLGeneralCI normalizer isn't found for utf8_general_ci. Install groonga-normalizer-mysql normalizer. NormalizerAuto is used as fallback. > select mroonga_command('normalize NormalizerMySQLGeneralCI 東京都');
が使えるか確認しよう。
ERROR 1016 (HY000): offset out of range
selectでこのエラーが出たらDBが壊れています。
参考:https://teratail.com/questions/10468
ERROR 1016 (HY000): mroonga: failed to open table
selectでこのエラーが出たらDBが壊れています。
crontabが使えなくなる?
wingリポジトリ修正 vi /etc/yum.repos.d/EL6.wing.repo enabled=0をenabled=1へ
renameでエラー
テーブルをrenameをすると以下エラーとなり検索できないので注意。
エラーERROR 1191 (HY000): Can't find FULLTEXT index matching the column list
(追記201502:renameしても問題なくなってた)
カラム名変更時の注意
エラーになるのでAlter Changeは使わないように。(alter の add,dropはok) [2015/2時点]
ERROR 2006 (HY000): MySQL server has gone away No connection. Trying to reconnect... Connection id: 51
参照
MySQL5.5でMroonga http://nob-log.info/2013/04/25/upgrade-to-mysql5-5-from-mysql5-1-the-mroonga/
MySQLで高速全文検索を実現するMroongaでTokenMeCabが使えないときの対処方法 http://qiita.com/groonga/items/58220bfa6b2a990f5cd2