7

是否可以通过与太阳黑子的关联进行索引?

例如,如果客户有_many 个联系人,我希望在我的客户模型上创建一个“可搜索”块,该块索引 Contact#first_name 和 Contact#last_name 列以用于对客户的搜索。

act_as_solr 有一个 :include 选项。我只是将关联的列名组合到 Customer 上的文本字段中,如下所示,但这似乎不太灵活。

searchable do
text :organization_name, :default_boost => 2
text :billing_address1, :default_boost => 2
text :contact_names do
  contacts.map { |contact| contact.to_s }
end

有什么建议么?

4

2 回答 2

6

这正是如何做到的。Solr 本质上是面向文档的,因此来自数据库中关联的任何数据都被扁平化到您的文档中。:include 选项只是温和的糖,最终会做与您在这里所做的相同的事情。

于 2010-04-11T02:00:49.480 回答
0

当然:

searchable do
  string :sort_contact_name do
    contacts.map { |contact| contact.last_name }.sort.first
  end
end

然后您可以按 :sort_contact_name 字段进行排序。请注意,我必须将联系人姓名集减少为单个姓名,因为 Solr 只能对每个文档具有单个值的字段进行排序(这在您考虑时是有意义的)。

于 2010-04-11T13:57:41.410 回答