Лучший способ реализовать функцию поиска с использованием innoDb - PullRequest
3 голосов
/ 10 августа 2009

Мне нужно реализовать что-то вроде полнотекстового поиска по паре, если индексы в большой таблице продуктов, с использованием innodb, MyISAM не подходят из-за отсутствия транзакций и поддержки отношений.

Я могу придумать пару способов сделать это: плагин, хранимую процедуру, таблицу поиска с ключами и скопированные индексы в формате MyIsam.

Как вы достигли этого в прошлом, что является лучшим способом (включая любой, который я не упомянул) и почему?

Плагин звучит дорого, хранимая процедура звучит медленно, а таблица поиска звучит как и кошмар администратора.

Рад слышать ваши взгляды.

Ответы [ 3 ]

3 голосов
/ 10 августа 2009

Возможно, можно использовать внешний (независимый от базы данных) полнотекстовый движок, например, Lucene (если вы используете PHP, Вы также можете взглянуть на Zend_Search_Lucene)

Есть много таких (некоторые бесплатные, некоторые дорогие, некоторые с открытым исходным кодом, а некоторые проприетарные); но они, как правило, позволят вам пойти дальше, чем позволяет полнотекстовый MySQL - и он не будет интегрирован в базу данных (что может быть хорошо: например, вы можете индексировать документы - или плохо: Вы не можете легко объединить эти результаты с одним из результатов SQL-запроса)

Преимущество использования такого движка состоит в том, что полнотекстовый поиск действительно является их работой; и они должны делать это хорошо (и быть «разумными» в отношении того, что пользователи склонны вводить).

Недостаток - у вас должен быть другой двигатель; что означает больше работы, больше конфигурации и больше развития, так как вы не можете просто включить их в свою БД.

2 голосов
/ 10 августа 2009

Посмотрите на Поиск сфинкса

0 голосов
/ 10 августа 2009

Xapian делает хороший набор php-привязок, и, как и несколько других, xapian может работать как отдельный сервер, прослушивающий порт для поисковых запросов, отлично подходящий для обмена контентом между несколькими сайтами.

Функция "Вы имели в виду" присутствует в xapian, но отсутствует в версии для удаленного сервера (пока)

...