2010-03-20 4 views
1

Я хочу, чтобы полнотекстовый поиск эффективно в MYSQL, используя совпадение. Специально мне нужно использовать двоичные операторы (например, сопоставить текст, но не другой текст). Однако мне также нужна эффективная поддержка транзакций.
Но полнотекстовый поиск поддерживается только на MYISAM, а не на Innodb. Что делать?mysql полный текстовый поиск

ответ

1

Предполагая, что вам необходимо использовать Innodb.

Я бы предложил использовать внешний инструмент поиска - sphinx или solr получит мой голос. Оба они последовательно возвращают лучшие результаты, чем полнотекстовый поиск mysql, и намного быстрее. Я бы сказал, что sphinx легче вставать и уходить, особенно из mysql.

Если вы не можете установить ни один из них, либо просто не иметь времени, нажав, вы можете либо переместить или дублировать только необходимые поля в таблице myisam, чтобы вы могли использовать полнотекстовый поиск mysql.

+0

хороший совет, но я не могу перемещать или дублировать таблицы/столбцы, мне нужно удалить соответствующие результаты после поиска, желательно, сделанные в одном выражении SQL. – user121196

1

Это предложение, а не ответ.

Если вы собираетесь иметь большую базу данных или хотите расширенные функции, не используйте полнотекстовый поиск mysql. Вы можете использовать сфинкс или люцен.

SPhinx обычно быстрее и легче, но Lucene имеет гораздо больше функций. Я лично использую Сфинкса.

+0

Используйте Lucene, поскольку Lucene основана на Java. – TIMEX

+0

sphinx - это только php? – user121196

+0

Вы можете использовать любой язык с lucene или sphinx. Это факт, что «настройка», lucene - это Java. – TIMEX

0

Вы также можете попробовать Ferret, это рубиновая реализация библиотеки поиска apache. Согласно скоростным испытаниям, это также намного быстрее.

Смежные вопросы