我有大约9个型号(很快就会推出),它们目前同时具有普通型和每个中都有独特的sphinx属性 - 这些属性用作过滤器&不需要搜索。
以下是我的一些模型示例,说明了问题:
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”过滤器 - 换句话说,这些属性应该始终与所有特定过滤器匹配 - 它们是对于大多数模型来说,我想这样做,因为如果我的模型中不存在这些属性,那么将不会返回该模型的结果。
注意:我无法修改客户端使用的数据模型。