Рельсы - Поиск контроллера

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

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

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

Спасибо

3 ответа

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

  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, задержка очень и очень меньше.

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

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

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

Другие вопросы по тегам