Question

J'ai un modèle project dans mes rails 3.1 application et je veux utiliser Solr pour lancer une recherche sur elle.

Je défini la recherche comme ceci:

  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

Le projet-nr, dans mon modèle vient d'appeler nr, type entier, est la référence la plus utilisée pour trouver un projet.

Maintenant, en plus d'avoir un formulaire de recherche je veux encore mes projets commandés par le nr quand aucune recherche a été effectuée, mais cela ne fonctionne pas - mon projet semble être en ordre totalement aléatoire. Le code de mon action index ProjectsController ressemble à ceci:

  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

Mais quand je visite puis myapp / projets que je reçois un

Sunspot::UnrecognizedFieldError in ProjectsController#index

No field configured for Project with name 'nr'

erreur ...

toutes les idées que je dois faire à l'ordre par nr. ?

Merci

Était-ce utile?

La solution

Ok, je l'ai résolu en activant le champ nr à un nombre entier de ma consultable:

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

Maintenant, j'ai pu le commander bien mais je ne pouvais pas effectuer une recherche de texte sur la project_nr plus. Donc, j'ai ajouté un name_number attribut virtuel à mon modèle Project et au lieu recherché sur ce champ.

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

Maintenant, je commande et la recherche en place ... S'il y a d'autres / meilleures idées, gardez-les à venir!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top