Я думаю, это зависит от того, насколько серьезно вы занимаетесь поиском.
Если вы просто хотите выполнить поиск в некоторых простых полях VARCHAR, которые вы бы сделали вручную, сгенерировав несколько операторов "LIKE '% xyz%'", то все, что вам нужно, - это плагин, который сделает это за вас. Мой любимый здесь searchlogic . Он позволяет использовать несколько удобных динамических областей в ваших моделях, которые вы можете связать вместе (как и другие области). Например, вы можете написать что-то вроде этого:
User.last_name_like("Doe").age_gt(30).age_lt(40)
Вот отличный скринкаст о том, как использовать другие его функции.
Но оператор SQL LIKE не очень подходит для поиска больших кусков текста. Так что, если это то, что вам нужно, вам лучше использовать плагин, который фактически индексирует ваши данные.
В этом случае мышление сфинкса (упомянутое в других ответах) является отличным решением. Просто имейте в виду, что он требует некоторых шагов установки для конкретной платформы и работает только с PostreSQL и MySQL (он не работает с SQLite по умолчанию для Rails). Использование этого также не так просто - вам нужно определить, что индексировать для каждой модели, которую вы хотите найти, построить индекс, запустить Sphinx и т. Д.