我有4个文件:
[
{
"id": "doc1",
"keywords": [
{
"keyword": "keyword1",
"weight": 1
},
{
"keyword": "keyword2",
"weight": 2
}
]
},
{
"id": "doc2",
"keywords": [
{
"keyword": "keyword1",
"weight": 2
},
{
"keyword": "keyword3",
"weight": 4
}
]
},
{
"id": "doc3",
"keywords": {
"keyword1": {
"weight": 3
},
"keyword4": {
"weight": 5
}
}
},
{
"id": "doc4",
"keywords": {
"keyword4": {
"weight": 1
},
"keyword5": {
"weight": 2
}
}
}
]
前两个字段包含"keywords"
字段,该字段是包含关键字和权重的字典列表。后两个字段有一个"keywords"
字段,它是关键字本身的字典,字典属性包含权重数据。
当我想查找包含特定关键字的文档时,我运行此查询:
SELECT c FROM c
JOIN
k IN c.keywords
where k.keyword="keyword1"
这将返回前两个文档中包含关键字“keyword1”的所有文档。
我可以对后两个文件执行类似的查询(虽然我可能会在重量检查中添加不必要的开销):
select d from d
WHERE d.keywords.keyword1.weight > 0
第二个的RU成本略低,但它只有4个文件。我将把它扩展到大约1000万到2000万个文档。其中一种格式比另一种格式更具可扩展性吗?
答案 0 :(得分:0)
这两种方法都是可扩展的,但使用嵌套属性的第二种方法在效率/ RU方面总体上会更好。