LoginSignup
51
48

More than 5 years have passed since last update.

Railsでsunspot(solr)を使って全文検索

Last updated at Posted at 2013-10-25

インストールから起動まで

Gemfile
gem 'sunspot_rails'
gem 'sunspot_solr' 
コンフィグファイルを生成
rails generate sunspot_rails:install
solrを起動
bundle exec rake sunspot:solr:start

既存のデータに対して再Index

modelのsearchableを見てるので
searchableの内容を変更した時も実行しないといけないみたい

Indexを再作成
bundle exec rake sunspot:solr:reindex

検索

基本的な使い方

model
has_many :bookmarks

searchable do
  text :title
  text :content
  double :rating
  integer :user_id

  string :tags, :multiple => true do
    bookmarks.map {|b| b.tag}
  end    
end
controller
result = Recipe.search do
  fulltext params[:q]
end
@recipes = result.results

withで追加条件を指定可能

controller
result = Recipe.search do
  fulltext params[:q]

  with :rating, 1
  with :user_id, user_id if user_id.present?
end
@recipes = result.results

様々な条件指定

controller
with :rating, 1 # rating = 1
with(:rating).less_than 1 # rating < 1
with(:rating).less_than_or_equal_to 1 # rating <= 1
with(:rating).greater_than 1 # rating > 1
with(:rating).greater_than_or_equal_to 1 # rating >= 1

multipleなFieldに対する条件指定

controller
with :tags, [1, 2] # 1 or 2
with(:tags).all_of [1, 2]   # 1 and 2

ページングも出来る

controller
result = Recipe.search do
  fulltext params[:q]

  with :user_id, user_id if user_id.present?
  paginate :page => 1, :per_page => 10
end
@recipes = result.results
51
48
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
48