4

Articleというインデックス付きモデルがあり、solrに未公開の記事のインデックスを付けたくありません。

class Article < ActiveRecord::Base
  searchable do
    text :title
    text :body
  end
end

#publishedではない記事を指定するにはどうすればよいですか?インデックスを付けるべきではありませんか?

4

3 に答える 3

7

未公開の記事が検索インデックスに含まれないようにする場合は、代わりに次の方法で行うことができます。

class Article < ActiveRecord::Base
  searchable :if => :published? do
     text :title
     text :body
  end
end

モデルは、公開されたときにのみインデックスが作成されます。

ただし、管理者が未公開の記事も含めて記事を検索できるようにする場合は、私のアプローチはあまり面白くありません。

注:呼び出すと、パラメーターarticle.index!に関係なく、インスタンスがインデックスに追加されます:if => :method

于 2012-08-02T13:56:33.127 に答える
7

公開されたステータスを必ずインデックスに登録してください。

class Article < ActiveRecord::Base
  searchable do
    text :title
    text :body
    boolean :is_published, :using => :published?
  end
end

次に、クエリにフィルタを追加します

Sunspot.search(Article) do |search|
  search.with(:is_published, true)
  # ...
end
于 2010-04-28T19:02:59.840 に答える
3

sunspot_railsのコードベースを少し調べるmaybe_mark_for_auto_indexingと、solrを含むモデルに追加されるというメソッドが明らかになります。そのメソッドをオーバーライドして@marked_for_auto_indexing、特定のモデルの基準に基づいて設定することができます。そのモンキーパッチですが、問題を解決するのに役立ちます。urリファレンスのコードはにありlib/sunspot/searchable.rbます。

于 2010-10-26T18:28:50.150 に答える