不幸的是,Amazon CloudSearch不支持嵌套 JSON,这意味着以下文档结构无效。
[{
"type": "add",
"id": 1,
"fields": {
"company_name": "My Company",
"services": [
{
"id": 123,
"name": "Construction",
"logo": "logo1.png"
},
{
"id": 456,
"name": "Programming",
"logo": "logo2.png"
}
]
}
}]
基本上我不能在services
键下嵌套一组对象。在这种特殊情况下,只有嵌套name
字段必须是可搜索的,所以我可以做的是以下几点:
[{
"type": "add",
"id": 1,
"fields": {
"company_name": "My Company",
"services": [ "Construction", "Programming" ]
}
}]
上面的 JSON 是有效的,我仍然可以搜索服务名称。但是,现在我丢失了一些显示搜索结果时需要的关于我的服务的元数据。有什么方法可以将元数据添加到 Amazon CloudSearch 中的文档中,并将其与我的搜索结果一起返回,以便在显示结果时使用它?
或者我是否必须在之后从我的数据库中获取这些额外的元数据,以使用显示结果所需的额外数据填充搜索结果?这似乎不可行,因为与直接从 CloudSearch 获取这些数据相比,它使我的代码复杂得多。即使我可以使用缓存,这也会影响搜索的性能 - 但如果可能的话,我有点想避免这种情况,因为我现在不需要它来做其他任何事情。
所以我的问题是:
- 我能否以某种方式将服务的元数据添加到 CloudSearch 文档中,并将其与我的搜索结果一起返回?
- 如果不是,我是否应该在收到来自 CloudSearch 的搜索结果后从我的数据存储中提取这些数据?
- 您还有其他解决方案或想法吗?有什么最佳实践吗?
先感谢您!