|
|
(同じ利用者による、間の7版が非表示) |
行1: |
行1: |
− | mroongaをcentos6にmysql5.6のまま入れる方法
| + | [[mroonga/インストール]] |
| | | |
− | 事前に、こちらも確認
| + | [[mroonga/旧インストール]] |
− | [[linux/groongaインストール]] [ショートカット] | + | |
| | | |
− | ==既存mysql削除==
| + | [[mroonga/検索]] |
− | sudo yum list installed | grep mysql #削除mysql確認
| + | |
− | sudo yum remove mysql*
| + | |
| | | |
− | ==mysql5.6インストール[#qe9027ca]==
| + | [[mroonga/バックアップ・リストア]] |
− | 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: <<nowiki />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: <<nowiki />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"'
| + | |
− | | + | |
− | 参考
| + | |
− | http://dfcblog.net/2013/02/mroonga%E3%81%A7mecab%E3%82%92%E4%BD%BF%E3%81%86%E9%9A%9B%E3%81%AB%E3%81%AF%E3%81%BE%E3%81%A3%E3%81%9F%E8%A9%B1.html
| + | |
− | | + | |
− | ==log==
| + | |
− | $ sudo tail -f /var/lib/mysql/groonga.log
| + | |
− | | + | |
− | ==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): mroonga: failed to open table==
| + | |
− | selectでこのエラーが出たらDBが壊れています。
| + | |
− | | + | |
− | 参考:https://teratail.com/questions/10468
| + | |
− | | + | |
− | ==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
| + | |