Любые сторонние поисковые системы (полнотекстовый поиск и т. Д.) Нормально работают с таблицами InnoDB? - PullRequest
2 голосов
/ 03 августа 2011

Я знаю, что таблицы InnoDB пока не поддерживают полнотекстовый поиск. Поэтому я подумал об использовании сторонней поисковой системы, такой как solr, xapian или whoosh. Эти сторонние инструменты одинаково хорошо работают с таблицами InnoDB, как они работают с таблицами MyIsam? Мне нужно найти например предложения по написанию и похожие строки ...

Ответы [ 3 ]

1 голос
/ 03 августа 2011

Сторонние полнотекстовые поисковые системы обычно копируют данные, возвращаемые запросом MySQL, и используют их для заполнения своего поискового индекса.В этом отношении нет никакой разницы между источниками данных MyISAM и InnoDB.

Я выступил с докладом Практический полнотекстовый поиск в MySQL несколько лет назад.Вы можете найти это интересным.

1 голос
/ 04 августа 2011

Вы можете использовать Solr / Lucene для полнотекстового поиска по вашим данным БД. Так как моя база данных MySQL слишком большая для быстрого полнотекстового поиска, я решил объединить mysql и Solr / lucene.

Важно знать, что Solr / Lucene не является плагином MySQL. Таким образом, вы не сможете осуществлять поиск по полнотекстовому индексу, используя типичные SQL-выражения MySQL. Полнотекстовый поиск, инициированный приложением, должен сначала отправить запрос в сторонний полнотекстовый индекс (Solr), который возвращает первичные ключи связанных документов. Второй шаг - запустить оператор SQL для вашей MySQL innoDB с предложением where с соответствующими первичными ключами из набора результатов Solr. Это решение работает в моем случае очень хорошо и намного, намного быстрее (и лучше), чем обычный полнотекстовый поиск MySQL Myisam.

В качестве альтернативы вы можете не только индексировать данные в solr. Вы также можете хранить данные в solr дополнительно. В этом случае solr может вернуть полный текст. Таким образом, вам не нужно получать данные из базы данных, как в примере выше.

Работают ли эти сторонние инструменты с таблицами InnoDB одинаково хорошо, как и с таблицами MyIsam?

Абсолютно. У Solr есть DataImportHandler. Вы определяете оператор SQL для получения данных, которые вы хотите индексировать в solr, например: select * from MyTable; Но имейте в виду: сейчас (насколько я знаю) нет доступных плагинов MySQL Solr. Сотрудничество Solr и MySQL должно обрабатываться приложением.

0 голосов
/ 03 августа 2011

Sphinx поддерживает собственный индекс и просто своевременно получает данные из MySQL, выполняя запрос.

Он даже не знает о базовой структуре таблицы, и до тех пор, пока запрос выполняется и возвращает результаты, все в порядке для Sphinx.

Другие сторонние движки работают аналогичным образом.

...