Как искать текст с Active Record в Ruby on Rails 3? - PullRequest
5 голосов
/ 22 июля 2010

Как мне найти строку в Ruby on Rails?

Например, все записи со столбцами, которые содержат «текст».

Есть ли у Active Record метод для этого или мне нужно использовать SQL "LIKE" для него?

Ответы [ 5 ]

11 голосов
/ 22 июля 2010
 Model.find(:all, :conditions => ['name LIKE ?', "%#{tag}%"])

Где тег - это ваша переменная, содержащая строку

согласно комментарию @bjg: -

Или в Rails 3 вы бы написали это как

  Model.where(["name LIKE :tag", {:tag => tag}]) 

с использованием нового синтаксиса поиска -

8 голосов
/ 07 августа 2010

Sql like может быть очень неэффективным в некоторых случаях, например, во многих случаях в MySQL . Я рекомендую использовать программное обеспечение для полнотекстового индексирования, такое как Sphinx, Xapian или Lucene.

3 голосов
/ 03 октября 2012

Если вы развертываете на heroku или не против отбросить агностицизм в db, postgres поддерживает полнотекстовый поиск Вам не нужно будет запускать дополнительный сервис. Кроме того, PG является лучшей базой данных ОС. http://tenderlove.github.com/texticle/

3 голосов
/ 22 июля 2010

Вы также можете использовать метод Арела 'match':

Model.match(:name => tag)

, если вы хотите искать во всех столбцах, вам следует написать дополнительный код.

2 голосов
/ 09 августа 2010

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

ActsAsFerret::define_index( 'my_index',
                        :models => {
                          SomeModel => {
                            :fields => {
                              :name => { :boost => 4, :store => :yes, :via => :ferret_title },
                              :foo => { :store => :no,  :index => :untokenized },
                              :baz => { :store => :yes, :via => :ferret_content }
                            }
                          }
                        } )

Все индексы activ_s_ferret настраиваются в одном файле RAILS_ROOT / config / aaf.rb

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