1

現在、それぞれに共通のスフィンクス属性と固有のスフィンクス属性の両方を持っている約 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」属性を定義する必要があります。つまり、これらは常にすべての特定のフィルターに一致する必要があるダミー属性です。これらの属性がモデルに存在しない場合、そのモデルからの結果が返されないため、これを行いたいと考えています。

注: クライアントが使用するデータ モデルを変更することはできません。

4

0 に答える 0