【问题标题】:how to define hierarchy fields in solr's schema.xml?如何在 solr 的 schema.xml 中定义层次结构字段?
【发布时间】:2014-10-13 19:08:39
【问题描述】:
我用谷歌搜索并搜索了标题,返回了很多关于如何为层次结构/嵌套字段创建 QUERY 的结果,但没有明确回答如何在 schema.xml 中定义它。
让我说得非常具体,比如我有以下格式的 json 记录(非常简化的版本):
办公字符串
城市字符串
邮政编码字符串
主页
城市字符串
邮政编码字符串
城市字符串
如果我只想索引/存储 home.city,那么我将如何在 schema.xml 的“字段”中定义它?
【问题讨论】:
标签:
solr
lucene
solrcloud
【解决方案1】:
架构必须是所有字段的联合,因为一个集合只有一个包含所有内容的真实定义。
所以:city、zipcode 和可能的 type 来区分。加上 Solr 对父/子关系管理的任何要求(id、_root_、_version_)。
如果字段不同,那么您需要确保只出现在一种类型中而不出现在另一种类型中的字段是可选的。
假设您将子记录索引为单独的文档。如果要将它们全部合并到一个父文档中,则需要在客户端上对内容进行一些折叠。 ElasticSearch 为您提供了一个稍微好一点的界面,尽管 - 在幕后 - 单个真实定义的问题仍然相同(它们来自 Lucene,两者都使用)。
【解决方案2】:
Solr 不支持嵌套字段。如果您正在寻找
具有上述功能的搜索引擎,您可以尝试弹性搜索。弹性搜索的核心也是 lucence,就可扩展性、全文搜索功能、自动分片、轻松导入导出数据而言,它比 solr 提供的要多得多。