thinking_sphinx在rails使用的简单描述

       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的。

猜你喜欢

转载自jiafuguang.iteye.com/blog/1905632
今日推荐