Рельсы - Поиск контроллера
Я готовлюсь встроить поисковые возможности в мое приложение. Я хочу, чтобы поиск имел возможность охватить несколько моделей.
Я думаю о добавлении контроллера поиска, который бы затем решал, какие модели искать в зависимости от настроек и т. Д.
Как вы думаете? Контроллер поиска звучит правильно или есть что-то с открытым исходным кодом, о котором я должен подумать?
Спасибо
3 ответа
У вас есть несколько вариантов поиска в мире ruby, как
- сфинкс
- хорек
- Solr
- 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