実現したいこと
MySQL全文検索において、IN BOOLEAN MODE で長文の検索を実現したいです。
MySQL のメッセージ
どうやら単語が多すぎだとのエラーのようです。
#191 - Too many words in a FTS phrase or proximity search
該当のソースコード
こちらのCREATE、INSERTに対する問題です。(『吾輩は猫である』の一節を拝借しました。)
SQL
1CREATE TABLE my_sentences ( 2 ID BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, 3 sentence VARCHAR(500) NOT NULL, 4 PRIMARY KEY (ID), 5 FULLTEXT full_my_sentences (sentence) WITH PARSER ngram); 6 7INSERT INTO my_sentences ( sentence ) 8VALUES 9 ("その王様の所へ一人の女が本を九冊持って来て買ってくれないかと云ったんだそうですなるほど王様がいくらなら売るといって聞いたら大変な高い事を云うんですってあまり高いもんだから少し負けないかと云うとその女がいきなり九冊の内の三冊を火にくべて焚やいてしまったそうです惜しい事をしましたなその本の内には予言か何かほかで見られない事が書いてあるんですってへえー");
以下SELECTで上記のエラーとなります。
SQL
1SELECT * 2FROM my_sentences sentences 3WHERE MATCH (sentences.sentence) AGAINST ('その王様の所へ一人の女が本を九冊持って来て買ってくれないかと云ったんだそうですなるほど王様がいくらなら売るといって聞いたら大変な高い事を云うんですってあまり高いもんだから少し負けないかと云うとその女がいきなり九冊の内の三冊を火にくべて焚やいてしまったそうです惜しい事をしましたなその本の内には予言か何かほかで見られない事が書いてあるんですってへえー' IN BOOLEAN MODE);
試したこと
「Too many words?」と不思議に思いつつ、「単語の区切りを分かりやすくしてみたらどうだろう」と以下のようにカッコを入れてみたところエラーなく実現できました。
SQL
1SELECT * 2FROM my_sentences sentences 3WHERE MATCH (sentences.sentence) AGAINST ('「その王様の所へ一人の女が本を九冊持って来て買ってくれないかと云ったんだそうです」「なるほど」「王様がいくらなら売るといって聞いたら大変な高い事を云うんですって、あまり高いもんだから少し負けないかと云うとその女がいきなり九冊の内の三冊を火にくべて焚(や)いてしまったそうです」「惜しい事をしましたな」「その本の内には予言か何かほかで見られない事が書いてあるんですって」「へえー」' IN BOOLEAN MODE);
しかしこのような適切なカッコなく検索できるようにしたいのです。(ユーザーはどこに適切なカッコを置けばいいのか分からないためです。)
どうすればこのようなエラーを回避できるでしょうか。
よろしくお願い致します。
MySQLバージョン
MySQL 5.7 になります。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/04 01:00