не может быть без проблем ...
Это, конечно, нет!
Любой термин поиска, состоящий из заблокированных слов, будет терпеть неудачу. Слова могут быть заблокированы из-за ограничений минимальной/максимальной длины и/или файла остановки.
Я нашел файл стоп-слова по умолчанию слишком агрессивным, это предотвратило многие действительные поиски. Кроме того, минимальная длина по умолчанию, равная 4, была очень часто для аббревиатур, которые люди могли бы искать. Я уменьшил ft_min_word_len до 3 и полностью удалил стоп-лист (ft_stopword_file = ''). Doc: http://dev.mysql.com/doc/refman/5.1/en/fulltext-fine-tuning.html
Вы также можете изучить поисковый запрос, чтобы узнать, содержит ли он только 4-буквенные слова < и в этом случае вернуться к поиску LIKE. Нет такого простого способа обойти стоп-лист на уровне приложения.
Выбор «символов слова» может не соответствовать вашим потребностям, и это сложно изменить. Например, поиск «Терри» не будет соответствовать «Терри». В общем, нет никакой поддержки для каких-либо истолкований, поэтому «бисквит» также не будет соответствовать «печеньям».
Наконец, как указано в cg, поддержка InnoDB отсутствует. В этот день и в возрасте вы не хотите размещать все свои данные в таблице MyISAM.
Если у вас есть запасные части, то вы можете сделать основную, каноническую версию данных в таблице InnoDB, а затем создать отдельную таблицу MyISAM, содержащую копию содержимого freetext, исключительно для использования как searchbait. Вам нужно обновлять обе таблицы при изменении, но если таблица MyISAM теряет целостность, вы по меньшей мере теряете возможность поиска по соответствующим строкам, вместо того, чтобы бить реальные данные в реальном времени и получать ошибки приложения.
Тогда вы можете, если у вас есть запасные циклы, реализовать свою собственную обработку текста в поисковой строке и запросить слова, чтобы обойти некоторые из вышеуказанных ограничений. Например, вы можете избегать символов, которые вы хотите быть символами слов, удалять символы, которые вы не хотите быть символами слов, и выполнять простой ручной английский.
Вы можете обойти это, создав рабочую машину.Тип таблицы на подчиненном устройстве не должен совпадать с мастером, что означает, что ваш мастер innodb может иметь подчиненный myisam с полнотекстовым поиском. http://dev.mysql.com/doc/refman/5.1/en/replication-solutions-diffengines.html – txyoji
Спасибо за подсказку, txyoji, я не знал об этом. Может быть, нужно иметь в виду. –
MySQL 5.6 добавляет полнотекстовую поддержку для таблиц innodb! –