数组类型属性的太阳黑子方面选项

时间:2013-03-03 22:33:59

标签: sunspot facet sunspot-rails

我已经研究过这个问题,但没有发现任何接近。这就是为什么我决定问。 Stackoverflow对我来说是一个巨大的帮助。

我有一个jobs表,其中一个属性是location。每个job.location都在纽约,波士顿或两者(纽约和波士顿)。

在用于rails的太阳黑子solr中,如何为此属性创建构面,以便在两个城市中都有job.location时,如果在构面中选择了纽约或波士顿,则作业可以显示在结果中?

它应该像数组['New York', 'Boston']吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您应该更改设计,以便拥有单独的Location类并将Job类设置为has_and_belongs_to_many :locations,因为它是多对多关系。 然后,您可以在Job类可搜索块中为该位置创建一个整数范围:

integer :locations, :multiple => true

允许每个作业有多个位置。

现在可以很容易地添加一个facet(:locations)来完全按照自己的意愿行事。

以上适用于任意数量的地点,而不仅仅是两个地点。但是,如果您不想创建新的类/表并且确定只有1个或2个位置,则只需创建查询范围字段:

integer :locations, :multiple => true do
  if location == 'NY & Boston'
    ['NY', 'Boston']
  else
    [location]
  end
end