web-dev-qa-db-ja.com

MariaDBInnoDB全文検索クエリで許可される単語の最大数はいくつですか。

746語で検索を実行すると、このエラーが発生しました(意図的に誰かが間違ったボックスにテキストを貼り付けたわけではありません)。

HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE:FTSフレーズまたは近接検索の単語が多すぎます

サーバーはMariaDB10.2.14を使用していますが、上限はいくつですか? MariaDBまたはMySQLのドキュメントで見つかりませんでした。

2
Rwky

128です。

それがどこかに文書化されているかどうかはまだわかりませんが、これは ソース からです:

/* Maximum number of words supported in a phrase or proximity search. */
#define MAX_PROXIMITY_ITEM  128
...
    if (num_token > MAX_PROXIMITY_ITEM) {
            query->error = DB_FTS_TOO_MANY_WORDS_IN_PHRASE;
            goto func_exit;
    }

実際の実験はそれをサポートします:

MariaDB [foo]> select match(name) against(concat('"', repeat('foo ', 128), '" @8')) from test;
...
6 rows in set (0.01 sec)
MariaDB [foo]> select match(name) against(concat('"', repeat('foo ', 129), '" @8')) from test;
ERROR 191 (HY000): Too many words in a FTS phrase or proximity search
2
mosvy