Sunspot使用笔记

记录一些Sunspot的使用笔记。github地址:https://github.com/sunspot/sunspot

引入Rails项目中

1
2
3
gem 'sunspot_rails'
gem 'sunspot_solr'
gem 'progress_bar'

安装,获得默认配置

1
rails generate sunspot_rails:install

运行之后,会在项目的config下生成一个sunspot.yml,用来配置各种运行环境下的参数

开发环境下运行

1
2
rake sunspot:solr:start #后台运行
rake sunspot:solr:run #在前台运行

设置model对象

对需要进行中文分词搜索的model进行设置,假设我们有一个Article对象,我们需要对titlecontent这两个字段进行分词索引。

1
2
3
4
5
6
7
8
class Article < ActiveRecord::Base
searchable do
text :title
text :content
end
end

建立索引

1
rake sunspot:solr:reindex

使用搜索

1
2
3
4
5
6
7
8
9
10
11
q = params[:q]
page = params[:page]
@articles = Article.search do
fulltext q
# 对搜索结果进行分页、每页条数的设置
paginate :page => page, :per_page => 80
end
@articles.results # => 搜索的结果

一些翻页的属性

1
2
3
4
5
results.total_pages # => 总页数
results.first_page? # => 当前页下,是否可以去首页
results.last_page? # => 当前页下,是否可以去末页
results.previous_page # => 上一页的页码
results.next_page # => 下一页的页码

部署

需要修改config/sunspot.yml,将production下的path改成solr/default

1
2
3
4
5
6
production:
solr:
hostname: localhost
port: 8983
log_level: WARNING
path: /solr/default

运行

1
RAILS_ENV=production rake sunspot:solr:start