「Mroonga/検索」の版間の差分
提供: 初心者エンジニアの簡易メモ
(ページの作成:「 ==検索テスト== CREATE TABLE diaries ( id INT PRIMARY KEY AUTO_INCREMENT, content VARCHAR(255), FULLTEXT INDEX (content) ) ENGINE = mroonga DEFAULT CHARSET u...」) |
|||
| 行50: | 行50: | ||
$ sudo tail -f /var/lib/mysql/groonga.log | $ sudo tail -f /var/lib/mysql/groonga.log | ||
$ sudo tail -f /var/log/message | grep mroonga | $ sudo tail -f /var/log/message | grep mroonga | ||
| + | |||
| + | |||
| + | ==ERROR 1016 (HY000): offset out of range == | ||
| + | selectでこのエラーが出たらDBが壊れています。 | ||
| + | |||
| + | 参考:https://teratail.com/questions/10468 | ||
| + | |||
| + | ==ERROR 1016 (HY000): mroonga: failed to open table== | ||
| + | selectでこのエラーが出たらDBが壊れています。 | ||
| + | |||
| + | ==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 | ||
2015年6月2日 (火) 15:45時点における版
目次
検索テスト
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"'
log
$ sudo tail -f /var/lib/mysql/groonga.log $ sudo tail -f /var/log/message | grep mroonga
ERROR 1016 (HY000): offset out of range
selectでこのエラーが出たらDBが壊れています。
参考:https://teratail.com/questions/10468
ERROR 1016 (HY000): mroonga: failed to open table
selectでこのエラーが出たらDBが壊れています。
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
