gpt4 book ai didi

json - MarkLogic - 集合和索引之间的最佳解决方案

转载 作者:行者123 更新时间:2023-12-05 09:20:49 26 4
gpt4 key购买 nike

我有几个这样的 JSON:

[{
"type": "car",
"field1": "test"
}, {
"type": "bike",
"field1": "test"
}]

我将它们存储在 MarkLogic 8.4 中,我想对它们执行一些搜索查询以根据类型检索文档(例如:查找所有类型为“car”的文档)。

我有两个可能的解决方案:

  • 为每个文档设置 Marklogic 集合。示例:将“汽车”和“自行车”集合放在示例文档中。在我的搜索查询中,我可以添加一个集合限制。
  • 在每个 JSON 的“类型”字段上放置一个索引

就性能和/或最佳实践而言,一种方法是否优于另一种方法?

谢谢,罗曼。

最佳答案

试试 cts.jsonPropertyValueQuery:

cts.search(cts.jsonPropertyValueQuery("type", "car"))

通用索引应该有您需要的信息。

编辑以扩展我的答案:您提到的两种解决方案都需要存储其他信息。在所描述的案例中,Universal Index 已经拥有您需要的信息,使其成为首选解决方案。如果 jsonPropertyValueQuery 变得不明确,这种方法将不再是我的首选;也就是说,如果每个文档有多个 type 属性。在这种情况下,查询将匹配任何 type 属性。

如果是这种情况,将 JSON 属性范围索引放在 type 属性上将无济于事,因为范围索引仍将包含 type 的所有实例属性(property)。

要处理文档中的多种类型,您有两种选择:

  1. 使用集合
  2. 使用路径范围索引

两者之中,我喜欢第一个。它很灵活——即使您的数据库中有不同结构的文档,您也可以使用它。这样,它可能会“面向 future ”您的项目。权衡是您的代码需要在执行插入时管理文档的集合。不过这很简单。

就性能而言,这两种方法中的任何一种都可以很好地处理查询,但选项二在索引期间需要做的工作稍微多一些。 MarkLogic 将需要检查文档中是否存在配置的路径,如果存在,则相应地更新索引。这是一个微小的差异,但有可能加起来。

关于json - MarkLogic - 集合和索引之间的最佳解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35704562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com