我已经研究过这个问题,但没有发现任何接近。这就是为什么我决定问。 Stackoverflow对我来说是一个巨大的帮助。
我有一个jobs
表,其中一个属性是location。每个job.location
都在纽约,波士顿或两者(纽约和波士顿)。
在用于rails的太阳黑子solr中,如何为此属性创建构面,以便在两个城市中都有job.location
时,如果在构面中选择了纽约或波士顿,则作业可以显示在结果中?
它应该像数组['New York', 'Boston']
吗?
谢谢!
答案 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