如何使用太阳黑子SOLR搜索嵌入式mongoid文档?

时间:2011-09-12 17:17:20

标签: mongoid sunspot

有人知道如何使用embedded documents索引和搜索sunpot_mongoid吗?

到目前为止,问题已在sunspot_mongoid issues中提出,但没有解决方案。

2 个答案:

答案 0 :(得分:5)

试过了。这是一个黑客,但它适用于搜索嵌入的文档,并返回持有它的父文档。那是你要的吗?如果是这样,那么就这样做。定义方法,返回所需的嵌入字段作为数组,然后索引该数组。

假设你有班级公司,有嵌入式部门

searchable do
  # Your regular index
  # ...
  text :company_departments
end

def company_departments
  departments.map(&:name).join(" ")
end

重新索引并尝试搜索。

答案 1 :(得分:1)

您还可以包含一个块,该块可在可搜索的块中返回您想要索引的文本。例如:

searchable do
    text :innerdoc do
      innerdocs.map { |i| i.title + ' ' + i.description }
    end
end

从嵌入式“innerdocs”数组中获取标题和描述,并将其添加到主文档的索引中。

太阳黑子文档有关于“可搜索”块语法的最佳信息: http://outoftime.github.com/sunspot/docs/