1

我有大约 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”过滤器——换句话说,这些是应该始终匹配所有特定过滤器的虚拟属性——它们对大多数人来说是被动的模型,我想这样做是因为如果我的模型中不存在这些属性,则不会返回该模型的结果。

注意:我无法修改客户端使用的数据模型。

4

0 回答 0