我不知道如何使用以下结构映射文档以进行搜索:
{
"_id": "007ff234cb2248",
"ids": {
"source1": "123",
"source2": "456",
"source3": "789"
}
"names": [
{"en":"Example"},
{"fr":"exemple"},
{"es":"ejemplo"},
{"de":"Beispiel"}
],
"children" : [
{
"ids": {
"source1": "CXXIII",
"source2": "CDLVI",
"source3": "DCCLXXXIX",
}
names: [
{"en":"Example Child"},
{"fr":"exemple enfant"},
{"es":"Ejemplo niño"},
{"de":"Beispiel Kindes"}
]
}
],
"relatives": {
// Typically no "ids" at this level.
"relation": 'uncle',
"children": [
{
"ids": {
"source1": "0x7B",
"source2": "0x1C8",
"source3": "0x315"
},
"names": [
{"en":"Example Cousin"},
{"fr":"exemple cousine"},
{"es":"Ejemplo primo"},
{"de":"Beispiel Cousin"}
]
}
]
}
}
该child
对象可能children
直接出现在该部分中,或者进一步嵌套在我的文档中uncle.children
(在这种情况下是表兄弟)。IDs 字段为第一层(根)、第二层(孩子和叔叔)和第三层(堂兄弟)所共有,命名结构也为第一层和第三层所共有。
我的用例是能够按前缀和整个 ID 搜索 ID(嵌套对象)。并且还能够按照一组(尚未定义的)分析器规则搜索子名称。
我还没有找到以任何有用的方式映射这些的方法。我不相信对ids
and使用相同的技术会取得很大的成功names
,因为在名称和文档根之间存在额外级别的映射。
我什至不确定它是否可以映射。我至少在原则上相信ids
应该可以映射为术语,也许如果我names
以某种方式索引 as 术语,也是。
我简直不知所措,文档似乎没有涵盖这种级别的复杂映射。
我对来自 CouchDB 河的文档的控制有限(阅读:否),并且上游应用程序已经依赖于这种格式,所以我无法真正更改它。
我正在寻找能够通过以下伪条件进行搜索,所有这些都应该匹配:
- ID:
"123"
- 来源 ID(我不知道如何最好地用伪语言标记)
- 身份证前缀:
"CDL"
- 姓名:
"Example"
,"Example Child"
- 本地化名称(我什至不知道如何最好地对其进行伪标记!
当我至少知道如何映射时,我可以自己弄清楚标记化和分析的细节
- 对象属性的键和值都很重要时的对象
- 当键和值很重要时的可枚举对象。