【问题标题】:Marklogic: How to load XML documents into Marklogic in the same order as it was ordered in the source fileMarklogic:如何以与源文件中的顺序相同的顺序将 XML 文档加载到 Marklogic 中
【发布时间】:2017-01-26 09:58:37
【问题描述】:

我正在对 ma​​rklogic 中存储的数据运行一组 xquery。当我看到结果时,我注意到数据记录的顺序与我从中加载它的文件中的顺序不同。我使用 flow studio 将我的 xml 文档加载到 marklogic 中。我需要文件的顺序与源文件中的顺序相同。有没有办法做到这一点? 如果无法按升序顺序对文档进行排序将解决我的问题。怎么做?注意:
我想订购 xml 文档而不是 xquery 结果

【问题讨论】:

    标签: xml marklogic reload


    【解决方案1】:

    MarkLogic 不按特定顺序存储记录。也就是说,当记录被摄取时,您可以添加可以使用的属性或元数据元素。例如,当我从 CSV 加载行时,如果我希望能够再次按该顺序表示数据,我通常会确保每一行都有一个唯一的有序 ​​ID。

    无论如何,您将需要根据您用于检索记录的查询返回有序结果,正如您在问题的第二部分中提出的那样。

    使用 FLOWR 查询数据时,您将能够使用order by ascending 子句按所需值对文档进行排序。

    当您返回 search:search() 或 cts:search() 结果时,它可能会涉及更多,但底层逻辑是相似的。尝试对搜索结果进行排序时,有一些重要的性能考虑因素——通常你会想要一个排序元素上的范围索引。 ML 文档中有大量信息,具体取决于您查询要订购的记录的方式。

    XQuery order by 子句:https://docs.marklogic.com/guide/xquery/langoverview#id_71283

    性能指南: https://docs.marklogic.com/guide/performance/order_by

    搜索中的排序:search() https://docs.marklogic.com/guide/search-dev/appendixa#id_44212

    【讨论】:

    • 我想订购 xml 文档而不是 xquery 结果
    • “订购 xml 文档”是什么意思?按照我的阅读方式,您有一个源文件,其中包含作为单独文档提取到数据库中的记录。您的意思是源是单个 xml 记录,并且生成的数据库文档中元素的文档顺序与源的文档顺序不同?
    • 源是我从它加载xml文档到marklogic的文件。
    • 不要试图成为一个痛苦...我想了解这个场景,所以我可以确保你有一个方向。源文件是什么格式的?每个源文件的 MarkLogic 中是否有一条记录?还是每个源文件在 MarkLogic 中有很多记录?
    • 正如Harry 已经提到的,数据库中的数据没有自然的顺序。默认情况下,cts:search 的结果按相关性排序。如果您不希望这样,则必须明确告诉 MarkLogic 以不同的方式排序。最简单的方法是设置范围索引,并使用cts:index-order..
    猜你喜欢
    • 2019-10-09
    • 1970-01-01
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多