MySQL 5.6 полнотекстовый поиск InnoDB - PullRequest
7 голосов
/ 12 ноября 2011

Я понимаю, что MySQL 5.6 все еще находится в бета-версии, но есть ли у кого-нибудь опыт использования нового движка InnoDB FTS? Как это можно сравнить с чем-то вроде Сфинкса?

Спасибо Джейсон

Ответы [ 3 ]

3 голосов
/ 21 декабря 2011

Никогда не использовал Sphinx, но пробовал MySQL 5.6 FTS на таблице Innodb с примерно 170k строк. Сделал индекс FTS по столбцу имени (содержит все имена человека). Поиск слова в любой позиции строки MATCH(name) AGAINST("+word*") IN BOOLEAN MODE работает намного быстрее (в моем случае в 2-3 раза), чем использование name LIKE "word%" OR name LIKE "% word". Однако при создании объединений проверьте EXPLAIN, чтобы увидеть, действительно ли используется индекс FTS. Похоже, что оптимизатор MySQL не очень хорошо угадывает, когда следует использовать индекс FTS.

2 голосов
/ 11 апреля 2012

Функция FULLTEXT, которая раньше требовала загрузки специальной сборки с labs.mysql.com, теперь является частью основной сборки MySQL версии 5.6.5 и выше (все еще в бета-версии). Документация для функций FULLTEXT теперь включает подробности, относящиеся к InnoDB: Функции полнотекстового поиска MySQL

1 голос
/ 26 ноября 2011

Помните, что поиск в Sphinx разработан для полнотекстового поиска в mysql, это просто особенность ...

Здесь вы можете сравнить sphinx и mysql FTS: http://www.percona.com/files//presentations/opensql2008_sphinx.pdf

Тест производительности InnoDB FTS по сравнению с MyISAM: http://blogs.innodb.com/wp/2011/07/innodb-fts-performance/

InnoDB немного быстрее, особенно в индексировании, но все еще далек от производительности сфинкса ...

...