Sunspot / Solr全文搜索 – 如何索引Rails关联

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

例如,如果客户拥有多个联系人,我希望我的客户模型上有一个“可搜索”块,用于索引Contact#first_name和Contact#last_name列,以便在Customer上进行搜索。

acts_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 

有什么建议?

这正是如何做到的。 Solr本质上是面向文档的,因此来自数据库中的关联的任何数据都会平滑到您的文档中。 答:包含选项只是温和的糖,最终做你在这里做的事情。

当然:

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

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