Реализация поиска в приложении Ruby on Rails 3? - PullRequest
10 голосов
/ 31 января 2010

Я пишу свое первое приложение на Ruby on Rails, и мне нужно реализовать функцию поиска. Потребуется выполнить поиск в базе данных (1 столбец на таблицу в 3 разных таблицах) и вернуть наиболее релевантные результаты в каждой из 3 категорий. В некотором роде, как вы можете сделать поиск на Amazon.com, который будет возвращать результаты из всех различных отделов.

Есть ли в мире Ruby on Rails метод gem / library / common, о котором мне следует знать (который работает с Rails 3)? В противном случае, что мне делать, чтобы реализовать функцию поиска в моем приложении?

Ответы [ 2 ]

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

Я думаю, это зависит от того, насколько серьезно вы занимаетесь поиском.

Если вы просто хотите выполнить поиск в некоторых простых полях VARCHAR, которые вы бы сделали вручную, сгенерировав несколько операторов "LIKE '% xyz%'", то все, что вам нужно, - это плагин, который сделает это за вас. Мой любимый здесь searchlogic . Он позволяет использовать несколько удобных динамических областей в ваших моделях, которые вы можете связать вместе (как и другие области). Например, вы можете написать что-то вроде этого:

User.last_name_like("Doe").age_gt(30).age_lt(40)

Вот отличный скринкаст о том, как использовать другие его функции.

Но оператор SQL LIKE не очень подходит для поиска больших кусков текста. Так что, если это то, что вам нужно, вам лучше использовать плагин, который фактически индексирует ваши данные.

В этом случае мышление сфинкса (упомянутое в других ответах) является отличным решением. Просто имейте в виду, что он требует некоторых шагов установки для конкретной платформы и работает только с PostreSQL и MySQL (он не работает с SQLite по умолчанию для Rails). Использование этого также не так просто - вам нужно определить, что индексировать для каждой модели, которую вы хотите найти, построить индекс, запустить Sphinx и т. Д.

2 голосов
/ 31 января 2010

Вероятно, вам нужно будет использовать поисковик.Взгляните на мышление сфинкса плагин.Я также использовал acts_as_ferret , но это может вызвать некоторые проблемы.

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

  1. Реализовать поиск (с помощью sql или с помощью некоторой поисковой системы, такой как Sphinx и т.*

    Google - ваш друг: посмотрите здесь и здесь .

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