Искать в Ruby On Rails - PullRequest
       41

Искать в Ruby On Rails

4 голосов
/ 23 июня 2009

У меня есть небольшой сайт с около 500 фотографиями и 150 посетителями в день, который размещен на Dreamhost. Я хотел бы добавить простую поисковую систему, которая не должна запускать длительные процессы , которые не разрешены на общем хосте.

Поисковая система должна обрабатывать различные поля, принадлежащие различным моделям: Photo, Photo.author.name, Photo.comments.content и многие другие

Есть ли плагин, который может помочь?

Ответы [ 6 ]

4 голосов
/ 23 июня 2009

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

Подход, который я видел в работе, отличным примером которого является архитектура базы данных Википедии, заключается в создании производных копий записей моделей специально для целей поиска. Их необходимо синхронизировать с основной записью, но это легко сделать с помощью обработчика after_save или простого оператора обновления SQL.

Следует отметить, что ActiveRecord не способен понимать полнотекстовые индексы. Требуется довольно уродливое расширение, чтобы заставить его взаимодействовать, хотя у меня есть пример, связанный с набором хаков MySQL:

http://github.com/theworkinggroup/rails_mysql_hacks/tree/master

3 голосов
/ 23 июня 2009

Существует как минимум 3 полнотекстовых поисковых системы для Rails:

Какой из них лучший выбор? Это зависит. Здесь вы можете прочитать сравнение сфинкса и хорька, включая комментарий от Engine Yard.

2 голосов
/ 24 июня 2009

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

1 голос
/ 23 июня 2009

Для хорька или сфинкса потребуется специальный фоновый процесс. Ваш единственный вариант выглядит как полнотекстовый поиск mysql с правильными индексами.

1 голос
/ 23 июня 2009

acts_as_ferret, скорее всего, послужит вам хорошо.

Но Я не знаю, будет ли и как Феррет будет работать на таких настройках, как ваша.

0 голосов
/ 23 июня 2009

Возможно, вы захотите заглянуть в Sphinx / Thinking Sphinx для быстрого полнотекстового поиска.

Думающий сфинкс

Я не знаю, устанавливаете ли пакеты Unix и весь этот процесс излишним для того, что вы ищете на Dreamhost, но это очень быстрое и надежное решение, которое удовлетворит ваши потребности в будущем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...