如何使用 sunspot SOLR 搜索嵌入的 mongoid 文档?

发布于 2024-12-04 07:58:48 字数 340 浏览 1 评论 0 原文

有谁知道如何使用 嵌入文档 /github.com/jugyo/sunspot_mongoid" rel="nofollow">sunpot_mongoid?

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

Does anyone know how to index and search embedded documents with sunpot_mongoid?

The question has been asked in the sunspot_mongoid issues, but has no solution, so far.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

森罗 2024-12-11 07:58:48

刚刚尝试过。这是一个黑客,但它适用于搜索嵌入文档,并返回保存它的父文档。这就是你想要的吗?如果是这样,那么就这样做。定义方法,以数组形式返回所需的嵌入字段,然后对该数组建立​​索引。

假设您有类公司,嵌入部门

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

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

重新索引并尝试搜索。

Just tried it. It's a hack, but it works for searching embedded documents, and returning the parent document holding it. Is that what you want? If so, do this then. Define method that returns the embedded fields you want as an array, and then index that array.

Assuming you have class Company, with embedded departments

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

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

reindex and try to search.

已下线请稍等 2024-12-11 07:58:48

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

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

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

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

You can also include a block that returns the text you want index right in the searchable block. For example:

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

That takes the title and description from an embedded array of "innerdocs" and adds it to the index for the main document.

The sunspot docs have the best info on the syntax for the "searchable" block:
http://outoftime.github.com/sunspot/docs/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文