Назад | Перейти на главную страницу

Какое максимальное количество слов разрешено в запросе полнотекстового поиска MariaDB InnoDB

Я получил эту ошибку при выполнении поиска по 746 словам (кто-то не намеренно вставил текст не в то поле).

HA_ERR_FTS_TOO_MANY_WORDS_IN_PHRASE: слишком много слов во фразе FTS или поиске по близости

Сервер использует MariaDB 10.2.14, каков максимальный лимит? Я не мог найти его в документации MariaDB или MySQL.

Это 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