2012-01-12 20 views
1

私のレール3.1アプリケーションにprojectモデルがあり、Solrを使用して検索を実行したいと思います。 、ちょうど整数型、nrと呼ばれる私のモデルでは、Sunspot Solr、Rails and Ordering

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で注文したいのですが、これはうまくいかず、私のプロジェクトは完全にランダムな順番になっているようです。 私ProjectsControllerのindexアクションのコードは次のようになります。

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 

しかし、ときに私は私が

Sunspot::UnrecognizedFieldError in ProjectsController#index 

No field configured for Project with name 'nr' 

エラー...私は必要なもの

任意のアイデアを取得し、その後myappに/プロジェクトをご覧ください。 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で。 name_numberという仮想属性をProjectモデルに追加し、代わりにこのフィールドを検索しました。

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

私は今すぐ注文し、検索しています...他にも良いアイデアがあれば、来てください!

関連する問題