Spec-Zone .ru
спецификации, руководства, описания, API

12.9.6. Подстройка MySQL Full-Text Search

У полнотекстовой возможности поиска MySQL есть немного настраиваемых пользователем параметров. Можно осуществить больше контроля над полнотекстовым поведением поиска, если у Вас есть исходное распределение MySQL, потому что некоторые изменения требуют модификаций исходного кода. См. Раздел 2.9, "Устанавливая MySQL из Источника".

Отметьте, что полнотекстовый поиск тщательно настраивается для эффективности. Изменение поведения значения по умолчанию в большинстве случаев может фактически уменьшить эффективность. Не изменяйте источники MySQL, если Вы не знаете то, что Вы делаете.

Во время запуска сервера должно быть установлено большинство полнотекстовых переменных, описанных в этом разделе. Перезапуск сервера обязан изменять их; они не могут быть изменены, в то время как сервер работает.

Некоторые переменные изменения требуют, чтобы Вы восстановили FULLTEXT индексирует в Ваших таблицах. Инструкции для того, чтобы сделать так даются позже в этом разделе.

Если Вы изменяете полнотекстовые переменные, которые влияют на индексацию (innodb_ft_min_token_size, innodb_ft_max_token_size, innodb_ft_server_stopword_table, innodb_ft_user_stopword_table, innodb_ft_enable_stopword, ft_min_word_len, ft_max_word_len, или ft_stopword_file), или если Вы изменяете stopword файл непосредственно, следует восстановить Ваш FULLTEXT индексирует после произведения изменений и перезапуска сервера. Чтобы восстановить индексирование в этом случае, достаточно сделать a QUICK работа восстановления:

mysql> REPAIR TABLE tbl_name
        QUICK;

Альтернативно, использовать ALTER TABLE с DROP INDEX и ADD INDEX опции, чтобы отбросить и воссоздать каждого FULLTEXT индексировать. В некоторых случаях это может быть быстрее чем работа восстановления.

Каждая таблица, которая содержит любого FULLTEXT индексируйте должен быть восстановлен как только показано. Иначе, запросы для таблицы могут привести к неправильным результатам, и модификации к таблице заставят сервер рассматривать таблицу как поврежденную и нуждающуюся в восстановлении.

Отметьте, что, если Вы используете myisamchk, чтобы выполнить работу, которая изменяет таблицу, индексирует (такие как восстановление, или проанализируйте), FULLTEXT индексирует восстанавливаются, используя значение по умолчанию полнотекстовые значения параметра для минимальной длины слова, максимальной длины слова, и stopword файла, если Вы не определяете иначе. Это может привести к сбою запросов.

Проблема происходит, потому что эти параметры известны только сервером. Они не сохранены в MyISAM индексные файлы. Чтобы избежать проблемы, если Вы изменили минимальную или максимальную длину слова или stopword значения файла, используемые сервером, определите то же самое ft_min_word_len, ft_max_word_len, и ft_stopword_file значения для myisamchk, который Вы используете для mysqld. Например, если Вы установили минимальную длину слова до 3, можно восстановить таблицу с myisamchk как это:

shell> myisamchk --recover --ft_min_word_len=3 tbl_name.MYI

Чтобы гарантировать, что myisamchk и сервер используют те же самые значения для полнотекстовых параметров, разместите каждого в обоих [mysqld] и [myisamchk] разделы файла опции:

[mysqld]ft_min_word_len=3[myisamchk]ft_min_word_len=3

Альтернатива использованию myisamchk для индексирует модификацию, должен использовать REPAIR TABLE, ANALYZE TABLE, OPTIMIZE TABLE, или ALTER TABLE операторы. Эти операторы выполняются сервером, который знает, что надлежащие полнотекстовые значения параметра используют.