Sunspot Solr, Rails et commande
-
27-10-2019 - |
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
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!