2

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

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

在 sunspot solr for rails 中,如何为此属性创建构面,以便如果 ajob.location在两个城市中,当在构面中选择纽约或波士顿时,该作业可以显示在结果中?

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

谢谢!

4

1 回答 1

1

您应该更改您的设计,以便拥有一个单独的 Location 类并将 Job 类设置为 have 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
于 2013-03-11T12:16:46.940 回答