Я хочу эффективно выполнять полнотекстовый поиск в MYSQL, используя сопоставление. В частности, мне нужно использовать бинарные операторы (например, совпадать с некоторым текстом, но не с другим текстом). Однако мне также нужна эффективная поддержка транзакций.
Но полнотекстовый поиск поддерживается только в MYISAM, а не в Innodb. Что делать?
полнотекстовый поиск mysql
Ответы (3)
Предполагая, что вам нужно использовать Innodb.
Я бы предложил использовать внешний инструмент поиска - sphinx или solr получили бы мой голос. Оба они последовательно возвращают лучшие результаты, чем полнотекстовый поиск mysql, и намного быстрее. Я бы сказал, что sphinx легче встать и работать, особенно из mysql.
Если вы не можете установить ни один из них или у вас просто нет времени, вы можете сразу же переместить или продублировать только необходимые поля в таблице myisam, чтобы вы могли использовать полнотекстовый поиск mysql.
Это скорее предложение, чем ответ.
Если вы собираетесь иметь большую базу данных или вам нужны расширенные функции, не используйте полнотекстовый поиск mysql. Вы можете использовать сфинкс или люцен.
SPhinx в целом быстрее и легче, но у Lucene гораздо больше возможностей. Лично я использую Sphinx.
Вы также можете попробовать Ferret, это рубиновая реализация библиотеки поиска Apache. По скоростным тестам тоже намного быстрее.