solr - 如何组合 Solr 嵌套文档中的父子节点
问题描述
我是 lucence、solr 查询的新手,我对如何查询嵌套文档有疑问。
我有嵌套的文档索引,如下
[
{
"id": "1",
"title": "Solr1",
"_childDocuments_": [
{
"id": "2",
"title": "Solr2",
"_childDocuments_": [
{
"id": "3",
"title": "Solr3",
"_childDocuments_": [
{
"id": "4",
"title": "SolrCloud supports it"
}
],
"something_else":"irrelevant"
}
],
"something_else":"irrelevant"
}
],
"something_else":"irrelevant"
},
{
"id": "5",
"title": Solr5",
"_childDocuments_": [
{
"id": "6",
"title": "SolrCloud here as well"
}
]
}
]
我如何搜索标题:SolrCloud,并列出所有孩子的父母?如
[
{
"id": "1",
"title": "Solr1",
"_childDocuments_": [
{
"id": "2",
"title": "Solr2",
"_childDocuments_": [
{
"id": "3",
"title": "Solr3",
"_childDocuments_": [
{
"id": "4",
"title": "SolrCloud supports it"
}
]
}
]
}
]
},
{
"id": "5",
"title": Solr5",
"_childDocuments_": [
{
"id": "6",
"title": "SolrCloud here as well"
}
]
}
]
其中列出了文档 4(Sorl1、Solr2、Solr3)和文档 6(Solr5)的所有父项。并且文档的深度不是常数。
解决方案
我目前的解决方案是按摩数据,在原始数据中添加跟踪,这样我就会知道文件来自哪里。如
[
{
"id": "1",
"title": "Solr1",
"_childDocuments_": [
{
"id": "2",
"title": "Solr2",
**"parent_id":"1",**
**"trace":"Solr1",**
"_childDocuments_": [
{
"id": "3",
"title": "Solr3",
**"parent_id":"2",**
**"trace":"Solr1/Solr2",**
"_childDocuments_": [
{
"id": "4",
"title": "SolrCloud supports it"
**"parent_id":"3",**
**"trace":"Solr1/Solr2/Solr3",**
}
],
"something_else":"irrelevant"
}
],
"something_else":"irrelevant"
}
],
"something_else":"irrelevant"
},
{
"id": "5",
"title": Solr5",
"_childDocuments_": [
{
"id": "6",
**"parent_id":"5",**
**"trace":"Solr5",**
"title": "SolrCloud here as well"
}
]
}
]
所以索引后,我可以从结果中知道谁是父文档。
有人可以同意吗?寻找比这更好的解决方案。
推荐阅读
- postgresql - 如何在 postgres 中处理 DST
- javascript - 使用 Javascript 生成新的 HTML 文档
- angular - 检测画布视频中的颜色变化
- c# - 如何在 Xamarin.Forms 项目中使用 azure devops?
- azure - 如何根据订阅、区域和另一个标签批量更新 Azure 中的特定标签?
- python - 网站拦截器在停止进程后继续阻止网站
- javascript - 如何在滚动时显示时间线的背景
- matlab - MATLAB:向 csv 文件添加新行
- javascript - 将子元素添加到自定义元素
- java - 使用 Java Jackson 反序列化 json 并基于根元素调用与该根元素中的 Json 对象匹配的不同类