mysql Изменить список стоп-слов для полнотекстового поиска

Я много искал, говорят, что мне нужно отредактировать файл my.cnf, чтобы изменить список стоп-слов. Я переименовал my-medium.cnf в my.cnf и добавил условия ft_query_expansion_limit и ft_stopword_file. Я перезапустил mySQL. Но это не вступает в силу. У меня нет прав администратора.

введите здесь описание изображения

# The MySQL server
[mysqld]
port        = 3306
socket      = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
table_open_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
ft_query_expansion_limit = 10
ft_stopword_file = 'D:/mysql/stopword.txt'


mysql> show variables like '%ft%';
+--------------------------+----------------+
| Variable_name            | Value          |
+--------------------------+----------------+
| ft_boolean_syntax        | + -><()~*:""&| |
| ft_max_word_len          | 84             |
| ft_min_word_len          | 4              |
| ft_query_expansion_limit | 20             |
| ft_stopword_file         | (built-in)     |
+--------------------------+----------------+
5 rows in set (0.00 sec)

Что я могу сделать, чтобы изменить список стоп-слов?


person Jean    schedule 09.07.2013    source источник
comment
Вы также можете использовать команду REGEXP, чтобы сопоставить поисковый запрос в вашей таблице.   -  person Ghostman    schedule 09.07.2013


Ответы (1)


В текстовом файле my.ini (MySQL):

ft_stopword_file = ""   or link an empty file "empty_stopwords.txt"
ft_min_word_len = 2 

// установите минимальную длину, но имейте в виду, что более короткие слова (3,2) резко увеличат время запроса, особенно если поля полнотекстового индексированного столбца большие.

Сохраните файл, перезапустите сервер.

Следующим шагом должно быть восстановление индексов с помощью этого запроса:

REPAIR TABLE tbl_name QUICK.

Однако это не сработает, если ваша таблица использует механизм хранения InnoDB. Вам нужно будет изменить его на MyISAM :

ALTER TABLE t1 ENGINE = MyISAM;

Итак, еще раз:

1. Edit my.ini file and save
2. Restart your server (this cannot be done dynamically)
3. Change the table engine (if needed)  ALTER TABLE tbl_name ENGINE = MyISAM;
4. Perform repair                       REPAIR TABLE tbl_name QUICK.

Имейте в виду, что InnoDB и MyISAM имеют свои различия в скорости. Один быстрее читает, другой быстрее пишет (подробнее об этом читайте в интернете)

person gskema    schedule 02.08.2013