thinking_sphinx在rails使用的简单描述
?写作目的:由于项目需要,需要在rails3中使用插件‘thinking_sphinx’,翻阅资料无数,没有最终我想要的结果,有的只是几年前的杰作,而且是抄来抄去,没有任何创新,也就是说过时了。痛定思痛我决定写一篇文章来做简单的介绍。
第一步:在Gemfile添加gem包如下:
?
? ? ? ? ? ?gem 'mysql2' ?
? ? ? ? ? ?gem "riddle", "~> 1.5.0"
? ? ? ? ? ?gem "thinking-sphinx", "~> 2.0.10"
?
当然bundle install 是少不了的。source 我改成了 'http://ruby.taobao.org',速度比较快。
?
第二步:在Config下添加文件sphinx.yml,内容如下:
?
?
development: &my_settings
? ? #这个路径是我之前安装的支持中文搜索的,后续会介绍怎么安装。
? ? bin_path: /usr/local/coreseek/bin
? ??#这个路径是我之前安装的支持中文搜索的,后续会介绍怎么安装。
? ? charset_dictpath: /usr/local/mmseg3/etc
?
? ? charset_type: zh_cn.utf-8
?
? ? ngram_len: 0
?
test:
?
? ?<<: *my_settings
?
production:
?
? ? <<: *my_settings
?
第三步:定义索引
?
?
?define_index do
? ? indexes content
? ? indexes :name
? ? indexes title
? ?#实现实时搜索,不然你新增的数据无法搜索的到。
? ? indexes delta
? ? set_property :delta => true
? end
?
第四步:执行命令
?
? ? ? ? ? ? ? ?rails g migration add_delta_to_posts delta:boolean
?
修改生成文件内容
? ? ? ? ? ? ??def change
? ? ? ? ? ? ? ? ? ? ?add_column :posts, :delta, :boolean, :default => true, :null => false
? ? ? ? ? ? ? end
执行rake db:migrate
第五步:修改index.html.erb页面
? <%= form_tag(posts_path,:method=>'get') do %>
? ? ? <%= text_field_tag :search, params[:search] %>
? ? ? <div><%= submit_tag 'Search', :name => nil %></div>
? <% end %>
第六步:修改controller
def index
? ?# @posts =Post.search(params[:search])
? ? if params[:search].nil?
? ? ? @posts = Post.all
? ? else
? ? ? @posts = Post.search params[:search]
? ? end
?
?
? ? respond_to do |format|
? ? ? format.html # index.html.erb
? ? ? format.json { render json: @posts }
? ? end
? end
?
第七步:rake ts:config、rake ts:rebuild、rake ts:index都能自动生成文件development.sphinx.conf,而
rake ts:index INDEX_ONLY 不生成文件,只是建立索引。
?
第八步:启动服务 rake ts:start
? ? ? ? ? ? ? 关闭服务 ?rake ts:stop
?
?
第九步:
? ? ? ? ? ?启动rails: ? rails s
?
第十步:访问页面?中英文都应该OK的。
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?