сначала существует три типа полнотекстового поиска
полнотекстовый поиск на естественном языке
логический полнотекстовый поиск
Поисковый запрос расширения
здесь вам подходит полнотекстовый поиск на естественном языке, так как ваши запросы в основном на свободном языке и не используют специальных символов. Синтаксис в таком случае сначала
SELECT * FROM table_name WHERE MATCH(col1, col2)
AGAINST('search terms' IN NATURAL LANGUAGE MODE)
, добавьте в таблицу полнотекстовую функциональность
$stmt_txt_search = $conn->prepare("ALTER TABLE tbl_sc ADD FULLTEXT (Category, Type, Title, Meta)");
$stmt_txt_search->execute();
ваш запрос должен выглядеть примерно так
$stmt_match = $conn->prepare("SELECT * FROM tbl_sc WHERE MATCH (Meta) AGAINST(? IN NATURAL LANGUAGE MODE)");
$stmt_match->bind_param("s",$USER_SEARCH);
$stmt_match->execute();
чтобы изменить ft_min_word_len
, вам нужно go файл my.cnf, измените его на желаемое значение, перезапустите сервер и перестройте ваши индексы следующим образом:
[mysqld]
set-variable = ft_min_word_len=3
затем
mysql> ALTER TABLE tbl_sc DROP INDEX Title, Category...;
mysql> ALTER TABLE tbl_sc ADD FULLTEXT Title, Category...;
но поскольку вы находитесь в учетной записи общего хостинга, вы не можете получить доступ к файлу my.cnf
. Однако, используя SHOW VARIABLES
и INFORMATION SCHEMA
, вы можете видеть все установленные переменные и даже изменять их, используя SET
в своем сеансе, так что все соединения БД будут основаны на вновь установленных значениях
, например, для SHOW VARIABLES
в sql вы можете использовать
SELECT * FROM information_schema.global_variables;
, это показывает все существующие переменные в вашем текущем сеансе, для такой переменной, как flush time
, ее можно установить на 1
, используя SET flush_time = 1;
, так что теперь у базы данных будет время сброса 1 и далее, в вашем случае я предполагаю, что переменные ft_max_word_len
и ft_min_word_len
являются динамически изменяемыми, и поэтому я бы предложил попробовать
SET ft_min_word_len = 2;
в текущем сеансе для получения дополнительной информации см системные переменные сервера