sunspotのチュートリアル意訳
インストール
solrのインストールはmacなら
brew install solr
でOK。Rails側はまずGemfileに
gem 'sunspot_rails'
を書いて bundle install。それから
rails g sunspot_rails:install
で config/sunspot.yml を作成。
solr のインスタンスを起動
下記の rake タスクで起動できる
rake sunspot:solr:start
初回実行時に Rails.root/solr ディレクトリが作成される。ここには Solr の設定とインデックスのデータファイルが置かれる。solr/data は.gitignoreに追加しておいた方がいいかも。Solr の設定いじりたい場合は solr/conf 配下のファイルをほげる。
モデルの設定
下記みたいに searchable メソッドで設定する。
class Post < ActiveRecord::Base searchable do text :title, :default_boost => 2 text :body end end
Postが作られたり更新されたりしたときに自動でインデックスを更新してくれるみたい。searchable の中身を変更したときなどは、手動でインデックスの更新が必要
rake sunspot:reindex
検索
こんな感じで検索すると
class PostsController < ApplicationController def search @search = Post.search(:include => [:comments]) do keywords(params[:q]) end end end
Sunspot::Search オブジェクトが @search に入る。view は下記のように書く。
.results - @search.each_hit_with_result do |hit, post| .result %h2= h post.title %h6== (#{h hit.score}) %p= h truncate(post.body, :length => 100) .pagination = will_paginate(@search.results)
これだと検索したときと検索してないときの処理を分けなきゃいけなくて面倒くさい気がする。