【问题标题】:Sunspot facet option for an array-type attribute数组类型属性的太阳黑子刻面选项
【发布时间】:2013-03-03 22:33:58
【问题描述】:

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

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

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

应该是数组['New York', 'Boston']

谢谢!

【问题讨论】:

    标签: sunspot facet sunspot-rails


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多