1

我在我的数据库中存储了一些 HTML 内容,我希望能够使用 Sunspot 执行搜索,同时从命中输出中省略 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?这是因为我希望用突出显示跨度来包装搜索文本,但是除此之外,我希望从返回的被命中的文本中完全剥离其他所有内容。这甚至可能吗?

4

1 回答 1

3

最终为我工作的是剥离被 solr 索引的内容。为此,我必须在模型内部进行以下更改:

  include ActionView::Helpers::SanitizeHelper

  searchable do
    text :content, :stored => true do
      strip_tags(content)
    end
  end

添加这些更改并运行 rake sunspot:solr:reindex 就像一个魅力!

于 2013-01-10T22:52:00.503 回答