プロジェクトのタグ付けにはact_as_taggable_onを使用し、検索にはsunspot/solrを使用しています。
奇妙な予期しない結果が得られます。最初のセットアップ(ショートバージョン):
モデル:
Class Person
has_many :projects
searchable do
string :project_tags, :multiple => true do
projects.map { |p| p.tag_list}.flatten
end
end
Taglistは、act_as_taggable_onのメソッドであり、プロジェクトごとにタグの配列を返します(fe ["foo"、 "bar"])。プロジェクトメンバーのプロジェクトタグにインデックスを付けます。
私たちのコントローラーで、次のことを行います。
Person.search() do
with(:project_tags).any_of(params[:tags])
end
これにより、適切な人が返されます。ここまでは順調ですね。
問題
複数のタグを検索できるようにしたい。したがって、黒点の指示に従って、配列を渡します。コードはおおよそ次のようになります。
@tags_array= params[:tags].split(/ /)
Person.search() do
with(:project_tags).any_of(@tags_array)
end
これで、Sunspotは、使用するタグに関係なく、結果としてすべての人に提供されます。私たちはこれをコンソールで狂ったようにテストしてきましたが、どこが間違っているのか理解できません。
どんな助けでもいただければ幸いです!
アーウィン