実現したいこと
全文検索を実現したいです。
以下素人の試行錯誤が続きお見苦しい点もあるかと思いますが、よろしくお付き合いくださいませ。
該当のソースコード
こちらで取得できませんでした。
sql
1SELECT p.title 2FROM t_post p 3WHERE MATCH(p.title) AGAINST('+太陽 +地球 ' IN BOOLEAN MODE);
試したこと
まず確認したこととして、テーブル定義と現状の値をエクスポートして以下となります。
sql
1CREATE TABLE `t_post` ( 2 `id` INT(2) UNSIGNED NOT NULL AUTO_INCREMENT, 3 `name` VARCHAR(1) NOT NULL, 4 `title` VARCHAR(10000) NOT NULL, 5 FULLTEXT KEY(title), 6 PRIMARY KEY (`id`) 7) ENGINE=InnoDB DEFAULT CHARSET=utf8; 8 9INSERT INTO `t_post` (`name`,`title`) VALUES 10('a', 'あおいうえお'), 11('b', 'かきくけ地球こ'), 12('c', 'さしす地球せそ太陽');
上記CREATとINSERTと先のSELECTの3つについて、SQLが試せるサイト(paiza)にて実行しましたが、やはり取得できません。つまり私の環境だけの問題ではないことがわかりました。
調べていくうちに、CREATEを下記のようにNGRAMにすることで、paizaで取得が実現できました。
sql
1# FULLTEXT KEY(title), 2FULLTEXT KEY(title) WITH PARSER NGRAM,
これがわかったところで、paizaでなく自分の環境でNGRAMを追加すべく以下を実行しました。
sql
1ALTER TABLE t_post add fulltext( title ) WITH PARSER NGRAM;
そうしますと下記エラーが出ました。
sql
1SQL クエリ: 2ALTER TABLE t_post add fulltext( title ) WITH PARSER NGRAM 3 4MySQL のメッセージ: ドキュメント 5#1128 - 関数 'NGRAM' は定義されていません。
どうやらNGRAMが自分の環境では使えないのかと思い行き詰りました。
このエラーが出た場合、全文検索は不可能でしょうか?もしできる方法があったらお尋ねしたいです。
どうぞ宜しくお願い致します。
ツールのバージョン
バージョンについてですが、NGRAMはMySQL5.7からしか使えないとの情報を得たのでMySQLのバージョンを確認しようと思いました。
しかしselect version();の実行では10.0.33-MariaDBとしか表示されず、5.7以上なのかどうなのかがわかりません。
そしてphpMyAdminの画面上から確認しようと思ったのですが、以下のようにホーム画面にバージョン情報が載っておらずやはりわかりませんでした。
###追記
上記のように10.0.33-MariaDBという環境を前提とさせて頂きます。この環境下で全文検索をしたいというのが目的です。
回答2件
あなたの回答
tips
プレビュー