1

データベースにいくつかのHTMLコンテンツを保存していますが、ヒット出力からHTMLを省略し、可能であれば検索自体を省略して、Sunspotを使用して検索を実行できるようにしたいと考えています。

私のモデル:

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 に答える