Mysql 斯芬克斯方法

Mysql 斯芬克斯方法,mysql,ruby-on-rails,sphinx,thinking-sphinx,Mysql,Ruby On Rails,Sphinx,Thinking Sphinx,我正在尝试在rails 3应用程序中设置thinking sphinx。我设置了mysql并安装了sphinx,没有错误。我的档案里有 gem "riddle", "~> 1.5.0" gem "thinking-sphinx", "~> 2.0.10" 这些装置安装得很好。在我的模型中,我有 define_index do indexes :name indexes acad_field indexes expertise indexes inte

我正在尝试在rails 3应用程序中设置thinking sphinx。我设置了mysql并安装了sphinx,没有错误。我的档案里有

gem "riddle", "~> 1.5.0"
gem "thinking-sphinx", "~> 2.0.10"
这些装置安装得很好。在我的模型中,我有

define_index do
    indexes :name
    indexes acad_field
    indexes expertise
    indexes interests
    indexes experience
    indexes marital_status
    indexes email
    indexes place_of_birth
    indexes birthyear
    indexes hometown
    indexes current_residence
    indexes languages
    indexes nationalities
    indexes ethnicities_mom_dad
    indexes institution
    indexes program

end
在控制器的索引中,我有

def index
 #@profiles = Profile.all
 @profiles = Profile.search params[:search]
 respond_to do |format|
   format.html # index.html.erb
   format.json { render :json => @profiles }
 end
end
在我的路线上,我有

match "profiles?search=:search", :to => "profiles#index"
当我尝试运行搜索时,我得到了错误

Routing Error

undefined method `define_index' for #<Class:0xb3ada670>
路由错误
未定义的方法“定义索引”#

我在这里做错了什么。

根据@fuzzyalej的评论,需要采取以下步骤:

  • 将对应的gem行替换为
    gem“thinking sphinx”、“~>2.0.10”、:require=>“thinking_sphinx”
  • 您不需要添加?search=:搜索到路由匹配,因为rails可以接受GET变量而无需其他规范
我只需要跑步

rake thinking_sphinx:rebuild

在terminal

中,在gem文件中添加gem规范后,您可能没有运行“bundle install”,我不认为rake ts:rebuild实际上解决了这个问题:)

可能与: