2012-01-12 89 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 

現在我已經訂購併正在尋找......如果有其他/更好的想法,請保持他們的來臨!