我在数据库中存储了一些HTML内容,我希望能够使用太阳黑子执行搜索,同时从命中输出中省略HTML,如果可能的话搜索本身。
我的模型:
class Article < ActiveRecord::Base
attr_accessible :caption
searchable do
text :content, :stored => true
end
end
搜索行动:
def find
@search = Article.search do
fulltext params[:search] do
highlight :name
end
end
end
模板:
- @search.each_hit_with_result do |hit, article|
- unless hit.highlight(:content).nil?
%p= hit.highlight(:content).format { |word| "<span class="highlight">#{strip_tags(word)}</span>"}.html_safe
正在搜索的一些示例内容可能是这样的:
<h1>Hello world</h1>
<p> Search for me me!</p>
<a href="#">Link</a>
注意,我将输出标记为html_safe?这是因为我想用高亮跨度来包装搜索文本,但除此之外,我想从返回的文本中完全剥离。这可能吗?
最终对我有效的是剥离被solr索引的内容。为此,我必须在模型中进行以下更改:
include ActionView::Helpers::SanitizeHelper
searchable do
text :content, :stored => true do
strip_tags(content)
end
end
添加这些变化并运行rake sunspot:solr:reindex就像一个魅力!