2012-01-12 93 views
1

我在我的rails 3.1应用程序中有一个project模型,我想使用Solr在其上运行搜索。太阳黑子Solr,导轨和排序

我这样定义的搜索:

searchable do 
    text :nr, :boost => 5 # nr is integer 
    text :name, :boost => 5 
    text :description, :boost => 2 
    text :client do 
     client.name 
    end 
    text :tasks do 
     tasks.map(&:name) 
    end 
    end 

项目-NR,在我的模型只是叫nr,整数类型,是查找项目最常用的参考。

现在,除了搜索表单,我仍然希望我的项目按nr排序时没有执行搜索,但这不起作用 - 我的项目似乎完全是随机排列的。 我ProjectsController指数操作的代码如下所示:

def index 
    @search = Project.search do 
     fulltext params[:search] 
     paginate :page => params[:page] 
     order_by :nr, :desc 
    end 

    @projects = @search.results 

    #@projects = Project.active.visible.design.order("nr desc") 
    respond_to do |format| 
     format.html # index.html.erb 
     format.json { render json: @projects } 
    end 

但是,当我拜访然后MYAPP /项目中,我得到一个

Sunspot::UnrecognizedFieldError in ProjectsController#index 

No field configured for Project with name 'nr' 

错误...

任何想法,我需要什么要做nr。 ?

感谢

回答

0

好吧,我解决它在我搜索的转动nr场为一个整数:

searchable do 
    integer :nr 
    text :name, :boost => 5 
    text :description, :boost => 2 
    text :client do 
    client.name 
    end 
    text :tasks do 
    tasks.map(&:name) 
    end 
end 

现在我能够很好地订购吧,但我不能执行文本搜索在project_nr了。 因此,我在我的Project模型中添加了虚拟属性name_number,而是在此字段中搜索。

def name_number 
    "#{self.nr} - #{self.name[0..24]}" 
    end 

现在我已经订购并正在寻找......如果有其他/更好的想法,请保持他们的来临!