Bog*_*iev 4 ruby solr ruby-on-rails sunspot
我有一个名为Article的索引模型,我不希望solr索引未发表的文章.
class Article < ActiveRecord::Base
searchable do
text :title
text :body
end
end
Run Code Online (Sandbox Code Playgroud)
如何指定不是#published的文章?不应该编入索引?
请务必索引已发布的状态.
class Article < ActiveRecord::Base
searchable do
text :title
text :body
boolean :is_published, :using => :published?
end
end
Run Code Online (Sandbox Code Playgroud)
然后在查询中添加过滤器
Sunspot.search(Article) do |search|
search.with(:is_published, true)
# ...
end
Run Code Online (Sandbox Code Playgroud)
如果您想确保未发布的文章从未包含在搜索索引中,您可以这样做:
class Article < ActiveRecord::Base
searchable :if => :published? do
text :title
text :body
end
end
Run Code Online (Sandbox Code Playgroud)
然后,该模型仅在发布时编入索引.
如果您还希望管理员能够搜索文章(包括未发布的文章),那么我的方法就不那么有趣了.
注意:article.index!无论:if => :methodparam 如何,调用都会将实例添加到索引中.