太阳黑子 - 使用带调用的条件搜索多个模型

时间:2013-10-15 01:22:09

标签: ruby-on-rails solr sunspot sunspot-rails sunspot-solr

class Cat < ActiveRecord::Base
  searchable do
    string :color
  end
end
class Dog < ActiveRecord::Base
  searchable do
    string :color
  end
end

鉴于上面的模型CatDog,如何对所有狗+只有褐色的猫进行太阳黑子搜索。

|dogs|color|    |cats|color|
------------    ------------
| 1  |black|    | 1  |black|
| 2  |brown|    | 2  |brown|
| 3  | red |    | 3  | red |

对于上述狗/猫,我想要Dogs [1, 2 3]Cat [2]

我想要下面的内容,但请with仅适用于Cats

Sunspot.search(Dog, Cat) do
  with :color, "brown"
end

是否有with参数是模型类型?如果是,我可以这样做:

Sunspot.search(Dog, Cat) do
  any_of do
    with :color, "brown"
    with :model, Dog
  end
end

如何围绕被搜索的模型确定太阳黑子DSL片段的范围?

1 个答案:

答案 0 :(得分:0)

我最终在模型索引中添加了一个字段table_name并使用了它。

class Dog < ActiveRecord::Base
  searchable do
    string :color
    string :table_name do Dog.table_name end
  end
end

Sunspot.search(Dog, Cat) do
  any_of do
    with :color, "brown"
    with :table_name, Dog.table_name
  end
end