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