рельсы - Поиск контроллера - PullRequest
4 голосов
/ 26 октября 2010

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

Я думаю о добавлении контроллера поиска, который бы затем решал, какие модели искать, основываясь на настройках и т. Д ...

Что ты думаешь? Контроллер поиска звучит правильно или есть что-то с открытым исходным кодом, о котором я должен подумать?

Спасибо

Ответы [ 3 ]

4 голосов
/ 26 октября 2010

У вас есть несколько вариантов поиска в мире рубинов, например

  1. Сфинкс
  2. Хорек
  3. Solr
  4. Endeca

Просматривая документацию на heroku, heroku предлагает использовать solr - потрясающую поисковую систему. http://docs.heroku.com/websolr и http://docs.heroku.com/full-text-search более подробно об этом. Мы выбрали solr для поиска в одном из наших проектов и использовали sunspot_rails, который прекрасно интегрируется с вашими моделями и переиндексирует при изменении вашего контента. Мы использовали драгоценный камень sunspot_rails из http://github.com/outoftime/sunspot, который также рекомендуется heroku.

Предостережение заключается в том, что файловая система heroku доступна только для чтения и не позволяет запускать произвольные процессы, поэтому вам нужно выбрать такой, как websolr (от 20 $ в месяц) или создать собственный экземпляр amazon ec2 и выполнить индексацию там. Поскольку heroku также работает на amazon ec2, задержка очень и очень меньше.

Возвращаясь к альтернативам, Ferret, как известно, часто ломает / портит индексы в производстве. Сфинкс не поддерживается героем. Эндека чертовски дорогая, ты должен тратить большую часть своего бюджета только на получение базовых результатов.

3 голосов
/ 26 ноября 2011

Если вы используете Postgres, вы можете использовать гем pg_search

2 голосов
/ 26 октября 2010

Я бы сказал, что избегайте использования собственной поисковой системы, если только у вас нет особой потребности, которая не может быть удовлетворена чем-то вроде Sphinx (также читайте this )

...