我有很多具有父子关系的Java对象。
这些需要放入Solr。
为此,我们将Java对象转换为json,如下所示:
{
"employee": {
"name" : "John",
"address": {
"apt": 100,
"city": "New York",
"country": "USA"
},
"vehicles": [
{
"name" : "Hyundai",
"color" : "red"
},
{
"name" : "Toyota",
"color" : "black"
}
]
}
}
既然Solr没有处理这个问题,我就把它弄平如下:
"employee.name": "John",
"employee.address.apt": 100,
"employee.address.city": "New York",
"employee.address.country": "USA",
"employee.vehicles_0.name": "Hyundai", // Note how arrays are being flattened
"employee.vehicles_0.color": "red",
"employee.vehicles_1.name": "Toyota",
"employee.vehicles_1.color": "black",
很容易展平,但我的图书馆的客户在查询时不需要展平的架构。
所以我需要在从Solr返回时解除上面的内容并将它们转换回原始的Java对象。
有谁知道如何做到这一点?
我正在考虑采用Solr的扁平输出(如上所示)并编写解析器将字段放回Java对象。但这似乎很多工作。一个简单的出路或现有的工具将非常感激。
我正在使用Solr 4.5.1
答案 0 :(得分:0)
Solr专为搜索而设计,不存储深层对象图。您可能最好优化Solr记录以进行搜索,然后通过recordID或其他方式从主存储中获取原始对象。
想想你想要找到什么。例如,您是否会搜索单个车辆?如果是,您当前的文档级别应该是车辆而不是员工。
答案 1 :(得分:0)
您可以首先在Parent-> Child结构中索引文档。
请看一下这篇博文:http://blog.griddynamics.com/2013/09/solr-block-join-support.html