現在、それぞれに共通のスフィンクス属性と固有のスフィンクス属性の両方を持っている約 9 つのモデル (近日中に追加予定) があります。これらの属性はフィルターとして使用され、検索可能である必要はありません。
問題を説明する私のモデルの例を次に示します。
class Ad
belongs_to :categories
define_index('ad') do
has categories.name, :as => :category_name_tags, :facet => true, :type => :string
end
end
class User
belongs_to :region
define_index('ad') do
#psudocode below
has "(SELECT name from categories)", :as => :category_name_tags, :facet => true, :type => :string
end
end
次のように検索できるようにします。
results = ThinkingSphinx.search "red car", :with => { :category_name_tags => "autos" }, :classes => [Ad, User]
広告以外のすべてのモデルには、検索時にユーザーが指定する「category_name_tags」フィルターに一致する「category_name_tags」属性を定義する必要があります。つまり、これらは常にすべての特定のフィルターに一致する必要があるダミー属性です。これらの属性がモデルに存在しない場合、そのモデルからの結果が返されないため、これを行いたいと考えています。
注: クライアントが使用するデータ モデルを変更することはできません。