Créer un attribut personnalisé pour sunspot
Bonjour,
J’utilise sunspot avec le moteur de recherche solr pour effectuer des recherches sur mes sites en ruby. J’ai parfois besoin de filter sur un attribut personnalisé, par exemple une string comprenant la date de l’article et son titre. Pour cela, il suffit de créer une fonction dans notre model qui retourne une string et de demander à sunspot de l’indexer.
Par exemple, si je veux pouvoir filter sur le titre et le mois:
class Post < ActiveRecord::Base
def mycustomtitle
self.title + self.created_at.strftime('%m')
end
searchable do
string :myCustomTitle
end
end
Je peux alors faire dans un controller quelque chose comme ca :
@search = Sunspot.search Post do
with(:myCustomTitle, "test-05")
order_by :created_at, :desc
paginate :page => params[:page], :per_page => 6
end
@posts = @search.results
Sunspot me retournera alors que les posts qui ont comme myCustomTitle() la string “test-05”
Bonne programmation.
Leave a Comment